四种主要类型的完全圆锥型NAT Full Cone NAT限制圆锥型NAT Address Restricted Cone NAT端口限制圆锥型NAT端口restricted cone NAT对称型NAT(SymmetricNAT也称为双向NAT ),是大型企业的NAT
圆锥形NAT是指内部网机器a通过同一IP和端口连接到外部的任何计算机,从而将同一IP地址和端口映射到NAT服务器。 也就是说,同一内部网IP和端口在NAT上只有一个出口,是一对多的关系。 它由圆锥、一个点、一个面构成。
对称NAT是指内部网机器a的一个IP地址和端口访问不同的外部IP地址和端口时,会出现不同的映射。 也就是说,intranet IP端口与目标IP、端口是一对一的关系,任何变化都会改变映射。 在目前的Linux系统中是这种类型,安全性很高。
具体来说,哪种类型可以由进行NAT时的算法决定,在代码级别并不复杂。 如果你对四种类型不太了解,你可以在百度上看到。 很多文章都有配图,说得很好。 别多嘴,就这样上干货。
实现代码git clone https://gitee.com/Wang Xinyu 2011/NAT _ type _ check.git实现方案
1.
发送:客户机使用IP1、PORT1向服务器的IP3、PORT3发送数据。
返回:同时服务器返回接收(IP2,PORT2)。
如果(IP1,端口1 )等于) IP2,端口2,则不存在NAT。
否则,北约就存在了。
2.
发送:客户机使用IP1、PORT1向服务器的IP3、PORT3发送数据。 服务器要求NAT后的(IP2,PORT2)用IP4,PORT4)发送数据。
如果客户端可以接收数据,则返回完整连接
如果数据收不到,继续检查。
3.
发送:客户机使用IP1、PORT1向服务器的IP3、PORT3发送数据。 服务器要求NAT后的(IP2,PORT2)用IP3,PORT4)发送数据。
如果客户端可以接收数据,则为地址敏感的cone NAT
如果数据收不到,继续检查。
4.
发送:客户机使用IP1、PORT1向服务器的IP3、PORT3发送数据。
返回:同时服务器返回接收(IP2,PORT2)。
断开并重新连接WAN端口(删除连接跟踪表) ) )。
发送:客户机使用IP1、PORT1向服务器的IP3、PORT3发送数据。
返回:同时服务器返回接收(IP2,) _PORT2)。
如果(IP2,PORT2)与) IP2,_PORT2)相同,则为端口受限的cone NAT。
否则就是对称北约。