เราเตอร์รู้ได้อย่างไรว่าจะส่งต่อแพ็คเก็ตได้อย่างไร


68

หากคอมพิวเตอร์หลายเครื่องที่มีที่อยู่ภายในเครื่อง (192.168.0. #) เชื่อมต่อกับเราเตอร์และคอมพิวเตอร์แต่ละเครื่องจะเปิดเว็บเบราว์เซอร์และขอหน้าผ่าน HTTP เมื่อมีการส่งแพ็กเก็ต TCP: 80 เหล่านี้เราเตอร์จะเปลี่ยนที่อยู่ภายในเครื่องด้วย IP แบบคงที่ของเราเตอร์ (เช่นผู้ให้บริการที่ได้รับ IP) เพื่อให้เซิร์ฟเวอร์สามารถตอบกลับไปยังที่อยู่ที่เหมาะสม

แต่เราเตอร์รู้ได้อย่างไรว่าคอมพิวเตอร์เครื่องใดที่จะส่งต่อการตอบกลับ HTTP เนื่องจากส่วนหัว TCP ไม่มีที่อยู่ IP ภายในเครื่อง (ใช่หรือไม่) และคอมพิวเตอร์ทุกเครื่องใช้พอร์ต 80

สิ่งนี้เกี่ยวข้องกับที่อยู่ MAC หรือไม่

มันทำงานยังไงกันแน่?

คำตอบ:


78

เราเตอร์ที่บ้านส่วนใหญ่ใช้กรณีพิเศษของ NAT ที่เรียกว่า PAT

คุณจะเห็นมันเรียกว่า NAPT หรือ IP Masquerading คำศัพท์ทั้งสามหลังมีความหมายเหมือนกันในการใช้งานทั่วไป (ตัวย่อ - การแปลที่อยู่เครือข่าย / การแปลที่อยู่พอร์ต / การแปลที่อยู่เครือข่ายพอร์ต)

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

ตัวอย่างเช่นสมมติว่าคุณมีเครื่องลูกค้าที่ไปที่ www.google.com คอมพิวเตอร์ของคุณ (เช่น 192.168.1.100) ค้นหาที่อยู่และทำการเชื่อมต่อ TCP ไปที่ 72.14.204.147 ที่พอร์ต 80 จากที่อยู่ IP ภายในของคุณโดยใช้พอร์ตต้นทางแบบสุ่ม

คอมพิวเตอร์ของคุณการเชื่อมต่อมีลักษณะดังนี้:

192.168.1.100:37641   <-->  72.14.204.147:80

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

PrivateIP        PrivatePort   PublicIP      PublicPort    Remote          RemotePort
-------------    ----------    -----------   -----------   ----------      -----------
192.168.1.100    37641         *10.6.23.5    59273         72.14.204.147   80

* สำหรับตัวอย่างฉันใช้ที่อยู่ที่เริ่มต้นด้วย 10 แต่ไม่สามารถกำหนดเส้นทางได้แบบสาธารณะ ตารางค่อนข้างง่ายเกินไป

ไปที่ google การเชื่อมต่อจะเป็นดังนี้:

10.6.23.5:59273   <-->  72.14.204.147:80

Google จะส่ง reponse ไปที่ 10.6.23.5 ที่พอร์ต 59273 จากนั้นเราเตอร์ของคุณจะค้นหาข้อมูลนั้นในตารางและส่งต่อแพ็กเก็ตไปที่ 192.168.1.100:37641


3
เพื่อสรุปเราเตอร์จะใช้หมายเลขพอร์ตเพื่อจดจำสิ่งที่มาจากภายนอกเครือข่ายท้องถิ่นไปยังสิ่งที่อยู่ภายในเครือข่าย อย่างไรก็ตามนี่ไม่ได้อธิบายว่ามันwww.google.comจะหาฉันได้อย่างไรถ้าฉันไม่ได้ส่งคำขอเริ่มต้น กล่าวอีกนัยหนึ่งข้อความสามารถติดต่อฉันผ่านเราเตอร์เมื่อฉันส่งคำขอผ่านเราเตอร์ในตอนแรก
เท่านั้น

2
@Imray google.com (หรือสิ่งอื่นใดบนอินเทอร์เน็ต) ไม่พบคอมพิวเตอร์ของคุณหากคอมพิวเตอร์ของคุณไม่ได้ส่งคำขอ นี่คือเหตุผลที่มีเราเตอร์เพิ่มความปลอดภัยมาก
Jason

6
@ Jason นั่นเป็นตำนานที่อันตราย การมีไฟร์วอลล์เพิ่มความปลอดภัย งานของเราเตอร์ SoHo ทั่วไปคือการทำให้สิ่งต่าง ๆ ทำงานไม่หยุดสิ่งต่าง ๆ จากการทำงาน ดูที่นี่สำหรับข้อมูลเพิ่มเติม
David Schwartz

1
@ Jason ดีกว่าที่จะไม่ลบความคิดเห็นของคุณมันทำให้สิ่งที่จะเป็นการสนทนาที่คุ้มค่าที่จะอ่านไม่สามารถอ่านได้
barlop

2
เป็นตัวอย่างที่ดี แต่สิ่งนี้หมายความว่าพอร์ตจำนวนสูงทั้งหมดเปิดอยู่เสมอบนเราเตอร์ของเราหรือไม่
jiggunjer

1

เราเตอร์ระหว่างเครือข่ายท้องถิ่นและส่วนที่เหลือของอินเทอร์เน็ตใช้เทคนิคที่เรียกว่า NAT

เพียงแค่ข้อความที่ตัดตอนมาจาก TCP / IP Illustrated Volume 1 เกี่ยวกับ NAPT พร้อมกับคำศัพท์เกี่ยวกับข้อบกพร่องของลูกพี่ลูกน้องธรรมดา NAT พื้นฐาน:

NAT พื้นฐานดำเนินการเขียนที่อยู่ IP ใหม่เท่านั้น ในสาระสำคัญที่อยู่ส่วนตัวจะถูกเขียนใหม่ให้เป็นที่อยู่สาธารณะมักจะมาจากสระว่ายน้ำหรือช่วงที่อยู่สาธารณะที่จัดทำโดย ISP NAT ประเภทนี้ไม่ได้รับความนิยมมากที่สุดเพราะไม่ได้ช่วยลดความต้องการที่อยู่ IP อย่างมาก - จำนวนที่อยู่ที่สามารถกำหนดเส้นทางได้ทั่วโลกจะต้องเท่ากันหรือมากกว่าจำนวนโฮสต์ภายในที่ต้องการเข้าถึงอินเทอร์เน็ตพร้อมกัน วิธีที่นิยมใช้กันมากขึ้น NAPT เกี่ยวข้องกับการใช้ transport-layer identifier (เช่นพอร์ตสำหรับ TCP และ UDP, query identifier สำหรับ ICMP) เพื่อแยกแยะว่าโฮสต์ใดในฝั่งส่วนตัวของ NAT ที่เกี่ยวข้องกับแพ็กเก็ตเฉพาะ (ดูรูปที่ 7- 4) สิ่งนี้ทำให้โฮสต์ภายในจำนวนมาก (เช่น หลายพัน) เพื่อเข้าถึงอินเทอร์เน็ตพร้อมกันโดยใช้ที่อยู่สาธารณะที่ จำกัด ในจำนวนที่ จำกัด ซึ่งมักจะเป็นเพียงที่เดียว โดยปกติเราจะใช้คำว่า NAT เพื่อรวมทั้ง NAT ดั้งเดิมและ NAPT เว้นแต่ความแตกต่างนั้นมีความสำคัญในบริบทเฉพาะ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.