การใช้ NAT Traversal เพื่อเชื่อมต่อผู้ใช้ในโหมดพาสซีฟ

บทความนี้เป็นการแปลฟรีของหนึ่งในรายการใน บล็อกนักพัฒนา DC++.

เมื่อได้รับอนุญาตจากผู้เขียน (รวมถึงเพื่อความชัดเจนและความสนใจ) ฉันจึงระบายสีด้วยลิงก์และเสริมด้วยการค้นคว้าส่วนตัว

การแนะนำ

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

หากไคลเอนต์ทั้งสองอยู่ในโหมดแอคทีฟ

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

หากลูกค้ารายใดรายหนึ่งอยู่ในโหมดพาสซีฟ

ผ่านฮับ ซึ่งเป็นไคลเอ็นต์แบบพาสซีฟ A ส่งคำสั่ง $RevConnectToMe ลูกค้าที่ใช้งานอยู่ Bซึ่งจะตอบกลับด้วยคำสั่ง $ConnectToMe

การใช้ NAT Traversal เพื่อเชื่อมต่อผู้ใช้ในโหมดพาสซีฟ
เป็นเซิร์ฟเวอร์ S ในกรณีข้างต้นจะมีฮับ DC

หากไคลเอนต์ทั้งสองอยู่ในโหมดพาสซีฟเปิดอยู่ ศูนย์กลาง ADC

ลูกค้าที่อยู่เบื้องหลัง NAT ต่างๆ A и B เข้าร่วมศูนย์กลาง S.

การใช้ NAT Traversal เพื่อเชื่อมต่อผู้ใช้ในโหมดพาสซีฟ
นี่คือลักษณะการเชื่อมต่อกับฮับเมื่อมองจากฝั่งไคลเอ็นต์ A

ฮับยอมรับการเชื่อมต่อบนพอร์ต 1511 ลูกค้า A ทำการเชื่อมต่อขาออกจากเครือข่ายส่วนตัวผ่านพอร์ต 50758 ฮับจะมองเห็นที่อยู่ของอุปกรณ์ NAT ทำงานร่วมกับมันและออกอากาศไปยังไคลเอนต์ตามตัวระบุ

ลูกค้า A ส่งไปยังเซิร์ฟเวอร์ S ข้อความขอความช่วยเหลือในการเชื่อมต่อกับลูกค้า B.

Hub: [Outgoing][178.79.159.147:1511] DRCM AAAA BBBB ADCS/0.10 1649612991

นอกจากนี้ลูกค้ายังอยู่ในโหมดพาสซีฟ Bเมื่อได้รับคำสั่งนี้แล้วจะต้องรายงานพอร์ตส่วนตัวที่ใช้เชื่อมต่อกับฮับผ่าน NAT

Hub: [Incoming][178.79.159.147:1511] DNAT BBBB AAAA ADCS/0.10 59566 1649612991

หลังจากได้รับข้อมูลนี้แล้วลูกค้า A พยายามสร้างการเชื่อมต่อกับไคลเอนต์ทันที B และรายงานท่าเรือส่วนตัวของตนเอง

Hub:		[Outgoing][178.79.159.147:1511]	 	D<b>RNT</b> AAAA BBBB ADCS/0.10 <b>50758</b> 1649612991

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

การใช้ NAT Traversal เพื่อเชื่อมต่อผู้ใช้ในโหมดพาสซีฟ
บิงโก!

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

การใช้ NAT Traversal เพื่อเชื่อมต่อผู้ใช้ในโหมดพาสซีฟ
ภาพประกอบเหมาะสำหรับกระบวนการทั้งหมดโดยมีข้อแม้ดังนี้ มาตรการ ไม่ใช้พอร์ตสาธารณะที่เปิดโดยเซสชัน NATSตลอดจนที่อยู่ส่วนตัว

ถ้อยคำส

ในขณะที่เขียนบทความ (ต้นฉบับ) ลูกค้า DC ประมาณครึ่งหนึ่งกำลังทำงานในโหมดพาสซีฟ ซึ่งหมายความว่าไม่สามารถทำการเชื่อมต่อได้หนึ่งในสี่

ในอนาคต DC++ จะสามารถข้าม NAT ได้โดยใช้การเชื่อมต่อที่มีอยู่ AS и BS เพื่อสร้างการเชื่อมต่อไคลเอนต์-ไคลเอนต์โดยตรง แม้ว่า A и B อยู่ในโหมดพาสซีฟ

ที่มา: will.com

เพิ่มความคิดเห็น