运维开发网

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

运维开发网 https://www.qedev.com 2020-07-09 18:59 出处:网络 作者:运维开发网整理
我正在尝试用Hole Punching实现P2P.这是流程: >两个对等体(P1,P2)将向服务器(S)发送1个数据包. >服务器(S)回复告诉其他人IP:PORT > P1和P2接收此UDP数据包,知道其他的外部/公共IP:端口. > P1,P2开始向其他对等公共IP发送数据包:PORT. >一旦对等体接收到其他对等体的数据包,我认为该洞被打孔并将该套接字提供给我的应用程序. 我在不同的路由器上
我正在尝试用Hole Punching实现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(非Symmtric)= *失败*

直到第四步它的罚款.但是在第5步中,没有对等体接收到其他对等体的数据包.我原以为非对​​称NAT后面的至少*’对等体’会收到其他的数据包.*

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

有一篇论文 here

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

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

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

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

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

0

精彩评论

暂无评论...
验证码 换一张
取 消