ฉันทราบตาราง NAT ฉันแค่อยากรู้ว่าจะเกิดอะไรขึ้นถ้าไคลเอนต์สองเครื่องในเครือข่ายส่วนตัวในพื้นที่ต้องการดาวน์โหลดทรัพยากรเดียวกันบนพอร์ตเดียวกัน กล่าวอีกนัยหนึ่ง เมื่อแพ็กเก็ตมาจากเซิร์ฟเวอร์ เราเตอร์จะตัดสินใจได้อย่างไรว่าไคลเอนต์ใดควรได้รับแพ็กเก็ตนี้
ถ้าฉันจำไม่ผิด แพ็กเก็ตขาเข้าจากเซิร์ฟเวอร์มีที่อยู่ IP ปลายทางของเราเตอร์ซึ่งเป็นแบบสาธารณะและเหมือนกันสำหรับทั้งคู่ และยังมีหมายเลขพอร์ตของปลายทางซึ่งบังเอิญเหมือนกันในกรณีนี้
มีกลไกใดในเราเตอร์หรือเซิร์ฟเวอร์ในการตรวจจับสิ่งนี้หรือไม่ หรือพฤติกรรมนี้เป็นไปได้ตั้งแต่แรก?
ฉันได้ค้นหาคำถามเช่น นี้ซึ่งทำให้รู้สึกว่าเกิดข้อผิดพลาดขึ้นเนื่องจากพอร์ตไม่ว่าง แต่ฉันกำลังถามถึงระบบสองระบบที่แยกจากกัน
อัปเดต : จากความคิดเห็นฉันรู้ว่าฉันยังไม่ชัดเจนพอดังนั้นฉันจะพูดอีกครั้งด้วยตัวอย่าง:
ฉันแค่สนใจเกี่ยวกับพอร์ต "ต้นทาง" ของอุปกรณ์ สมมติว่าฉันมีแล็ปท็อปสองเครื่อง (192.168.2.10
และ 192.168.2.11
) ทั้งคู่กำลังดาวน์โหลดไฟล์เดียวกันจากเซิร์ฟเวอร์เดียวกันที่ไหนสักแห่งในอินเทอร์เน็ต แต่ละคนมีระบบปฏิบัติการที่สร้างพอร์ตแบบสุ่ม ดังนั้น IP ต้นทางและพอร์ตต้นทางจะเป็นดังนี้: 192.168.2.10:6321
และ 192.168.2.11:7132
. ฉันคิดว่าใน NAT เราเตอร์จะตั้งค่าที่อยู่ IP (สาธารณะ) พร้อมกับพอร์ตจากแล็ปท็อป ดังนั้นหากที่อยู่ IP สาธารณะของเราเตอร์ที่บ้านคือ 65.82.23.32
แพ็คเกจทั้งสองนี้จะได้รับ IP ต้นทางและพอร์ตต้นทางตามลำดับ: 65.82.23.32:6321
และ 65.82.23.32:7132
.
ตอนนี้เมื่อมีการตอบกลับ เราเตอร์สามารถระบุได้ว่าแพ็กเก็ตใดสำหรับแล็ปท็อปเครื่องใดจากหมายเลขพอร์ตใช่ไหม จนถึงตอนนี้ดีมาก แต่จะเกิดอะไรขึ้นหากแล็ปท็อปสองเครื่องสร้างพอร์ตต้นทางเดียวกันโดยไม่ตั้งใจหรือตั้งใจ ตัวอย่างเช่น : 192.168.2.10:6000
และ 192.168.2.11:6000
. ตอนนี้เราเตอร์จะตั้งค่าที่อยู่ IP สาธารณะเป็นที่อยู่ IP ต้นทางเหมือนเมื่อก่อน แต่ถ้าพยายามใช้หมายเลขพอร์ตเหล่านั้น แพ็คเกจเหล่านั้นจะมี IP ต้นทางและหมายเลขพอร์ตต้นทางเหมือนกันทุกประการ เช่น : 65.82.23.32:6000
และ 65.82.23.32:6000
.
นี่คือจุดที่ผมสับสนว่าเมื่อมีการตอบกลับมา เราเตอร์จะตัดสินใจได้อย่างไรว่าแพ็กเก็ตใดสำหรับแล็ปท็อปเครื่องใด
หลังจากคำตอบของ @ mfinni ฉันสังเกตเห็นว่า PAT ไม่ทำงาน! อุปกรณ์ NAT (ในที่นี้คือเราเตอร์) จะกำหนดพอร์ตเฉพาะให้กับแล็ปท็อปแต่ละเครื่อง (ที่อยู่ IP ส่วนตัว) จากนั้นแพ็กเก็ตที่ส่งออกด้วยพอร์ตเฉพาะเหล่านี้ (เช่น 7777
และ 7778
). ดังนั้นเมื่อได้รับคำตอบกลับมา ก็จะชัดเจนว่าแพ็กเก็ตใดเป็นของแล็ปท็อปเครื่องใดจากพอร์ต จากนั้นเราเตอร์จะแปลงข้อมูลเหล่านี้ 65.82.23.32:7777
, 65.82.23.32:7778
ถึง --> 192.168.2.10:6000
, 192.168.2.11:6000
ตามลำดับ