關於P2P打洞

2021-07-04 18:08:37 字數 869 閱讀 2567

處於不同nat之後的客戶端通訊

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

假如這個時候 client a 想與 client b建立一條udp通訊直連,如果 client a只是簡單的傳送乙個udp資訊到client b的公網位址138.76.29.7:31000的話,nat b會不加考慮的將這個資訊丟棄(除非nat b是乙個 full cone nat),因為 這個udp資訊中所包含的位址資訊,與client b和伺服器s建立連線時儲存在nat b中的伺服器s的位址資訊不符。同樣的,client b如果做同樣的事情,傳送的udp資訊也會被 nat a 丟棄。

假如 client a 開始傳送乙個 udp 資訊到 client b 的公網位址上,與此同時,他又通過s中**送了乙個邀請資訊給client b,請求client b也給client a傳送乙個udp資訊到 client a的公網位址上。這時client a向client b的公網ip(138.76.29.7:31000)傳送的資訊導致 nat a 開啟乙個處於 client a的私有位址和client b的公網位址之間的新的通訊會話,與此同時,nat b 也開啟了乙個處於client b的私有位址和client a的公網位址(155.99.25.11:62000)之間的新的通訊會話。一旦這個新的udp會話各自向對方開啟了,client a和client b之間就可以直接通訊,而無需s來牽線搭橋了。(這就是所謂的打洞技術)!

P2P打洞原理

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

P2P打洞中遇到的問題

裝置a通過一台聯通的路由器上網,裝置a通過有線連線路由器 裝置b是一台手機是移動2g 協助伺服器是電信網路 附 裝置a和裝置b經過ip.cn 測試發現各自的外網位址是 裝置a 221.4.212.2,聯通ip,相對固定 裝置b 117.136.33.128,移動ip,手機網路經常變動 但是通過伺服器...

認識P2P,利用P2P

是peer to peer的縮寫 好象還看到過文章說是point to point,我也不清楚,網上的資料也不清楚,鬱悶 peer在英語裡有 地位 能力等 同等者 同事 和 夥伴 等意義。這樣一來,p2p也就可以理解為 夥伴對夥伴 的意思,或稱為對等聯網。目前人們認為其在加強網路上人的交流 檔案交換...