NAPT小细节

细节概述

NAPT在进行地址复用的时候,其端口的选择与发起NAT的主机所使用的包序号或是端口号有着一定的联系。我们可以这么理解,主机在发起NAT时,每发起一次会话便对应着一个NAT复用后的端口号,其主要依据还是看内网主机发送的报文的源端口,如果你使用ICMPping外网的主机,那么因为边界设备对ICMP报文进行NAPT的时候是根据它的序号来进行的,所以你会发现一次request和一次reply就会占用一个端口,但是如果你与外网主机建立TCP的连接,比如FTP,你会发现FTP的控制通道仅仅只占用一个端口,这是因为ICMP进程在发送ICMP的数据包的时候,它每次发出的ICMP的序号都是不同的,所以在进行NAT的时候它就会将其看待成是一个新的会话并为其分配一个新的端口,但是如果内网主机与外网主机进行FTP的控制通道的连接的时候,因为内网主机持续使用同一个端口与外网主机进行通信,所以在进行NAT的时候,为其分配的端口也是相同的。这是因为在NAT的设备上记录着一定时间的映射表,如果报文的源端口没有在映射表中就要新建立一个表项并为其分配一个端口,但是如果在一定时间内,我们的报文的源端口都是不变的,那么就不需要为其分配额外的端口,同时在一段时间内,内网需要进行nat的主机路由器会为其选择相同的公网IP地址。

原因

首先如果内网主机有持续性的通信,那么假设边界设备对其进行NAT时,其公网地址是随机选择,那么其结果就是地址的不断地变换,导致会话的不稳定。我们一次会话一个端口的机制,使得多种上层的TCP应用可以正常地工作。如果每个数据包进行一次端口地变换,那么根本连TCP都建立不起来。而且即便侥幸建立起来了,我们知道TCP是面向连接的,其相关工作都是为一条数据流服务,当内网主机与外网主机之间的端口不断变化就意味着流的不断变化,所以TCP的相关工作也会受到十分严重的影响。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mllllk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值