几种类型的NAT归纳和特性总结

理论上学习了几种NAT类型和特性,在此进行总结,希望能更通俗易懂。有机会再亲自测试~

 

类型介绍

完全锥形NAT:

当内部主机以自身源地址(二元组)向NAT建立连接,该NAT会为该内部主机源地址分配一个外部地址,并建立映射,从此从对应内部主机地址发送来的数据包都将直接通过相映射的外部地址转发出去,当内部主机需要与目标主机进行通讯,需要将NAT映射的外部地址发送给目标主机,之后即可建立一个(>)二次路由的信息通路,NAT会将任何主机发送到该外部地址的包直接转发给映射的内部主机。

限制型锥形NAT:

建立映射的过程与完全锥形一致,由NAT内部主机往外发的过程也是一致的。区别在后边,想象NAT会维护一个表B来记录该组映射对应的从内向外发过包的目标IP地址,此时如果NAT收到了外部网络上发往NAT上某外部地址的包,NAT不会直接将该包转发到外部地址映射的内部主机,而是会检查该包的源IP地址是否存在于表B,如果不存在,将丢弃该包,不进行转发。

端口限制型锥形NAT:

相比限制型锥形NAT,其区别在于表B中多出一个端口字段,即如果之前内部主机有往某目标地址和端口发送包,那么NAT才会将由该目标地址和端口发送来的包转发给对应内部主机,否则将直接丢弃,不进行转发。

对称型NAT:

前面几种锥型NAT进行的地址映射过程都与目标地址无关,而对称型NAT会考虑到某次通信涉及到的目标地址,即针对同一主机向不同目标地址发起的通信行为,NAT会为该内部地址做不同的外部地址映射,这种不同的地址映射具体表现在将为该内部地址分配不同的外部IP(当NAT具备多个外部网卡)或不同的端口。如此一来,如果外部网络上某远端主机想要与NAT内部主机进行通信,即便它知晓该内部主机在NAT上对应的某个外部地址,直接向该地址发送包,NAT也不会为其转发。

 

类型判断

不难发现,除了完全锥型NAT是为了解决IPV4地址不足而出现的NAT解决方案,其他几种类型都是为了提升NAT穿透通信的安全性,那么在进行P2P通信之前,就需要检测下内部主机所属的NAT类型了,可遵循以下步骤。

步骤一:

判断该内部主机是否能够进行UDP通信。通过内部主机向外部网络上某节点的IP-1/port-1发送一个请求包req-1,要求该节点通过IP-1/port-1返回它所收到本次req-1对应的源IP和port信息,内部主机发送请求之后开始准备接收响应消息,需要设置一个超时时间放置无限阻塞,重复以上过程几次,如果能收到响应那么两者间是UDP通路;反之如果每次都超时,不能收到外部节点的响应,那么说明两者的UDP不通(网络链路问题或防火墙)。

步骤二:

内部主机能够与外部网络进行UDP通信,进一步判断它是否位于外部网络或是位于NAT之后。步骤一中内部主机收到req-1对应的res-1,通过对比消息体中携带的源IP/port和本身内部IP/port,如果一致,那么说明该“内部”主机直接位于目标“外部”网络之内,可以通过自身IP和port与该网络上主机进行通信,否则该内部主机就是位于NAT之后。

步骤三:

判断所属NAT是否是完全锥型NAT。通过内部主机向外部网络某节点的IP-1/port-1发送请求包req-2,要求该节点通过IP-2/port-2返回一个响应res-2,内部主机发送请求之后开始准备接收响应消息,需要设置一个超时时间放置无限阻塞,重复以上过程几次,如果能够收到res-2则说明所属NAT是完全锥型;反之如果每次都超时,不能收到外部节点的响应,那么说明所属NAT不是完全锥型。

步骤四:

判断所属NAT是否为对称型。通过内部主机分为两次地分别对外部网络节点的iP-1/port-1和IP-2/port-2发送请求包req-3/req-4,要求该外部节点返回的响应中携带所收到请求的源IP和port信息,因为响应消息中携带的地址信息属于NAT映射过的地址,可通过对比两个响应中的地址信息,如果二者的IP或port至少有一个不相同,那么说明该NAT是对称型。

步骤五:

判断所属NAT是单纯限制型NAT还是进一步的端口限制型。通过内部主机对外部网络节点的IP-1/port-1发送请求包req-5,要求该外部节点通过IP-1/port-3发送响应回来,如果内部主机能够收到该响应,则说明NAT是限制型,但不是端口限制型,反之则是端口限制型。

 

穿透性

通过对以上NAT类型的学习,只考虑被动穿透连接,有如下结论:

1.完全锥型NAT穿透性最强,外部主机只需要知道对应外部地址即可建立通信;

2.限制型NAT次之,只能被收到过内部主机通信包的外部主机建立通信;

3.端口限制型NAT再次之,多了端口约束;

4.对称型NAT不能被穿透,除了之前被内部主机主动建立过通信过程;

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值