什么是NAT地址转换技术
NAT地址转换技术是一种解决IPV4地址不够用的方案。
在介绍 IP协议 的时候,曾经介绍过私有IP和公有IP的概念,在同一个局域网中的主机之间通信使用的是私有IP。但是当一个局域网内的主机想要和局域网外的主机进行通信时就不能再使用私有IP了,因为不同的局域网中很可能存在相同的私有IP地址,如果使用私有IP通信不就冲突了。
既然不能使用私有IP就只能用公有IP了,难道要给这个主机分配一个公有IP,显然这时不实际的,因为公有IP根本不够用,不可能给每台主机都分配公有IP地址。NAT地址转换技术
就是解决这个问题的。
怎样实现地址转换
NAT地址转换技术要求连接到因特网
的路由器上安装NAT程序(没连接到因特网自然就不用)。装有NAT软件的路由器叫又做NAT路由器
,NAT路由器至少有一个公有IP。这样,所有使用本地地址的主机想要和外界进行通信时,都要在NAT路由器上将本地地址转换为公有IP
,才能和因特网进行通信。
如图给出了NAT路由器的工作原理,在图中,专用网192.168.0.0
内所有主机的IP地址都是本地IP地址192.168.x.x
。NAT路由器至少有一个公网IP,才能和因特网相连。途中NAT路由器的公网IP 172.28.1.5
(路由器也可以具有多个公网IP)。
转换过程分析
NAT路由器收到从专用网络内部的主机A发往因特网主机B的数据报:源IP地址:192.168.0.3
,目的地址:213.18.2.4
。NAT路由器把IP数据报的源IP地址192.168.0.3
,转换为新的源IP地址(NAT路由器的公网IP213.18.2.4
)。当主机B接受到数据报时以为主机A的IP地址就是213.18.2.4
。因此主机B给主机A发送数据就会将IP数据报首部的目的IP填写为这个NAT路由器的公网IP。
实际上,即使主机B知道了主机A的私有IP,也并不能向这个私有IP发送数据,因特网上的路由器发现目的IP是一个私有IP时,就会将数据丢掉
。
由此可见,一个局域网内的所有主机都使用同一个NAT路由器来和因特网上的主机进行通信,NAT路由器的公有IP数量远小于局域网主机数量,因此只能轮流使用
公有IP,从而节省了公有IP。
NAPT
在上面的过程分析中,主机B给主机A发送的数据通过NAT路由器的公有IP发送给了NAT路由器,可是NAT路由器怎么知道这个数据应该交给局域网的哪个主机呢?
NAPT
就是解决这个问题的,P 指的就是端口号。
这时在重新看另一张图,私有IP世界的客户端A和客户端B都想发送数据给163.221.120.9
,于是在NAT路由器中将他们的私有IP转换为公有IP,并通过端口号的方式来区分是哪个主机在发送数据
10.0.0.10:1025 ==> 202.244.174.37:1025
10.0.0.11:1025 ==> 202.244.174.37:1026
当NAT路由器收到主机163.221.120.9
回复的数据时,就可以通过转换表中的映射关系来确定应该将数据交给局域网的哪台主机。
NAT 依赖路由表带来的问题
- 无法从NAT外部向局域网内部建立连接
- 转换表的生成与转换操作会带来一定的开销
- 通信过程中一旦NAT路由器异常,局域网和NAT外部建立的所有连接都将断开
参考书籍:《图解TCP/IP》 《计算机网络第五版》