คำถามของคุณสัมผัสกับหัวใจของอินเทอร์เน็ตและความหมายของการกำหนดเส้นทาง ในตัวอย่างของคุณเราเตอร์ D ส่งข้อมูลไปยังคอมพิวเตอร์ A โดยยึดตามสถานที่สองแห่ง:
- มีการบอกให้ส่งข้อมูลไปยังคอมพิวเตอร์ A.
- มันประมวลผลข้อมูลจากคอมพิวเตอร์ A. แล้ว
สถานการณ์สมมติของคุณดูเหมือนจะเป็นตัวเลือกแรก - เราเตอร์ D ต้องการส่งไปยังคอมพิวเตอร์ A. แต่จะไปได้อย่างไร มันทำได้โดยการใช้ตารางเส้นทางที่ใช้ร่วมกันโดยเราเตอร์ระหว่างกัน
เราเตอร์ C ส่งการอัพเดทไปยังเราเตอร์ทุกตัวที่รู้ - รวมถึงเราเตอร์ D - ว่า "รู้" "192.168. *" เครือข่าย (ในความเป็นจริง - สิ่งนี้จะไม่เกิดขึ้นเพราะเครือข่ายนั้นไม่ได้กำหนดเส้นทาง - เป็นส่วนตัว เพิกเฉยต่อสิ่งนั้น) ดังนั้นเราเตอร์ D จึงรู้ว่าเราเตอร์ C รู้เครือข่ายนั้นอยู่แล้ว
ดังนั้นเมื่อข้อมูลถูกกำหนดไว้สำหรับคอมพิวเตอร์ A มันจะถูกแก้ไขโดยเครือข่ายก่อน ดังนั้นเราเตอร์ D ถามว่า "ฉันต้องการค้นหาเครือข่าย 192.168. * ฉันรู้หรือไม่ไม่ฉันรู้จักคนอื่นบ้างหรือไม่ใช่เราเตอร์ C ทำได้ฉันจะไปยังเราเตอร์ C ได้อย่างไรผ่าน 2.2 2.2 ส่วนต่อประสาน "
จากนั้นเราเตอร์ D จะส่งข้อมูลไปยังเราเตอร์ซีเราเตอร์ C รับแล้วบอกว่า "โอ้ฉันมีข้อมูลจากเราท์เตอร์ดี แต่สำหรับเครือข่าย 192.168 ฉันรู้จักเครือข่ายนั้นหรือไม่ใช่ผ่านเครือข่าย 192.168.1.1 ของฉัน" จากนั้น ส่งต่อมัน
มีงานอื่นที่ต้องทำเพื่อแก้ไขที่อยู่ IP และ MAC แต่ฉันครอบคลุมการกำหนดเส้นทางต่อไม่ใช่ ARP และเครือข่ายท้องถิ่น
คุณจะสังเกตเห็นข้อสันนิษฐานแรกของคุณ - เราเตอร์ระยะไกลต้องทราบกลไกการกำหนดเส้นทาง - ไม่ได้เล่นที่นี่ เราเตอร์ D ไม่สนใจว่าเราท์เตอร์ C กำลังใช้ EIGRP, RIP, RIPv2, OSPF หรืออะไรก็ตาม สิ่งที่สำคัญคือต้องได้รับการอัปเดต (แน่นอนว่าการอัปเดตเป็นสิ่งสำคัญอย่างไรเพื่อให้แน่ใจว่าทั้งสองอยู่ในสถานะซิงค์ แต่อีกครั้งนั่นเป็นปัญหาที่แตกต่างกัน)
สมมติฐานที่สองของคุณ - หมายเลขพอร์ตนั้นเป็นปัจจัยในการกำหนดเส้นทาง - ก็ไม่ถูกต้องเช่นกัน เราเตอร์ (โดยทั่วไป) ไม่จำเป็นต้องใช้ข้อมูลพอร์ตในการตัดสินใจเลือกเส้นทาง (ที่มีการเปลี่ยนแปลงเล็กน้อยเนื่องจากเทคโนโลยีเครือข่ายใหม่บางส่วนและนำไปใช้กับไฟร์วอลล์และพร็อกซี่เป็นหลัก แต่ยังคงสมมติฐานที่กว้างขึ้นยังคงใช้กับเราเตอร์ "ของจริง")
จากตัวอย่างของคุณเราเตอร์ C จะส่งต่อข้อมูลบนพอร์ต 1000 (ต่อสถานการณ์ของคุณ) เนื่องจากเป็นไปได้ว่ามีบริการบนคอมพิวเตอร์ A คาดว่าจะมีข้อมูลบนพอร์ตเฉพาะนั้น แต่รู้เพียงเพราะเราเตอร์ D ส่งไปที่พอร์ต 1000 และเราเตอร์ D เท่านั้นส่งไปที่พอร์ตนั้นเพราะผู้สร้างข้อมูลส่งไปยังเราเตอร์ D บนพอร์ตนั้น
ฉันไม่เข้าใจการรวมโปรแกรม bittorrent หรือ P2P ของคุณเป็นภาพสะท้อนของคำถามที่คุณถาม คำอธิบายเดียวกันจะนำไปใช้ เราเตอร์สามารถกำหนดค่าด้วยพอร์ตทริกเกอร์ซึ่งเชื่อมโยงอุปกรณ์เฉพาะ (หรือ IP) กับพอร์ตเฉพาะ เมื่อการรับส่งข้อมูลมาที่พอร์ต 1234 เราเตอร์จะรู้ว่าจะส่งข้อมูลไปยังอุปกรณ์ ABCD ซึ่งมักจะเกี่ยวข้องกับพอร์ต TCP ขาออก นั่นคือถ้าฉันส่งทราฟฟิกที่พอร์ต 7890 เราเตอร์จะรู้ทราฟฟิกที่เข้ามาจะอยู่ที่พอร์ต 1234 และส่งมาให้ฉัน
แต่การเรียกพอร์ตไม่เกี่ยวข้องกับการตัดสินใจกำหนดเส้นทาง (ระยะไกล) แต่จะเกี่ยวข้องกับตาราง MAC / IP ภายในที่เราเตอร์ใช้สำหรับ LAN
อัปเดต / แก้ไข : เพื่อตอบและอธิบายเพิ่มเติมหลังจากความคิดเห็นของคุณ เราเตอร์ D รู้คอมพิวเตอร์ A ด้วยที่อยู่ IP เท่านั้น (192.168.2.2) แต่เราเตอร์ C รู้คอมพิวเตอร์โดยที่อยู่ IP และที่อยู่ MAC ของมัน MAC (การควบคุมการเข้าถึงสื่อ) เป็นตัวระบุ (โดยปกติ ... ) 48 บิตที่กำหนดโดยมาตรฐานสากล อุปกรณ์ทุกชิ้นที่เชื่อมต่อกับ LAN (แบบใช้สายและไร้สาย) ควรจะมีที่อยู่ MAC ที่ไม่ซ้ำกัน
เราเตอร์ (เราเตอร์ C) เชื่อมโยงที่อยู่ IP และที่อยู่ MAC ร่วมกันในตาราง (ตารางที่อยู่ MAC) ดังนั้นเมื่อทราฟฟิกเข้ามาใน Router C และเราเตอร์ตระหนักถึง "local" ของมันมันจะทำการค้นหาตารางที่อยู่ MAC จากนั้นเราเตอร์จะเปลี่ยนข้อมูลที่อยู่ของเฟรมอย่างแท้จริง
มันสร้างใหม่ (เขียนใหม่) ข้อมูลปลายทางของเลเยอร์ 2 เพื่อให้ที่อยู่ MAC ปลายทางของคอมพิวเตอร์ A แต่เก็บข้อมูลที่อยู่ IP (เลเยอร์ 3) ให้เหมือนเดิม
หากเส้นทางไม่ทราบที่อยู่ MAC หรือไม่มีความสัมพันธ์ IP-MAC ในตารางของมันมันทำสิ่งที่เรียกว่า ARP (โปรโตคอลการแก้ไขที่อยู่) เพื่อขอให้ "HEY ทุกคนในเครือข่ายนี้คุณมีที่อยู่ MAC นี้หรือไม่" หรือบางครั้ง - "ทุกคนที่อยู่ MAC ของคุณคืออะไร") อุปกรณ์ / อุปกรณ์ที่เหมาะสมตอบสนองและเราเตอร์สร้างตาราง IP-MAC