該方案如下。我有兩臺機器A和B: 答:客戶端(後面NAT) B:服務器(NAT後面)如何在不需要任何重定向配置的情況下使TCP服務器在路由器(NAT)後工作
我想B到能夠聽任何給定的端口上,從而使A發送的數據包,通過給B該特定的TCP端口並接收任何響應。如果兩臺機器都不在NAT後面,那麼這是非常直接的過程。然而,我如何使它工作,使其即使在B路由器後面也能正常工作,而無需他去更改路由器配置啓用某些端口轉發等等。
例如,點對點像洪流客戶端程序沒有用戶有任何配置工作?
該方案如下。我有兩臺機器A和B: 答:客戶端(後面NAT) B:服務器(NAT後面)如何在不需要任何重定向配置的情況下使TCP服務器在路由器(NAT)後工作
我想B到能夠聽任何給定的端口上,從而使A發送的數據包,通過給B該特定的TCP端口並接收任何響應。如果兩臺機器都不在NAT後面,那麼這是非常直接的過程。然而,我如何使它工作,使其即使在B路由器後面也能正常工作,而無需他去更改路由器配置啓用某些端口轉發等等。
例如,點對點像洪流客戶端程序沒有用戶有任何配置工作?
代理服務器的替代方案是匹配服務器。而不是代表所有的交通,比賽制造商只是談判,直到同行可以相互交談。這涉及找到對等體的外部公共IP並且與每個對等體交談,以便防火牆/路由器知道對等體希望進行通信。
這被稱爲hole punching,它通常必須由比賽制造者而不是同齡人自己完成。一旦洞被打破,比賽制造者可以告訴同伴彼此之間,他們可以直接溝通。
像這樣的AFAIK孔打孔只適用於UDP - 並且只有在路由器上的UDP端口映射一致的情況下。 – 2009-10-02 22:31:56
啊..他的確在問題中說TCP .. – 2009-10-02 23:59:52
我讀過關於打孔的問題,請問TCP打孔的工作情況如何?這可能不是那麼容易實現,但我會試一試,因爲這似乎是我正在尋找的。 謝謝。 – Chetane 2009-10-03 00:16:27
你將不得不要麼:
從前面的NAT 網關設置端口轉發服務器到機器的服務器軟件正在運行,並讓客戶端 連接到的IP地址那 網關。
創建一個代理服務器,坐在 其間的2個NAT gatewys這樣既 您的服務器和客戶端可以連接 這一點。您的服務器和客戶端 都必須建立到該代理的連接,該代理將調解這兩個連接之間的數據 。
嗨, 我曾經設想過這個解決方案,這個解決方案的唯一問題是代理上的負載會相當大,這代價很高。 – Chetane 2009-10-03 00:15:04
要回答同行的例子等程序,和一般:有一個叫Universal Plug and Play技術,NAT路由器可以使用,讓他們後面的客戶端暴露端口到外部。這就是BitTorrent客戶端可以使用的,以便其他客戶端可以直接連接到它們。
但不是UPnP只是自動化端口轉發自動化的一種方式? – 2009-10-02 20:27:26
關鍵是自動化* - 我認爲問題中的'他'是用戶。避免手動設置端口轉發既是UPnP的優點也是危險。 – 2009-10-02 22:30:54
對於UDP通信,打孔技術的理解程度一般,但它也可以可靠地用於設置點對點TCP流。這裏是TCP和UDP井詳細的文章:
您可能對serverfault.com – NotMe 2009-10-02 20:18:07
更好的運氣我認爲這個問題是怎麼寫的服務器後面NAT的工作,而不是如何配置它。 – 2009-10-02 20:20:20