【问题标题】:udp hole punch and port restricted cone NATudp 打孔和端口限制锥形 NAT
【发布时间】:2011-12-21 00:29:47
【问题描述】:

我想了解当端口受限锥形 NAT 后面的两台主机分别建立连接时 udp 打孔的工作原理。

据我了解,它分几个阶段进行,涉及三个主机。

主机 A 和主机 B 位于端口受限锥形 NAT 之后。

主机 C 是一个服务器,可以接收来自主机 A 和 B 的数据包。

  1. A 向 C 发送数据包。
  2. C 从 A 接收数据包并确定 A 的外部地址:端口对
  3. B 向 C 发送一个数据包。
  4. C 收到 B 的数据包并确定 B 的外部地址:端口对
  5. C发送外部地址:B的端口给A
  6. C 发送外部地址:A 的端口给 B
  7. A 将 packet_1 发送到 B 的外部地址
  8. B 将 packet_2 发送到 A 的外部地址

问题是:

受限锥形 NAT 后面的 A 如何接收来自 B 的数据包,而 B 也位于受限锥形 NAT 后面 受限锥形 NAT?

端口受限的锥形 NAT 不允许接收源地址:端口对与它发送的数据包的目标地址:端口对不匹配的数据包。为什么 A 和 B 之间发送的其他数据包到达 A 和 B?

是不是因为端口受限的锥形NAT认为packet_2是来自B的响应?

所以 packet_1 会丢失,但 packet_2 会到达 B。我说的对吗?

提前谢谢你。

【问题讨论】:

    标签: udp nat hole-punching


    【解决方案1】:

    仅供参考,这里有一个paper,可以解决您的问题并提供 NAT 的详细概述。 here提供pdf版本。

    【讨论】:

      【解决方案2】:

      首先,受限的锥形 nat 意味着如果 A 与 C 对话,假设 B 在 nat 后面,B 不能使用 A 和 C 之间的打孔与 A 通信。意思是,在这种情况下,nat 遍历不起作用。

      限制锥 NAT 后面的 A 如何接收来自 B 的数据包 哪个也在受限锥形 NAT 后面?

      在这种情况下,这是一种不同的情况,称为发夹条件。换句话说,nat 后面的 B 可以使用 nat 后面的 A 的翻译地址吗?一些 nat 能正确处理这种情况,而另一些则不能。

      在您的情况下,即使您的 nat 正确处理发夹条件,由于“受限锥”,B 的数据包也不会被转发。所以,结果是一样的。

      为什么在 A 和 B 之间发送的其他数据包到达 A 和 B?

      他们不会在你的情况下。

      【讨论】:

        【解决方案3】:
        A sends packet_1 to B's external address
        B sends packet_2 to A's external address
        
        
        How can A behind the restricted cone NAT receive a packet from B which is also behind the restricted cone NAT?
        
        Is it because the port restricted cone NAT considers packet_2 as the response from B?
        
        So packet_1 will be lost but packet_2 arrives to B. Am I right?
        

        你说得对,请阅读skype works,这就是你要找的东西

        【讨论】:

          【解决方案4】:

          我写了一个:PyPunchP2P。看看有没有人可以使用。

          【讨论】:

            猜你喜欢
            • 2016-12-11
            • 2013-10-05
            • 2011-11-27
            • 2011-11-27
            • 2016-02-18
            • 2012-09-20
            • 2013-03-27
            • 2012-07-18
            • 2017-08-27
            相关资源
            最近更新 更多