影響P2P通訊一個很關鍵的因素是NAT,由于IPV4的地址有限,所以很多在私網(wǎng)后的計算器是通過防火墻的NAT轉(zhuǎn)換完的映射地址訪問網(wǎng)絡上的資源的.不同的防火墻NAT后的計算機節(jié)點很可能是一樣的私網(wǎng)IP地址,這樣兩個處在防火墻NAT后的計算機節(jié)點無法找到對方的地址并傳送數(shù)據(jù)的,這些私網(wǎng)后的計算機只能和有公網(wǎng)IP地址的計算機通訊,只有獲得了公網(wǎng)地址的計算機才有可能處于不同NAT后的計算機節(jié)點做轉(zhuǎn)發(fā)數(shù)據(jù)工作,這也是多數(shù)P2P軟件穿越防火墻的根本原理.
P2P數(shù)據(jù)都大多數(shù)是UDP包,通過這種NAT轉(zhuǎn)換后可以到達目的節(jié)點的過程叫NAT穿越.防火墻限制私網(wǎng)和公網(wǎng)通訊,典型的作用如丟棄未驗證的數(shù)據(jù)包.但防火墻不對包的具體內(nèi)容改變,無論TCP/UDP他們的IP地址和端口信息都不會變.他通過邊界的數(shù)據(jù)包頭來允許私網(wǎng)的機器通過有限的公網(wǎng)IP訪問外網(wǎng),下面介紹幾種NAT類型,他們關系到P2P軟件的設計實現(xiàn),
Basic NAT
基本NAT轉(zhuǎn)換不會把私網(wǎng)點IP地址映射到公網(wǎng)IP地址,不改變TCP/UDP數(shù)據(jù)包的端口
NetWork Address/Port Translator( NAPT )
NAPT 檢查并改變IP地址和TCP/UDP數(shù)據(jù)包的端口地址
Cone NAT
在建立每次的新會話建立時(私網(wǎng)到公網(wǎng)),原來的已經(jīng)打開的端口會被使用,只要有通訊這個端口不會關閉.
Symmetric NAT(對稱NAT)
對稱NAT會在每次的新會話時(私網(wǎng)到公網(wǎng)),重新分配一個端口給會話.
Full Cone NAT(全向NAT)
一旦會話建立,全向NAT的通訊可以對任意的公網(wǎng)地址做通訊.
Restricted Cone NAT
端口受限的NAT不光對已經(jīng)通訊的外部IP地址做捆綁而且對相關的通訊端口做捆綁,所以即使是已經(jīng)建立通訊的IP地址,它的其他端口發(fā)來的數(shù)據(jù)包也會被拒絕,這在限制級別上和對稱NAT一樣.要想正常的完成最終的通訊,特別是在NAT后的計算機,根據(jù)前面的介紹,我們需要找到合適的技術來對實現(xiàn)穿越防火墻的機制,完成處理不同的NAT后的計算機間P2P通訊,在端口控制嚴格的后兩種NAT后的計算機節(jié)點通訊,一定要處于公網(wǎng)的計算機做轉(zhuǎn)發(fā)工作.