首页 文章

UDP打孔:一个Symmitric和另一个非对称NAT

提问于
浏览
4

我试图用打孔实现P2P . 这是流程:

  • 两个对等体(P1,P2)将向服务器(S)发送1个数据包 .

  • 服务器(S)回复告诉其他人IP:PORT

  • P1和P2接收此UDP数据包,知道其他的外部/公共IP:端口 .

  • P1,P2开始向其他对等公共IP发送数据包:PORT .

  • 一旦对等体接收到其他对等体的数据包,我认为该洞被打孔并将该套接字提供给我的应用程序 .

我在不同的路由器上测试了这个,结果如下:

  • 当P1和P2都在非对称NAT(Full / Restricted cone)上时,我没有遇到任何问题 .

  • 当P1 =非对称且P2 =对称时:

  • ----- router-1(Symmetric-NAT)router-2(非Symmtric)=成功

  • ---- router-3 (Symmetric-NAT) + router-2 (non-Symmtric) = Failure

直到第四步它的罚款 . 但是在第5步中,没有对等体接收到其他对等体的数据包 . 我原以为至少 *'peer behind non-Symmetric NAT' 会收到其他的包 . *

有人知道发生了什么事吗?

1 回答

  • 1

    有一篇论文here

    基本上他们使用两个服务器S1和S2 .

    通过查看出站端口,他们通常能够预测当P1向P2发送数据包时将使用哪个出站端口,反之亦然 .

    显然,许多路由器只使用递增/递减或一些跳过大小

    无法保证预测正确的端口 . 他们最终将一堆数据包发送到不同的端口,希望能够通过 .

    我有一个不同的想法如何处理它,我需要找到一个对称NAT来测试它:)

相关问题