1. 目的
- 使两个使用了NAT的私有网络的Internet主机之间建立双向UDP连接。一般应用在p2p上
2. 具体流程
- 主机A登录QQ服务器,验证成功后获取好友列表信息
- QQ服务器登记主机A的NAT后的公网IP与端口
- 主机B登录QQ服务器,验证成功后获取好友列表信息
- QQ服务器登记主机B的NAT后的公网IP与端口
- 主机A想不经过QQ服务器直接发送消息给主机B,于是向QQ服务器请求获取主机B的公网IP与端口
- 主机A获得了主机B的公网IP和端口,然后发送udp消息给主机B
- 主机B的NAT因为收到陌生的IP发来的数据,默认会丢弃。所以主机A请求失败,此时主机A向QQ服务器发送信息,让QQ服务器帮忙对主机B进行通知。
- QQ服务器收到此请求后,将主机A转换后的公网IP地址发送给主机B,要求主机B连接
- 主机B收到QQ服务器的消息后直接向主机A发送请求
- 此时由于主机A的NAT已经存在主机B的session,所以此时主机A与主机B建立连接成功。
此后,主机A与主机B之间发送消息不再需要经过QQ服务器进行中转。