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

上圖顯示了NAT的原理。NAT將內網的IP替換為公網IP,將端口映射為公網的端口。公網IP替換內網IP是固定的,NAT的不足之處在于端口的替換。因為NAT還沒有形成標準,替換策略有幾種,這也是NAT行為的關鍵。
在《Behavior and Classification of NAT Devices and Implications for NAT Traversal》一文中就把端口映射的行為分成四種,其中包括保留端口,不保留端口,端口重載,端口復用。這四種分類最終區分了NAT的四種類型即Full cone NAT,Symmetric NAT,Port-Restrictes cone NAT ,Address-Restriced cone NAT。
為了使覆蓋網絡中的節點相互通信,我們需要進行NAT穿越。在《A NAT Traversal Mechanism for Peer-To-Peer Networks》一文種介紹了根據兩端不同的NAT類型對應的四種NAT穿越方案。如下圖

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

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