解读NAT网络穿透(二):NAT类型检测

根据https://blog.****.net/vainfanfan/article/details/90269554,NAT类型有四种:完全锥形、IP限制锥形、端口限制锥形、对称。

stun服务器检测nat类型的过程:
解读NAT网络穿透(二):NAT类型检测

检测过程

1.检测是否在NAT之后或者UDP socket是否阻塞
向IP1:PORT1发送数据包,要求IP1:PORT1返回数据包源地址和端口号,同时设置socket timeout,重复一定次数后,如果一直未收到数据包回复,表明UDP通信被阻塞。如果收到数据包,和自身的IP:port对比,如果相同,则表明没有经过NAT,不同则表明一个是外网IP,一个是内网IP,且经过NAT设备。

2、检测是否为完全锥形NAT
向IP1:port1发送数据包,要求IP2:port2向目的主机发送数据包,如果目的主机可以接收,表明是完全锥形NAT

3、检测是否为对称形NAT
向IP2:port2发送数据包,要求返回数据包的外网地址和端口号,将其与步骤1的外网地址和端口号对比,如果完全相同,则为限制锥形NAT或者端口限制NAT,否则为对称形NAT

4、检测是否为限制锥形NAT或者端口限制NAT
向IP2:port2发送数据包,由IP2:port3向源地址返回数据,如果可以收到,表明为限制锥形,否则为端口和IP限制锥形。