Score:1

เกมออนไลน์ส่งแพ็กเก็ต UDP ผ่านอินเทอร์เน็ตได้อย่างไร

ธง ca

เกมออนไลน์ที่มีผู้เล่นหลายคนซึ่งใช้ UDP รับแพ็กเก็ตที่ส่งระหว่างเครือข่ายผ่านอินเทอร์เน็ตได้อย่างไร จากสิ่งที่ฉันเข้าใจ ลูกค้าจะต้องเปิดใช้งานการส่งต่อพอร์ตบนเราเตอร์เพื่อให้แพ็กเก็ตมาถึงคอมพิวเตอร์ นี่คือสิ่งที่เกมออนไลน์ใหญ่ๆ (WoW, Diablo และอื่นๆ) ต้องการให้ผู้เล่นทำหรือไม่?

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

Score:3
ธง in

คำตอบสั้นๆ: การติดตามการเชื่อมต่อ NAT

สิ่งหนึ่งที่ต้องจำไว้คือเราเตอร์ส่วนใหญ่บนอินเทอร์เน็ต IPv4 คือเราเตอร์ NAT

การใช้งาน NAT ส่วนใหญ่จะติดตามอย่างชาญฉลาด เมื่อคุณส่ง UDP จากไคลเอ็นต์ภายในไปยังที่ใดที่หนึ่ง คุณจะมีพอร์ตปลายทางและพอร์ตต้นทาง หากทราฟฟิกเข้ามาโดยที่พอร์ตกลับด้าน ทราฟฟิกนั้นจะถูกส่งกลับไปยังไคลเอนต์ของคุณ และอนุญาตในไฟร์วอลล์ส่วนใหญ่

NAT/ไฟร์วอลล์ที่มีการติดตามจะตรวจจับแพ็กเก็ตเหล่านี้ว่าเกี่ยวข้องกันและส่งต่อกลับ

ตัวอย่างตามความเห็นด้วย เซิร์ฟเวอร์ บนพอร์ต 5000 กปปส

  • ลูกค้าส่งแพ็คเก็ตสำหรับ เซิร์ฟเวอร์:5000, แหล่งที่มา ลูกค้า:5001
  • เราเตอร์ NAT แรกจะเห็นแพ็คเก็ตที่มี ip ต้นทางและพอร์ตของ ลูกค้า:5001และปลายทาง เซิร์ฟเวอร์:5000.
  • เราเตอร์ส่งสิ่งนี้มาและจะมี NATip:พอร์ต NAT
  • เซิร์ฟเวอร์ได้รับสิ่งนี้และสร้างการตอบกลับ NATip:พอร์ต NAT ที่มีที่มาจาก เซิร์ฟเวอร์:5000
  • NAT ได้รับสิ่งนี้และมีแหล่งที่มา เซิร์ฟเวอร์:5000 ปลายทาง NATip:พอร์ต NATซึ่งตรงกับแพ็กเก็ตที่ส่งออกไป (แต่มีการกลับต้นทางและปลายทาง)
  • NAT ส่งสิ่งนี้ไปที่ ลูกค้า:5001 ยังคงมีแหล่งที่มา เซิร์ฟเวอร์:5000

ip+port ต้นทางและ ip+port ปลายทางสร้างชุดค่าผสมที่สามารถติดตามได้ (มีรายละเอียดมากกว่านี้แต่เป็นพื้นฐาน)

อ่านเพิ่มเติม แต่ฉันควรขุดค้นเอกสารที่ดีกว่าเกี่ยวกับเรื่องนี้และไม่ใช่แค่อ้างอิงถึงหลักฐานโดยสังเขปจากสิ่งที่ฉันเคยเห็นมา

diaper avatar
ca flag
คุณช่วยอธิบายความหมายของคำว่า "หากทราฟฟิกเข้ามาพร้อมกับพอร์ตที่กลับรายการ" ได้ไหม หมายความว่าถ้าเซิร์ฟเวอร์ของฉันนอก NAT ได้รับแพ็กเก็ตบนพอร์ต 5000 จาก :5001 จากนั้นควรส่งการตอบกลับไปยัง :5000?
in flag
@ตัวอย่างผ้าอ้อม เพิ่ม
user10489 avatar
nc flag
ดูเพิ่มเติม https://en.wikipedia.org/wiki/Hole_punching_(เครือข่าย)
diaper avatar
ca flag
@NiKiZe ขอบคุณ มันสมเหตุสมผลแล้ว ฟังดูเหมือนการเจาะรูโดยทั่วไปคือ "ส่งแพ็กเก็ตมากกว่าหนึ่งครั้งเพราะแพ็กแรกอาจหลุด" ฉันหวังว่าฉันจะเข้าใจว่าทำไมแอปตัวอย่างของฉันถึงยังไม่ทำงาน ในขณะที่สิ่งอื่นๆ ในเครือข่ายของฉันทำงานได้โดยไม่ต้องส่งต่อพอร์ต (xbox, การโทรแบบซูม, ฯลฯ ) แต่นั่นเป็นคำถามอื่นทั้งหมด
in flag
เราเตอร์ NAT ส่วนใหญ่อนุญาตให้รับส่งข้อมูล ตรวจสอบให้แน่ใจว่าคุณส่งคืนข้อมูลไปยังพอร์ตเดียวกับที่รับส่งข้อมูลมา เซิร์ฟเวอร์มีหมายเลขพอร์ตคงที่ ไคลเอ็นต์มีหมายเลขพอร์ตแบบสุ่มเป็นแหล่งที่มา

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา