P2P打洞技術之一 NAT裝置實現分類

2021-08-24 22:21:47 字數 1069 閱讀 1397

nat分類

根據stun協議(rfc3489),nat大致分為下面四類

1) full cone 這種nat內部的機器a連線過外網機器c後,nat會開啟乙個埠.然後外網的任何發到這個開啟的埠的udp資料報都可以到達a.不管是不是c發過來的. 例如 a:192.168.8.100 nat:202.100.100.100 c:292.88.88.88 a(192.168.8.100:5000) -> nat(202.100.100.100 : 8000) -> c(292.88.88.88:2000) 任何傳送到 nat(202.100.100.100:8000)的資料都可以到達a(192.168.8.100:5000)

2) restricted cone 這種nat內部的機器a連線過外網的機器c後,nat開啟乙個埠.然後c可以用任何埠和a通訊.其他的外網機器不行. 例如 a:192.168.8.100 nat:202.100.100.100 c:292.88.88.88 a(192.168.8.100:5000) -> nat(202.100.100.100 : 8000) -> c(292.88.88.88:2000) 任何從c傳送到 nat(202.100.100.100:8000)的資料都可以到達a(192.168.8.100:5000)

3)port restricted cone 這種nat內部的機器a連線過外網的機器c後,nat開啟乙個埠.然後c可以用原來的埠和a通訊.其他的外網機器不行. 例如 a:192.168.8.100 nat:202.100.100.100 c:292.88.88.88 a(192.168.8.100:5000) -> nat(202.100.100.100 : 8000) -> c(292.88.88.88:2000) c(202.88.88.88:2000)傳送到 nat(202.100.100.100:8000)的資料都可以到達a(192.168.8.100:5000) 以上三種nat通稱cone nat.我們只能用這種nat進行udp打洞.

4)symmetic 對於這種nat.連線不同的外部目標.原來nat開啟的埠會變化.而cone nat不會.雖然可以用埠猜測.但是成功的概率很小.因此放棄這種nat的udp打洞.

關於P2P打洞

處於不同nat之後的客戶端通訊 我們假設 client a 和 client b 都擁有自己的私有ip位址,並且都處在不同的nat之後,端對端的程式執行於 client a,client b,s之間,並且它們都開放了udp埠1234。client a和client b首先分別與s建立通訊會話,這時n...

P2P打洞原理

首先我們明確現在我們有的裝置 1 客戶端a,閘道器nat a 2 客戶端b,閘道器nat b 3 伺服器s 這些裝置明確之後,就可以介紹tcp打洞的過程 1 首先伺服器s開啟兩個服務監聽,乙個主連線埠,和乙個協助打洞埠 2 a通過主連線埠連線伺服器s,b通過主連線埠連線伺服器s,這個是正常的伺服器通...

P2P中NAT之間的打洞可能性

我們看看不同nat之間的nat打洞。nat打洞需要server配合,需要2種server 1.類似webrtc中的信令伺服器,作用是幫助客戶機溝通ip和port資訊 2.stun server,用來讓客戶機判斷自己所在的nat環境。現在假設客戶端和server的通訊都沒問題,客戶端知道自己所處環境,...