Ip

複雜多子網區域網路中的點對點通信

  • September 12, 2015

我們正在開發一個 P2P 應用程序並堅持在同一本地 LAN 但 2 個不同子網中的 2 個對等方之間進行通信的部分。

我們知道,在很多情況下,同一區域網路中的 2 台特定 PC 肯定是某些路由器設置的“不可連接”原因。我們正在嘗試的只是了解情況並找出我們能做的最好的事情。(在我們對網路的了解有限和您的幫助下)

考慮一個具有如下圖結構的 LAN。假設 LAN 是由我們的客戶設計的,而我們什麼都不知道。我們只是從安裝了我們程序的 PC 的角度觀察 LAN。因此,我們所知道的只是我們的本地 IP/子網遮罩和整個 LAN 的公共公共 IP。(其餘未知&顯示為雲)

在此處輸入圖像描述

我們有幾個問題非常適合任何答案:

  1. 假設當 PC1 多播一個數據包並且數據包以某種方式到達 PC2 時。PC2 將看到數據包發送方的 IP 地址:PC1 的本地 IP(如圖 192.168.1.111)還是 Router_A_1 或 Router_A 的外部 IP?
  2. 在#1 之後,如果 PC2 向 PC2 在#1 中看到的 IP 回复另一個數據包(單播),數據包會到達 PC1 嗎?
  3. 在#2 的全球情況下,PC1 和 PC2 用來向對方發送數據包的適當 IPAddress 是什麼?(或者這與我們在 NAT 路由器後面使用 2 台 PC 通過 Internet 執行的操作相同:upnp、打孔或中間超級節點?)
  4. 是否有任何情況下 PC1 和 PC2 被分配了相同的 IP 地址?如果是真的那麼:
  • 一種。這是一個“法律”案件嗎?
  • 灣。PC2 在#1 中看到並回答#2 的發件人 IP 呢?

更新附加問題:

  1. 如果 1 個對等點多播和數據包可以到達另一個對等點,那麼這 2 台 PC 是“單播的”,如果多播數據包無法到達另一個對等點,那麼 2 台 PC 注定要失敗,這是真的嗎?“單播->多播”是真的嗎?

我寫了很少的點對點應用程序,我可以告訴你,對等點的可達性是這類應用程序的主要問題。這裡有幾個指針:

  • 如果你使用 TCP,你唯一的希望就是 UPnP。但是,您不能假設它始終可用。事實上,UPnP (a) 主要由家庭網路路由器支持 (b) 它經常被禁用,因為人們認為它很少或沒有價值,因此對它的支持相當零星。如果您的客戶端位於 2 層路由器後面,每層路由器都進行自己的 NAT,那麼您的機會就更渺茫了。但是,如果您可以告訴您的客戶啟用 UPnP 或指定 UPnP 作為您的應用程序的先決條件,那麼這是一種可行的方法。
  • 另一種選擇是使用 UDP 並在路由器上打一個針孔,但您需要外部代理來跟踪對等地址並將主機身份與全域可訪問的 IP 地址匹配(在您的情況下,它可能會部署在“未知”中)。請注意,UDP 針孔的 TTL 通常很短(據我估計,它在 20 秒到 5 分鐘之間),因此您需要經常 ping 您的代理。UDP 的另一個問題是,如果您的應用程序交換大於 1 個數據包的數據位,您可能需要實現自己的流量控制協議。

希望這可以幫助。

引用自:https://serverfault.com/questions/720320