5

我想了解当端口受限锥形 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 如何接收来自同样在受限锥形 NAT 后面的 B 的数据包?

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

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

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

先感谢您。

4

4 回答 4

3

仅供参考,这是一篇解决您的问题并提供 NAT 详细概述的论文。此处提供 pdf 版本。

于 2011-11-04T05:30:01.547 回答
1

首先,受限制的锥形 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?

他们不会在你的情况下。

于 2011-11-04T00:17:55.243 回答
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是如何工作的,这就是你要找的

于 2013-04-20T00:04:11.787 回答
0

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

于 2014-06-26T03:24:11.960 回答