2016-11-28 21 views
0

我明白NAT表的是爲什麼以這種方式打孔的TCP孔不起作用?

  1. NAT表只映射(私人IP:端口) - >(公網IP:端口)
  2. 它不關心協議或插座連接

以這種方式,我認爲TCP打孔可以通過重用本地端口來完成。 NAT後面

  1. 主機A連接到服務器S,主機A的NAT映射其對

    Host A(192.0.0.1:100)   ->   NAT   ->   Server 
              (192.0.0.1:100 -> 121.0.0.1:200) MAPPED 
    
  2. 主機A將關閉該插座和相同的本地端口(100)

    上打開新的監聽套接字
    Host A(listening 192.0.0.1:100) ->   NAT   ->   Server 
              (192.0.0.1:100 -> 121.0.0.1:200) MAPPED 
    
  3. 然後,我想任何客戶端可以通過使用已經映射對連接到主機A(從服務器獲取121.0.0.1:200)(192.0.0.1:100 - > 121.0.0.1:200)
    由於NAT表只考慮目標IP和端口不是源IP和端口。

但是這並不奏效!我發現其他複雜的實現,但我好奇這是什麼問題。

+0

的杜佩:http://stackoverflow.com/questions/26694286/how-do-i-do-tcp-hole-punching – selbie

回答