gpt4 book ai didi

networking - UDP 打洞 : one Symmitric and another non-symmetric NAT

转载 作者:可可西里 更新时间:2023-11-01 02:33:07 24 4
gpt4 key购买 nike

我正在尝试使用打洞实现 P2P。这是流程:

  1. 两个 Peers(P1,P2) 将向服务器 (S) 发送 1 个数据包。
  2. Server(S)回复都告诉别人IP:PORT
  3. P1 和 P2 接收此 UDP 数据包,知道对方的外部/公共(public) ip:port。
  4. P1,P2 开始向其他对等端公共(public) IP:PORT 发送数据包。
  5. 一旦对等点收到其他对等点的数据包,我就认为这个洞已经打好了,并将这个套接字提供给我的应用程序。

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

  • 当 P1 和 P2 都在非对称 NAT(完整/受限锥形)上时,我没有遇到任何问题。
  • 当 P1=非对称且 P2=对称时:
  • -----router-1(对称 NAT)+ router-2(非对称)= 成功
  • ---- router-3(对称 NAT)+ router-2(非对称)= *失败*

直到第 4 步,一切正常。但是在第 5 步,没有对等点收到其他对等点的数据包。我原以为至少 *“非对称 NAT 后面的对等点” 会收到其他人的数据包。*

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

最佳答案

有一篇论文here

基本上他们使用两台服务器 S1 和 S2。

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

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

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

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

关于networking - UDP 打洞 : one Symmitric and another non-symmetric NAT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11557691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com