为什么以这种方式进行TCP打孔并不起作用?

时间:2016-11-28 06:16:14

标签: tcp nat

我对NAT表的理解是

  1. 仅NAT表映射(专用IP:端口) - > (公共知识产权:港口)
  2. 它并不关心协议或套接字连接
  3. 通过这种方式,我认为可以通过重用本地端口来完成TCP打孔。

    1. 主机A后面的NAT连接到服务器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. 然后,我认为任何客户端都可以使用已映射的对(192.0.0.1:100 - > 121.0.0.1:200)连接到主机A(从服务器获取121.0.0.1:200) 因为NAT表只考虑dest IP和端口而不是源IP和端口。
    4. 但是这样做很有效!我找到了其他复杂的实现,但我很好奇这是什么问题。

1 个答案:

答案 0 :(得分:0)

好的,如果有人到达这里,请阅读https://en.wikipedia.org/wiki/Network_address_translation

中的“翻译方法”部分