NAT和NAPT

NAT和NAPT引入原因

IPV4是一个32位的地址,最大容纳为 2 32,就这还包括了广播地址、网络地址等主机不可用的IP地址。也就是40多亿。现在全球电子设备的IP地址已经远远超过了40亿。所以IP地址不是不够用了吗?为什么现在的网络还好好的呢?

这都多亏了NAPT技术。

NAPT

在将NAPT之前,我们先讲下NAT。

我们都知道之前的一个路由器端口对应着一个网络。一个路由器端口连着多个主机,每个主机都和路由器端口处于同一网络,每个主机的IP地址都不一样,并且是全球唯一的。这样的话,IPV4地址肯定是不够用的。

假设一个网络有30个IP地址,如果按照传统的方式,那么最多只能支持30个主机。

而NAPT可以支持30个数量级的主机,是怎么做到的呢?

NAPT 将IP地址分为了私有地址和公网地址。

公网地址: 一个公有地址在全球都是唯一的。 公网地址由IANA 统一管理。如果使用需要申请。

一个路由器端口中有一个公用地址池,里面存放了多个公用地址。对于本例子,也就是30个公用地址。

私有地址: 一个私有地址可以在不同的网络中随便用。

不同公有网络中的私有地址是可以重复的。

对了,私有地址是可以分配给主机的。这样的话,一个私有地址可以被分配给多个主机。

那么其他主机给这些IP地址重复的主机发送数据的时候,要发给哪个主机呢?这不就乱套了吗?

NAPT的全称是 Network Address Port Translation,也就是网址端口转换。

NAPT的高明之处将 多个私有地址共享一个公网地址。

那么对于同一个公网地址怎么区分不同的私有地址呢?

通过端口号,不同的私有地址对应着同一个公网地址的不同端口号。

因为公有地址的端口号很多,可以同时容纳多个私有地址的映射。一个主机往往占用少量的端口。

路由器会将对应的映射关系存起来

在这里插入图片描述

NAPT传输数据流程

在这里插入图片描述

1、 比如主机A,发送的时候源IP地址为私有地址 192.168.1.10,源端口号为1025。
2、 当经过路由器转发的时候,会根据NAT转换表中的记录替换为对应的公网地址和端口。如果没有对应记录的话,就找到一个可用公网 120.229.175.121和对应的端口号1025,将其分别替换为源IP地址和源端口号。

3、 被替换过的数据包被发送到对应的服务器,然后服务器返回对应的数据包,数据包的目标地址为120.229.175.121,端口号为1025.经过路由转发,数据包回到了NAT路由器。

4、 回到NAT路由器后,路由器由于开启了NAT,所以会将数据包替换为私有地址192.168.1.10和其端口号1025。 然后查询私有地址对应的MAC地址,转发给对应的主机。

NAT

NAT和NAPT的本质是一样的,只不过NAT是一个私有地址对应一个公有地址,达不到节省IP地址的效果,只能起到隐匿内部IP地址的效果。

NAT ALG

ALG 是APPLICATION的简写,也就是应用层的意思。

NAT ALG主要解决了应用层数据中包括IP地址的问题。

比如FTP协议,FTP协议有两个连接,一个control连接用于控制,一个data连接用于传输实际数据。

FTP客户端首先会发起control连接,control数据包中带有data数据连接的IP地址ip1和端口号port1,FTP服务器会将数据发送到IP地址为ip1,端口号为port1的主机上。

这个ip1和port1都是对应的私有地址啊,并且还未通过NAT建立映射啊。FTP服务区无法将数据发送到对应的窗口中啊。

所以引入了NAT ALG机制,NAT ALG会检查数据包,如果是FTP之类的,数据包中带有私有IP地址信息,会将私有IP地址替换为对应的公网IP地址和对应的端口。

NAT穿透

上面的NAT有些问题,公网中的主机无法先发送数据给NAT内部的主机。

因为此时NAT内部的主机还未进行NAT转换。

NAT穿透就是用来解决这一问题的。

NAT穿透需要先引进一个中间服务器。

假如现在主机A和主机B想要通信。

**1、**主机A和主机B会首先将自己映射的公网IP地址和想要通信的主机地址发送给中间服务器。
2、 然后中间服务器将A对应的公网IP地址和A对应的私有IP地址发送给主机B。对主机A同样。
3、 经过中间服务器的这么一插手,主机A和主机B就交换了公网IP地址,就可以进行通信了。

总结

当网络中IP地址不能满足主机需求的时候,可以尝试用NAPT技术来解决这一问题。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值