NAT网络地址转换技术(网络层学习笔记)
NAT基本概念
NAT(Network Address Translation),中文名唤作网络地址转换,诞生于IP地址匮乏的时代。
NAT的基本思想是ISP(Internet服务提供商)为每个家庭或者公司分配一个IP地址,这个IP地址用作Internet流量的传输,也就是大家常说的外网IP地址或者公网IP地址。在客户网络的内部,每台计算机有唯一一个IP地址,即内网IP地址,这些地址主要用于路由内部流量。当一个数据包离开客户网络发送至其他ISP时,需要进行地址转换,把唯一的内网IP地址转换成外网的IP地址。
这种地址转化使用IP地址的三个范围,这些地址已被声明私有化,任何内网中的设备可以任意使用这些地址,但是在这三个范围内的IP地址不允许出现在Internet(外网)上,这三个保留的地址范围是:
10.0.0.0~10.255.255.255/8
172.16.0.0~172.31.255.255/12
192.168.0.0~192.168.255.255/16
他们分别可以容纳16777216、1048576、65536台主机。一般家里用无线路由器,就用到了网络地址转换技术,我们连上wifi后分配的IP地址一般是以172或192为开头。学校或者大企业里面的网络可能会用到10开头的地址范围。
NAT技术的工作结构如下:
NAT作用
IPv4过渡到IPv6的过程较为缓慢,NAT可以作为解决IP地址短缺问题的一种有效快速补救办法。
NAT的四类应用领域
(1)ISP、ADSL、有线电视地址分配
(2)移动无线接入地址分配
(3)需要严格控制访问的内部网络
(4)与防火墙相结合的应用
NAT的工作原理
如下图所示,如果内部ip地址为10.0.1.1的主机希望访问互联网上地址为135.2.1.1的Web服务器,它产生一个源地址S=10.0.1.1、端口号为3342以及目的地址D=135.2.1.1、端口号为80的分组1。
当分组1到达执行NAT功能的路由器时,它将分组1的源地址从内部专用地址转换成可以在外部互联网上路由的全局ip地址,转换结果构成的分组2为“S=202.0.1.1,5001 D=135.2.1.1,80”。
NAT软件通过维护一张源(IP地址,端口)到目的(IP地址,端口)的转换表,就可以完成互联网IP数据报到专用网IP数据报的内容转发。
需要注意的是,分组1的专用地址从10.0.1.1转换成201.0.1.1,同时传输层客户进程的端口号也需要转换,本例中是从3342转换成5001。
转换端口号的原因是:一些应用程序在执行过程中可能需要在源地址与目的地址之间交换UDP协议的数据。根据传输层进程通信的规定,TCP与UDP协议的端口号分配不同。由于TCP与UDP协议的端口号是变化的,因此必须同时考虑IP地址与端口号的改变。
NAT可以分为“一对一”(静态NAT)和“多对多”(动态NAT)两类。“一对一”即一个内部ip地址对应一个公用ip地址,“多对多”即多个内部ip地址对应于同一个公用ip地址,然后将多个被共享的公用ip地址放在一个全局ip地址池中。
对NAT的评价
(1)违反IP地址结构模型设计原则(地址结构基础是每个IP均标识一个网络接入)
(2)NAT需要额外增加一个端口信息,并通过NAT转换表完成标识一个网络接入
(3)由无连接变成有连接(维持专用/公用IP、端口号映射关系,互联网变脆弱)
(4)破坏TCP/IP分层结构原则(修改分组头)
(5)给P2P应用实现带来困难(破坏文件/语音共享机制)
(6)高层协议安全性有影响