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

上圖顯示了NAT的原理。NAT將內(nèi)網(wǎng)的IP替換為公網(wǎng)IP,將端口映射為公網(wǎng)的端口。公網(wǎng)IP替換內(nèi)網(wǎng)IP是固定的,NAT的不足之處在于端口的替換。因為NAT還沒有形成標準,替換策略有幾種,這也是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é)點相互通信,我們需要進行NAT穿越。在《A NAT Traversal Mechanism for Peer-To-Peer Networks》一文種介紹了根據(jù)兩端不同的NAT類型對應(yīng)的四種NAT穿越方案。如下圖


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