我正在尝试使用打孔实现 P2P。这是流程:
- 两个 Peers(P1,P2) 都会向服务器 (S) 发送 1 个数据包。
- 服务器(S)回复两个告诉其他人 IP:PORT
- P1 和 P2 接收到知道其他人的外部/公共 ip:port 的 UDP 数据包。
- P1,P2 开始向其他对等点发送数据包公共 IP:PORT。
- 一旦对等方收到其他对等方的数据包,我假设该孔已打孔并将此套接字提供给我的应用程序。
我在不同的路由器上进行了测试,结果如下:
- 当 P1 和 P2 都在非对称 NAT(全/受限锥)上时,我不会遇到任何问题。
- 当 P1=非对称且 P2=对称时:
- -----router-1 (Symmetric-NAT) + router-2 (non-Symmtric) = 成功
- ---- router-3 (Symmetric-NAT) + router-2 (non-Symmtric) = *失败*
直到第四步都很好。但在第 5 步中,没有一个对等方收到其他对等方的数据包。我期待至少* '非对称 NAT 后面的对等方'会收到其他的数据包。*
有人知道发生了什么吗?