介绍
常见的NAT分为
- 完全锥形NAT,NAT1
1
只要内网主机通过NAT开通一个“洞”,任何外网主机都可以通过这个“洞”访问内网主机
- IP限制型锥型NAT,NAT2
1 | 内网主机通过NAT开通一个“洞”,只有内网主动连接的外网主机可以通过这个“洞”访问内网主机 |
- 端口限制型NAT,NAT3
1 | 内网主机通过NAT开通一个“洞”,只有内网主动连接的外网主机的端口发出的请求才可以通过这个“洞”访问内网主机 |
- 对称型NAT,NAT4
1 | 和端口限制型的区别在于,内网主机对外的每个连接都会使用不同的端口,而端口限制型对外的每个连接都会使用相同的端口 |
- 动态NAT,NAT5
1 | 动态NAT是指,内网主机在主动连接外网时为NAT3,主机被动连接外网时为NAT4。 |
常规的NAT类型检测方法
目前常规的NAT类型检测方法,需要最多5步
优化后的检测方法
腾讯公司一篇专利中介绍的优化方法,一次探测就可以完成NAT类型的检测,但不支持NAT5类型:
1 | 一、client 发送a、b请求给stunA的X、Y端口 |
支持NAT5
对检测方法进行优化,增加一个过程:
1 | 在检测到NAT3类型时,再进行一次探测,增加a`消息,并对5的回应消息的porta`和portb进行比较;如果porta`==portb,NAT3类型;否则NAT5类型。 |
现实场景
NAT3、NAT4为目前NAT的主要类型