คำถามติดแท็ก networking

ใช้แท็กนี้ในการอ้างอิงหัวข้อใด ๆ ที่เกี่ยวข้องกับฮาร์ดแวร์และซอฟต์แวร์ระบบเครือข่าย อย่าใช้แท็กนี้ในการอ้างอิงถึงเครือข่ายส่วนบุคคลเช่นบนโซเชียลมีเดีย

6
ความแตกต่างระหว่างซ็อกเก็ตและพอร์ต
มีคนช่วยอธิบายความแตกต่างระหว่างพอร์ตและซ็อกเก็ตได้ค่อนข้างชัดเจน ฉันรู้ว่าพอร์ตทำหน้าที่เป็นประตูสู่เครือข่ายสำหรับกระบวนการแอปพลิเคชันและกระบวนการแอปพลิเคชันใช้การเชื่อมต่อซ็อกเก็ตกับหมายเลขพอร์ตที่กำหนดเพื่อจัดการการสื่อสารเครือข่าย แต่เมื่อคุณมีกระบวนการหลายกระบวนการที่ฟังหมายเลขพอร์ตเดียว มันยากที่จะเข้าใจความแตกต่างระหว่างซ็อกเก็ตและพอร์ตและวิธีการที่พวกเขาทั้งหมดเข้าด้วยกัน

9
ฉันสามารถละเว้นคำสั่งไบต์ในระบบเครือข่ายได้อย่างปลอดภัยหรือไม่?
ฉันกำลังพัฒนาแอปพลิเคชันไคลเอนต์เซิร์ฟเวอร์ที่ไคลเอนต์จะทำงานบน Windows และเซิร์ฟเวอร์อาจอยู่บน Linux บางทีฉันจะย้ายพอร์ตไคลเอ็นต์ไปยัง Mac และ Linux ในภายหลัง แต่ยังไม่เสร็จ คอมพิวเตอร์ที่ใช้ในบ้านทุกวันนี้ใช้งานได้บนเครื่องเอนเดิ้ล ฉันไปสักพักหนึ่ง แต่ฉันไม่พบรายการอุปกรณ์ที่ทำงานบนเครื่องใหญ่ เท่าที่ฉันรู้ชิพ Motorola บางตัวยังคงใช้โทรศัพท์ขนาดใหญ่และอาจเป็นโทรศัพท์บางรุ่น (ฉันไม่ได้วางแผนที่จะย้ายแอพไปยังสมาร์ทโฟนดังนั้นจึงไม่สำคัญสำหรับฉัน) ดังนั้นทำไมฉันจึงจัดเรียงไบต์ของจำนวนเต็มทุกตัวทุกตัวย่อทุกตัวคูณคู่และอื่น ๆ สำหรับการอ่านและการเขียนเมื่อฉันรู้แล้วว่าทั้งเซิร์ฟเวอร์และไคลเอนต์ทำงานบนเอนเดเนี่ยนน้อย นั่นเป็นเพียงงานที่ไม่จำเป็นที่ต้องทำ ดังนั้นคำถามของฉันคือ: ฉันสามารถเพิกเฉยต่อความปลอดภัยและส่งข้อมูลแบบ end-endian ได้อย่างปลอดภัยหรือไม่ อะไรคือข้อเสีย?

4
โปรแกรมเมอร์ใช้เครือข่ายเพื่อแบ่งปันทรัพยากรคอมพิวเตอร์ราคาแพงในยุค 60 และยุค 70 อย่างไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 8 ปีที่ผ่านมา ฉันยังเด็กและไม่ได้มีชีวิตอยู่ในช่วงยุค 60 และยุค 70 เพื่อประสบการณ์เครือข่ายและการเขียนโปรแกรมเหมือนครั้งหนึ่งเคยเป็น ฉันเฝ้าดูการพูดคุยของ Van Jacobson ใน Content Centric Networking และในการพูดคุยเหล่านี้เขาได้ให้มุมมองทางประวัติศาสตร์ที่ระบุว่าในยุค 60 และยุค 70 การเชื่อมต่อเครือข่ายได้รับการออกแบบมาเพื่อแก้ปัญหาการแบ่งปันทรัพยากรเช่นการเข้าถึงเครื่องอ่านการ์ดที่หายาก หรือเทปไดร์ฟความเร็วสูง จากนั้นเขาก็จะบอกว่ามีข้อมูลน้อยมากในยุคนี้และข้อมูล "ไม่ได้อยู่บนคอมพิวเตอร์" มันเป็นสิ่งที่คุณพกติดตัวไปกับคุณเช่นบนเทปหรืองานพิมพ์ ฉันมีคำถามสองข้อเกี่ยวกับเรื่องนี้: 1) ผู้คน "จากระยะไกล" ใช้บางอย่างเช่นเครื่องอ่านการ์ดได้อย่างไร แน่นอนในบางจุดการ์ดจริงจะต้องถูกส่งไปทุกที่ที่คอมพิวเตอร์อยู่ หากคุณอยู่ห่างออกไป 100 ไมล์หมายความว่าพวกเขาโพสต์การ์ดออกก่อนเวลาและจากนั้นก็ใช้เครือข่ายเพื่อดำเนินการคำสั่งที่จำเป็นในการเรียกใช้การ์ดเด็คเหล่านั้นหรือไม่ 2) คนทั่วไปได้รับผลลัพธ์ของโปรแกรมอย่างไร มันถูกส่งกลับข้ามสายหรือถูกพิมพ์ลึกหนาบาง / พิมพ์ etcetera โพสต์หลังจากโปรแกรมถูกเรียกใช้กลับไปที่นักวิจัยระยะไกล? ฉันขอโทษถ้าฉันได้รับยุคของฉันผสมในทางใดทางหนึ่งที่ฉันกล่าวว่าฉันไม่ได้มีชีวิตอยู่ในเวลา ขอบคุณ

2
TCP หรือ UDP สำหรับเกมแบบผู้เล่นหลายคน?
นี่เป็นคำถามที่ฉันเห็นมาก คนส่วนใหญ่กล่าวว่า UDP นั้นดีกว่าสำหรับเกมแบบเรียลไทม์มากกว่า TCP ความเข้าใจของฉันคือ TCP พยายามส่งแพ็กเก็ตซ้ำแล้วซ้ำอีกจนกว่าอีกฝ่ายจะรับมันในขณะที่ UDP ไม่สนใจ สิ่งที่ฉันได้อ่านส่วนใหญ่คือ UDP เป็นสิ่งจำเป็นสำหรับเกมเรียลไทม์และ TCP นั้นแย่มาก แต่สิ่งนี้คือคนส่วนใหญ่ดูเหมือนจะใช้รูปแบบของ TCP บน UDP อย่างไรก็ตาม และฉันก็ได้ยินด้วยว่าความแตกต่างระหว่างสองอย่างนั้นเล็กน้อยมากเพราะเราไม่ได้อยู่ในยุค 80 อีกต่อไปแล้วอินเทอร์เน็ตก็ค่อนข้างเร็วและน่าเชื่อถือ ความเข้าใจทั่วไปของฉันที่นี่ผิดหรือเปล่า? มีคนช่วยเคลียร์สิ่งนี้ให้ฉันได้ไหม

2
ข้อมูลที่บรรจุใน UDP ควรมี CRC หรือไม่
สำหรับ บริษัท ที่ฉันเคยทำงานให้ฉันต้องใช้ตัวรับสัญญาณซ็อกเก็ตที่ส่วนใหญ่ใช้ข้อมูลในรูปแบบ UDP ผ่านการเชื่อมต่อท้องถิ่นจากฮาร์ดแวร์เซ็นเซอร์บางตัว ข้อมูลที่เป็นปัญหาคือแพ็คเก็ต UDP ที่มีรูปแบบที่ดี แต่ที่น่าสนใจปริมาณข้อมูลนั้นจะสิ้นสุดลงด้วยการตรวจสอบ CRC16 ที่เกิดขึ้นโดยใช้ข้อมูลที่เหลือ ฉันใช้การตรวจสอบในตอนท้ายของฉันตามข้อกำหนด แต่ฉันมักจะสงสัยว่านี่เป็นสิ่งที่จำเป็น ท้ายที่สุดแล้วโปรโตคอล UDP เองนั้นไม่มีซีอาร์ซีแบบ 16 บิตหรือไม่? ดังนั้นแม้ว่าแพ็กเก็ต UDP อาจสูญหายหรือล้าสมัยได้ แต่ฉันรู้สึกว่ามันไม่สามารถเสียหายได้หากไม่ได้รับการละทิ้งโดยฮาร์ดแวร์เครือข่ายก่อนที่จะถึงกระบวนการของระบบปฏิบัติการ หรือมีกรณีใช้พิเศษบางอย่างที่ฉันขาดไป เป็นมูลค่าเพิ่มที่ฉันทำงานในอุตสาหกรรมการป้องกันประเทศซึ่งในขณะที่ฉันแน่ใจว่าคุณสามารถจินตนาการชอบที่จะชัดเจนเกี่ยวกับทุกอย่างเช่นนี้ดังนั้นฉันสงสัยว่ามันเป็นเพียงกรณีของ "ความปลอดภัย OCD" ..

3
ความแตกต่างระหว่างการเขียนโปรแกรมเครือข่ายและการเขียนโปรแกรมซ็อกเก็ต
มีความแตกต่างที่สำคัญเมื่อเราพูดถึง "การเขียนโปรแกรมซ็อกเก็ต" เมื่อเทียบกับ "การเขียนโปรแกรมเครือข่าย" หรือไม่? มีหัวข้อที่ครอบคลุม "การเขียนโปรแกรมเครือข่าย" แต่ไม่ใช่ "การเขียนโปรแกรมซ็อกเก็ต" หรือไม่?

4
เครือข่ายกับนักพัฒนาอื่น ๆ ได้อย่างไร?
คุณจะให้คำแนะนำอะไรเพื่อค้นหาโอกาสในการเชื่อมต่อเครือข่ายหรือเครือข่ายในกลุ่มผู้ใช้และสถานที่สำหรับนักพัฒนาอื่น ๆ ตัวอย่างเช่นหากคุณไปที่ค่ายรหัสคุณจะลองสร้างเครือข่ายกับผู้พัฒนารายอื่นที่นั่นหรือไม่ คุณจะทำอย่างไรต่อไป คุณช่วยคนที่คุณไม่รู้จักตอนอาหารกลางวันและแนะนำตัวเองไหม? ฉันเพิ่งเข้าร่วมการประชุมกลุ่มผู้ใช้และพบว่ามันค่อนข้างน่าเบื่อ มีเพียงไม่กี่คนเท่านั้นที่ดูเหมือนจะคุยกับคนอื่น ผู้เข้าร่วมประชุมส่วนใหญ่ดูเหมือนจะทำเพื่อตัวเอง นี่เป็นเรื่องปกติสำหรับนักพัฒนาหรือไม่ ฉันไม่เคยเก่งเรื่องเครือข่ายมาก่อนอาจจะเก็บตัวคนรอบข้างที่ฉันไม่รู้จักดังนั้นการสร้างเครือข่ายจึงไม่ใช่จุดแข็งของฉัน อย่างไรก็ตามฉันต้องการแยกออกจากกันมากขึ้นและพบกับผู้พัฒนารายอื่น

1
ทำไมโกลังเลิกแพ็คเกจ“ netchan”?
แพ็คเกจ "netchan" ของ Golang ดูเหมือนจะถูกยกเลิก นั่นทำให้ฉันคิดว่าแนวคิดของ "ช่องทางเครือข่าย" ไม่ใช่วิธีปฏิบัติที่ดี (ทำไมพวกเขาถึงไม่ "ปล่อยให้เป็นอย่างอื่น") เป็นกรณีนี้หรือไม่? และถ้าเป็นเช่นนั้นทำไม
16 networking  go 

1
ซ็อกเก็ตทำงานผ่านการเชื่อมต่อไร้สายได้อย่างไร
ฉันทำงานเฉพาะแอปพลิเคชันฝั่งไคลเอ็นต์ (โดยเฉพาะมือถือ) โดยใช้ Android ซึ่งระบบเครือข่ายทั้งหมดได้รับการจัดการที่เลเยอร์ HTTP โดยใช้เฟรมเวิร์กที่มีส่วนประกอบต่างๆเช่น HttpUrlConnection แต่ระบบการส่งข้อความแบบพุชเช่น Websockets / XMPP ฯลฯ ทั้งหมดรักษาการเชื่อมต่อแบบถาวรกับเซิร์ฟเวอร์ แม้แต่ GCM ของ Google ซึ่งอบลงในอุปกรณ์ที่รองรับ Google Play ยังคงรักษาการเชื่อมต่อกับเซิร์ฟเวอร์อย่างต่อเนื่อง คำถามของฉันคือทำงานได้อย่างไรโดยไม่ต้องใช้แบตเตอรี่หมด หากเราทำการร้องขอ HTTP อย่างต่อเนื่องตามลำดับการระบายแบตเตอรี่จะมีความสำคัญ การเชื่อมต่อแบบถาวรเหล่านี้มีวิธีการดูแลอย่างไรโดยไม่ประสบปัญหาเดียวกัน

2
โครงสร้างแพ็กเก็ตของ Curiosity คืออะไร
สำหรับเครือข่ายดาวเคราะห์ของนาซาแพ็กเก็ตมีลักษณะอย่างไร? เห็นได้ชัดว่าเป็นรูปแบบของโปรโตคอลซ้ำซ้อนที่เก็บไว้ที่เครื่องรับและด้วยการสำรองข้อมูล มีเอกสารใด ๆ เกี่ยวกับโครงสร้างของแพ็คเก็ตหรือโปรโตคอลการสื่อสารซึ่งจะต้องขยายการสื่อสาร 14 นาที?

3
เป็นความคิดที่ดีหรือไม่ที่จะทำการมัลติเพล็กบล็อกการสตรีมในการเชื่อมต่อ TCP?
ฉันต้องการหลายช่องสัญญาณระหว่างสองโฮสต์ มีข้อดีหลายประการในการสร้างการเชื่อมต่อ TCP เดียวเท่านั้น แต่ฉันสงสัยว่าการมัลติเพล็กซ์อาจทำให้เกิดปัญหาที่หลีกเลี่ยงไม่ได้ มันจะเป็นอันตรายต่อประสิทธิภาพการทำงานหรือเพิ่มความล่าช้าอย่างมีนัยสำคัญหรือไม่ แล้วการใช้งานหน่วยความจำและการใช้ CPU ล่ะ มีข้อเสนอแนะหรือคำเตือนใด ๆ ที่คุณต้องการให้?

3
เชื่อมต่อโดยตรงกับคอมพิวเตอร์เครื่องอื่นที่รู้เพียงที่อยู่ MAC?
จากความเข้าใจของฉัน ARP จะแปลที่อยู่ IP เป็นที่อยู่ MAC จากนั้นคอมพิวเตอร์จะใช้ที่อยู่ MAC เพื่อสร้างการเชื่อมต่อโดยตรง หากฉันรู้ที่อยู่ MAC ของคอมพิวเตอร์ที่ฉันต้องการเชื่อมต่ออยู่จะสามารถเชื่อมต่อโดยตรงได้หรือไม่ (โดยไม่ต้องมีเราเตอร์) มีตัวอย่างของสิ่งนี้หรือไม่?
13 networking 

2
เกมออนไลน์จะดำเนินต่อไปหลังจากที่เจ้าบ้านออก?
หมายเหตุ:นี่เป็นคำถามเกี่ยวกับเครือข่ายไม่ใช่การเล่นเกม ฉันใช้สตาร์คราฟต์เป็นเพียงตัวอย่างเท่านั้น เกมสตาร์คราฟต์ (ไม่ใช่สตาร์คราฟต์ 2) รองรับการเล่นออนไลน์ โฮสต์หนึ่งคนและบุคคลอื่นเข้าร่วม หากโฮสต์ออกระหว่างเกมเกมสามารถดำเนินต่อไปเรื่อย ๆ โดยไม่มีโฮสต์ มันทำงานอย่างไร พิจารณาสถานการณ์สมมติต่อไปนี้: ฉันโฮสต์ 3 ต่อ 3 โปรดทราบว่าสำหรับคนที่จะเข้าร่วมได้เราเตอร์ของฉันจะต้องได้รับการกำหนดค่าให้พอร์ตไปข้างหน้า 6112, TCP และ UDP (ดูBlizzard Support ) ห้าคนเข้าร่วม ทุกคน (รวมตัวเอง) อยู่หลังเราเตอร์ ฉันเริ่มเกม สามนาทีในเกมประมาณยี่สิบ zealots เทลงในฐานของฉัน ไม่มีใครช่วยฉัน ฐานของฉันถูกกำจัดดังนั้นฉันจึงไป (เกมไม่ได้ให้คุณเลือก) เกมดำเนินต่อไปโดยไม่มีโฮสต์ (ทีมเหย้าเหลือผู้เล่นสองคน) ลูกค้าที่เหลือห้าราย (ที่ไม่ต้องการการส่งต่อ 6112) ยังคงเชื่อมต่อได้อย่างไร ถ้าฉันเข้าใจถูกต้อง: หากสองโปรแกรมต้องการคุยกันโปรแกรมใดโปรแกรมหนึ่งจะต้องเป็น "เซิร์ฟเวอร์" และฟังการเชื่อมต่อบนพอร์ตในขณะที่อีกโปรแกรมหนึ่งจะต้องเป็น "ไคลเอนต์" และเริ่มต้นคำขอการเชื่อมต่อนั้น ท่าเรือ. พวกเขาไม่สามารถเริ่มส่งแพ็กเก็ตให้กันและกันได้ (และฉันไม่รู้ด้วยซ้ำว่าพวกเขาจะทำอย่างไรหากทั้งคู่อยู่หลังเราเตอร์) …
12 networking 

3
ฉันจะหลีกเลี่ยงการหยุดชะงักแบบกระจายในระหว่างการเชื่อมต่อซึ่งกันและกันระหว่างสองโหนดได้อย่างไร
สมมติว่าเรามีเพียร์สองโหนด: โหนดแรกสามารถส่งการร้องขอการเชื่อมต่อไปยังหนึ่งที่สอง แต่ยังที่สองที่สามารถส่งการร้องขอการเชื่อมต่อไปยังที่หนึ่ง จะหลีกเลี่ยงการเชื่อมต่อสองครั้งระหว่างสองโหนดได้อย่างไร เมื่อต้องการแก้ไขปัญหานี้มันจะเพียงพอที่จะทำให้การดำเนินการตามลำดับสำหรับการสร้างการเชื่อมต่อ TCP ขาเข้าหรือขาออก ซึ่งหมายความว่าแต่ละโหนดควรประมวลผลการดำเนินการสร้างการเชื่อมต่อใหม่ตามลำดับทั้งสำหรับการเชื่อมต่อขาเข้าและสำหรับการเชื่อมต่อขาออก ด้วยวิธีนี้การดูแลรักษารายการของโหนดที่เชื่อมต่อก่อนที่จะยอมรับการเชื่อมต่อขาเข้าใหม่จากโหนดหรือก่อนที่จะส่งการร้องขอการเชื่อมต่อไปยังโหนดก็จะเพียงพอที่จะตรวจสอบว่าโหนดนี้มีอยู่แล้วในรายการ เพื่อให้การดำเนินการสร้างการเชื่อมต่อเป็นลำดับมันก็เพียงพอที่จะทำการล็อคในรายการของโหนดที่เชื่อมต่อ: อันที่จริงแล้วสำหรับการเชื่อมต่อใหม่แต่ละครั้งตัวระบุของโหนดที่เชื่อมต่อใหม่จะถูกเพิ่มเข้าไปในรายการนี้ อย่างไรก็ตามฉันสงสัยว่าวิธีการนี้สามารถทำให้เกิดการหยุดชะงักแบบกระจายได้หรือไม่ : โหนดแรกสามารถส่งการร้องขอการเชื่อมต่อไปยังโหนดที่สอง โหนดที่สองสามารถส่งการร้องขอการเชื่อมต่อไปยังโหนดแรก สมมติว่าคำขอการเชื่อมต่อสองรายการนั้นไม่ตรงกันทั้งสองโหนดจะล็อกการร้องขอการเชื่อมต่อขาเข้าใด ๆ ฉันจะแก้ปัญหานี้ได้อย่างไร อัปเดต:อย่างไรก็ตามฉันยังต้องล็อครายการทุกครั้งที่มีการสร้างการเชื่อมต่อใหม่ (ขาเข้าหรือขาออก) เนื่องจากเธรดอื่นอาจเข้าถึงรายการนี้ดังนั้นปัญหาการหยุดชะงักจะยังคงอยู่ ปรับปรุง 2:ตามคำแนะนำของคุณฉันเขียนอัลกอริทึมเพื่อป้องกันการยอมรับคำขอเข้าสู่ระบบ เนื่องจากแต่ละโหนดเป็นเพียร์จึงอาจมีไคลเอ็นต์รูทีนเพื่อส่งการร้องขอการเชื่อมต่อใหม่และรูทีนเซิร์ฟเวอร์เพื่อยอมรับการเชื่อมต่อขาเข้า ClientSideLoginRoutine() { for each (address in cache) { lock (neighbors_table) { if (neighbors_table.contains(address)) { // there is already a neighbor with the same address continue; } …

3
วิธีซิงค์นาฬิกาผ่านเครือข่ายเพื่อการพัฒนาเกม
ฉันกำลังเขียนเกมที่มีหลายแง่มุมตามเวลา ฉันใช้เวลาเพื่อช่วยประเมินตำแหน่งผู้เล่นเมื่อเครือข่ายแผงลอยและแพ็กเก็ตไม่ผ่าน (และเวลาระหว่างการรับแพ็คเก็ตและไม่ได้) มันเป็นเกมประเภท Pacman ในแง่ที่ว่าผู้เล่นเลือกทิศทางและไม่สามารถหยุดเคลื่อนไหวได้ดังนั้นระบบจึงมีเหตุผล (หรืออย่างน้อยฉันก็คิดว่ามันเป็นอย่างนั้น) ดังนั้นฉันมีสองคำถาม: 1) ฉันจะซิงค์นาฬิกาของเกมตั้งแต่เริ่มต้นอย่างไรเนื่องจากเครือข่ายล่าช้า 2) ไม่เป็นไรหรือไม่ที่จะซิงค์พวกเขาและเพียงสมมติว่าพวกเขาเหมือนกัน (รหัสของฉันคือเขตเวลาอิสระ) ไม่ใช่เกมที่มีการแข่งขันสูงที่ผู้คนจะเปลี่ยนนาฬิกาเป็นโกง แต่ก็ยัง เกมกำลังเขียนโปรแกรมใน Java และ Python (การพัฒนาแบบขนานเป็นโครงการ)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.