udp打孔和端口限制锥NAT

时间:2011-11-03 09:39:28

标签: udp nat hole-punching

我想了解当两个主机在端口限制锥形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的外部地址
  9. 问题是:

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

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

    是否因为端口受限锥形NAT将packet_2视为来自B的响应?

    所以packet_1会丢失但是packet_2会到达B.我是对的吗?

    提前谢谢。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

  

Resctricted锥形NAT后面的A如何从B接收数据包   这也是限制锥形NAT的背后?

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

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

  

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

他们不会在你的情况下。

答案 2 :(得分:0)

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如何,这就是你要找的东西

答案 3 :(得分:0)

我写过一篇:PyPunchP2P。看看是否有人可以使用它。