我正在尝试使用打洞技术实现P2P连接。以下是流程:
- 两个点对(P1,P2)都向服务器(S)发送1个数据包。
- 服务器(S)回复,告知另一个点对的IP和端口。
- P1和P2接收到此UDP数据包,知道了对方的外部/公共ip:port。
- P1和P2开始向其他点对的公共IP:PORT发送数据包。
- 一旦点对接收到了其他点对的数据包,我就假设打洞成功,并将此套接字交给应用程序。
- 当P1和P2都在非对称-NAT(完全/受限锥体)中时,我没有遇到任何问题。
- 当P1=非对称,P2=对称时:
- -----路由器-1(对称NAT)+路由器-2(非对称)=成功
- -----路由器-3(对称NAT)+路由器-2(非对称)=*失败*