4
我嘗試製作一個P2P程序,並需要獲取客戶端NAT的幫助。 我在這裏閱讀了很多關於stackoverflow的問題,但我從來沒有得到通過NAT獲得所有方法的缺點和好處。 有多少路由器支持哪種方法? 大公司常用哪些方法? (BitTorrent,TeamViewer,...) 我列出的三種方法的缺點/好處有哪些?UDP/TCP打孔vs UPnP vs STUN vs?
我嘗試製作一個P2P程序,並需要獲取客戶端NAT的幫助。 我在這裏閱讀了很多關於stackoverflow的問題,但我從來沒有得到通過NAT獲得所有方法的缺點和好處。 有多少路由器支持哪種方法? 大公司常用哪些方法? (BitTorrent,TeamViewer,...) 我列出的三種方法的缺點/好處有哪些?UDP/TCP打孔vs UPnP vs STUN vs?
UPnP需要在您的路由器中提供軟件支持。即使路由器擁有它,但由於安全問題,它有時會關閉。
STUN使用一個簡單的公共服務器來檢測NAT和真實IP地址的存在。這對於執行有用工作的其他更高級別的協議很有用。
打孔是一種連接兩臺計算機的簡單技術。它需要第三臺公用計算機在NAT後面的兩臺計算機之間進行通信。您可以使用自定義協議運行自己的服務器,我們可以使用STUN和現有的STUN服務器。 (只需要幾個數據包進行設置,其餘的是對等的)。
當然,一些NAT防火牆與上述不兼容,所以您可能需要自定義協議。 Bittorrent做到這一點:他們使用不同的技術,取決於哪些客戶端在防火牆後面以及什麼。