本文是其中一篇文章的免費翻譯
經作者許可(以及為了清晰和興趣),我用連結對其進行了著色,並補充了一些個人研究。
介紹
此時,連線對中至少有一個使用者必須處於活動模式。 當任何一方都沒有配置主動模式時,NAT 穿越機制將很有用。 這通常是由於防火牆或 NAT 裝置阻止傳入連線所造成的。
如果兩個客戶端都處於活動模式
發起客戶端發送包含自己的 IP 位址和連接埠的命令
如果其中一個客戶端處於被動模式
透過集線器,被動客戶端 A 發送命令
作為伺服器 S 在上面的情況下有一個直流集線器
如果兩個客戶端都處於被動模式
不同 NAT 後面的客戶端 A и B 加入了樞紐 S.
這是從客戶端看與集線器的連接的樣子 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 B 完全有權拒絕客戶端的第一個連線請求 A,但是他自己的請求衝進了這個連接所創建的“洞”中,並且連接建立了。
適用於整個過程的插圖,但需要注意的是
尾聲
在撰寫(原始)文章時,大約一半的 DC 用戶端正在被動模式下工作。 這意味著所有可能的連接中有四分之一無法建立。
在未來
來源: www.habr.com