为了能够进行udp打洞需要一台公网服务器,具体打洞步骤如下:

  • clientA固定udp包发送端口1198,clientB股东udp包发送端口1198。
  • clientA向server发起请求(此时NAT服务器绑定内外网端口),server端记录下clientA的外网IP和端口(1.1.1.1:111)
  • clientB向server发起请求(此时NAT服务器绑定内外网端口),server端记录下clientB的外网IP和端口(2.2.2.2:222)
  • 当clientA和clientB都接入后,server端把clientA的外网信息告知clientB,把clientB的外网信息告知clientA
  • 开始打洞,clientA向2.2.2.2:222发送第一个udp包,NAT B不知道将这个包转发给谁,丢弃。clientB向1.1.1.1:111发送第一个udp包,NAT A将该包转发给clientA。此时打洞完成。clientA和clientB建立通讯。
……

阅读全文