The IP Network Address Translator,IP網(wǎng)絡(luò)地址轉(zhuǎn)換是人們說的NAT,或者說NA(P)T。NAT是為了解決IPv4地址不足而提出來得一種替代方案,可以對外界屏蔽內(nèi)部的網(wǎng)絡(luò)拓?fù)洹kS著網(wǎng)絡(luò)的發(fā)展,NAT阻礙了構(gòu)建在覆蓋網(wǎng)絡(luò)的P2P程序的發(fā)展。因?yàn)楦采w網(wǎng)絡(luò)是構(gòu)建在應(yīng)用層,屏蔽了傳輸層以下的網(wǎng)絡(luò)拓?fù)洌W(wǎng)絡(luò)中的每一個節(jié)點(diǎn)或某些節(jié)點(diǎn)有此網(wǎng)絡(luò)的路由表,由這些路由表構(gòu)建出這個覆蓋網(wǎng)絡(luò),但是NAT阻礙的覆蓋網(wǎng)絡(luò)中節(jié)點(diǎn)的連接。

上圖顯示了NAT的原理。NAT將內(nèi)網(wǎng)的IP替換為公網(wǎng)IP,將端口映射為公網(wǎng)的端口。公網(wǎng)IP替換內(nèi)網(wǎng)IP是固定的,NAT的不足之處在于端口的替換。因?yàn)?/span>NAT還沒有形成標(biāo)準(zhǔn),替換策略有幾種,這也是NAT行為的關(guān)鍵。
在《Behavior and Classification of NAT Devices and Implications for NAT Traversal》一文中就把端口映射的行為分成四種,其中包括保留端口,不保留端口,端口重載,端口復(fù)用。這四種分類最終區(qū)分了NAT的四種類型即Full cone NAT,Symmetric NAT,Port-Restrictes cone NAT ,Address-Restriced cone NAT。
為了使覆蓋網(wǎng)絡(luò)中的節(jié)點(diǎn)相互通信,我們需要進(jìn)行NAT穿越。在《A NAT Traversal Mechanism for Peer-To-Peer Networks》一文種介紹了根據(jù)兩端不同的NAT類型對應(yīng)的四種NAT穿越方案。如下圖

這些解決方案都需要STUN(Simple Traversal of User Datagram Protocol through Network Address Translators (NATs),NAT的UDP簡單穿越)協(xié)議幫助。STUN協(xié)議要求一臺具有公網(wǎng)IP的主機(jī)幫助一臺主機(jī)進(jìn)行NAT類型的判斷。

上圖是STUN
協(xié)議的流程,其主要的思想是通過STUN
的回射來判斷主機(jī)的NAT
類型。 除了直接連接,反向連接、打洞和依賴都需要第三臺主機(jī)的幫助。
在《Characterization and Measurement of TCP Traversal through NATs and Firewalls》一文中介紹了TCP穿越的方法。在STUNT#2方法中,第三臺主機(jī)和兩臺需要連接的主機(jī)都有長連接,當(dāng)一方需要發(fā)起來連接時,向第三臺主機(jī)發(fā)請求,第三臺主機(jī)向被請求的主機(jī)發(fā)送邀請,此時需要連接的主機(jī)都向?qū)Ψ桨l(fā)送SYN包,此時雙方的防火墻都有了洞,只要有一方的SYN包到達(dá)對方主機(jī),連接就會被建立。Relay方法需要耗費(fèi)的代價太大,在P2P應(yīng)用中一般會消極的處理雙方都是對稱NAT的情況。