2012-07-07 135 views
1

我正在開發一個項目,我必須通過互聯網在計算機之間發送信息。通常顯而易見的解決方案可以確保在端口轉發方面沒有太多模糊的問題。但是,我注意到Skype等應用程序能夠打開這些連接,而無需使用戶端口(大多數情況下)。我注意到這一點,當你能夠使用諸如netstat之類的工具檢索通話另一端的人的IP時。沒有端口轉發的兩臺計算機之間如何進行通信?

所以我的問題是:怎樣的Skype,和「其他」的應用,能做到這一點? 「普通」路由器有多開放?

注:我沒有很多機會了解網絡,這可能是微不足道的,但如果你有什麼好的讀取與網絡相關的主題或任何東西,我將感謝。

+0

這不是一個編程問題。 – Rich 2012-07-07 14:54:35

+0

也許,我應該問哪裏?我嘗試了安全性,但得到了同樣的迴應。 – Root 2012-07-07 14:58:36

回答

0

沒關係,顯然這是使用中間服務器,其經紀人的連接來完成。

1

Skype使用了一個名爲「打孔」通過防火牆來獲得技術。

我寫了一個很長的描述here。從該:

一般來說,打孔具有以下要求:

  • 外部,公共服務器是用於初始連接的目標,並且其有助於協調連接過程。
  • NAT後面的兩位同事最終將直接連接。
  • NAT實現方式是寬鬆的交通,他們接受,而且這是在他們是如何運作預測的。
  • 一個協議(如TCP),它在它接受的流量中是寬鬆的,特別是使用狀態機和消息,這些消息比服務器/客戶機角色在更高級別假定爲 更加對稱。

的一般過程(牢記,這僅僅是一個草圖) 爲衝孔是:

  • 對等體連接到中央,公共服務器並同意在其上對將連接。
  • 中央服務器標識,對於每一個NAT,如何未來傳出連接被創建時(當一個對等體作出穿過NAT傳遞
    然後端口必須打開上的NAT接收 的響應的連接;通常使用的端口號是連續的)。

(實際上,上面的細節是TCP打孔。這是可能的Skype使用UDP,但總的想法是相似的)。

相關問題