為什麼 p2p 連線不需要開放埠?

為什麼 p2p 連線不需要開放埠?

我的意思是,如果有人從我這裡下載文件,這是否意味著我是主機並且他正在連接到我?

還是我與他有聯繫?

無論哪種方式,我們都需要一個開放的端口,不是嗎?

我的路由器中沒有任何到我的電腦的開放連接埠路由,那麼我如何接受連線?

答案1

如果您的路由器支援 UPnP,則您正在使用的 p2p 應用程式可能正在路由器上開啟端口,而無需您手動設定開啟的連接埠。

維基百科 UPnP

否則,您的應用程式可能正在使用稱為 NAT 遍歷的過程,這在 p2p 應用程式和遠端桌面應用程式(例如 GoToMyPC 或 Hamachi)中很常見。該技術旨在透過網路位址轉換來運作,網路位址轉換被視為防火牆,但也是讓專用網路在互聯網上共享單一 IP 位址(路由器使用的位址)的一種手段。

維基百科 NAT 穿越

答案2

在像 BitTorrent 這樣的協定中,只要連接的兩側之一將連接埠轉送打開,開放側將始終充當主機。如果雙方都開放,則任一端都可以是「主機」。如果雙方都關閉,則需要具有開放連接的第 3 方來協商連接,這就是 Skype 之類的方法(第 3 方稱為超級節點)

這是一篇很好的部落格文章解釋 Skype 如何使用超級節點以及如何使用它來繞過防火牆。

答案3

我會將開放埠與電話號碼進行比較。

想像一下,您可以撥打電話,但沒有接聽電話的電話號碼。

對於雙方互相通話(或一方一直通話)來說,誰實際撥打並不重要。重要的是,他們中至少有一個人有電話號碼,然後另一位夥伴就可以打電話給他。

如果他們都沒有電話號碼,則在某些系統中使用超級節點,它可以是接收兩個呼叫的朋友,每個呼叫來自他們一個,並將它們連接在一起。如果雙方都沒有電話號碼,這是唯一的通話方式。問題是,對話會受到這位超級節點朋友的電話線路品質的限制。

我希望這個類比能讓您更容易理解這 3 種可能的情況。

相關內容