NAT本质上是一种允许在互联网的不同地方重复使用相同IP地址集的机制。
01.通过地址转换有效利用IP地址:
互联网发展的早期,没有内网和外网的区别,所有接入互联网的客户端都是直接连接到互联网的。但是随着接入互联网的设备越来越多,IPv4地址越发显得不够使用了。
举个例子,假设有A、B两家公司,它们的内网是完全独立的。这种情况下,两家公司的内网之间不会有网络包流动,即使A公司的某台服务器和B公司的某个客户端具有相同的IP地址也没有关系,因为它们之间不会进行通信。只要在每家公司自己的范围内,能够明确判断网络包的目的地就可以了,是否和其他公司的内网地址重复无关紧要,只要每个公司的网络是相互独立的,就不会出现问题。
解决地址不足的问题,利用的就是这样的性质,即公司内部设备的地址不一定要和其他公司不重复。这样一来,公司内部设备就不需要分配固定地址了,从而大幅节省了IP地址。当然就算是公司内网,也不是可以随便分配地址的,因此需要设置一定的规则,规定某些地址是用于内网的,这些地址叫作私有地址,而原来的固定地址则叫作公有地址。
私有地址的规则其实并不复杂,在内网中可用作私有地址的范围仅限于以下:
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
在制定私有地址规则时,这些地址属于公有地址中还没有分配的范围。换句话说,私有地址本身并没有什么特别的结构,只不过是将公有地址中没分配的一部分拿出来规定只能在内网使用它们而已。这个范围中的地址和其他公司重复也没关系,所以对于这些地址不作统一管理,不需要申请,任何人都可以自由使用。当然如果在公司内部地址有重复就无法传输网络数据包了,因此必须避免在内网中出现重复的地址。
尽管这样的确能节省一部分地址,但仅凭这一点还无法解决问题。公司内网并不是完全独立的,而是需要通过互联网和其他很多公司相连接,所以当内网和互联网之间需要传输数据包的时候,问题就出现了,因为如果很多地方都出现相同的地址,数据包就无法正确传输了。
于是当公司内网和互联网连接的时候,将公司内网分成两个部分:
- 一部分对互联网开放的服务器,分配
公有地址,可以和互联网直接进行通信。 - 对互联网不开放的公司内部设备,分配
私有地址,这些设备如果要和互联网进行通信得通过地址转换机制进行。
02.地址转换的基本原理:
地址转换的基本原理是在转发网络数据包时对IP头部中的IP地址和端口号进行改写。
03.改写端口号的原因:
现在我们使用的地址转换机制是同时改写地址和端口号的,但早期的地址转换机制是只改写地址,不改写端口号的。用这种方法也可以让公司内网和互联网进行通信,而且这种方法更简单。
但是使用这种方法的前提是私有地址和公有地址必须一一对应,也就是说,有多少台设备要上互联网,就需要多少个公有地址。当然访问动作结束后可以删除对应表中的记录,这时同一个公有地址可以分配给其他设备使用,因此只要让公有地址的数量等于同时访问互联网的设备数量就可以了。然而公司人数一多,同时访问互联网的人数也会增加。一个几千人的公司里,有几百人同时访问互联网是很正常的,这样就需要几百个公有地址。
改写端口号正是为了解决这个问题。客户端一方的端口号本来就是从空闲端口中随机选择的,因此改写了也不会有问题。端口号是一个16bit的数值,总共可以分配出几万个端口,因此如果用公有地址加上端口的组合对应一个私有地址,一个公有地址就可以对应几万个私有地址,这种方法提高了公有地址的利用率。
04.从互联网访问公司内网:
对于从公司内网访问互联网的包,即便其发送方私有地址和端口号没有保存在对应表中也是可以正常转发的,因为用来改写的公有地址就是地址转换设备自身的地址,而端口号只要随便选一个空闲的端口号就可以了,这些都可以由地址转换设备自行判断。然而对于从互联网访问公司内网的包,如果在对应表中没有记录就无法正常转发。因为如果对应表中没有记录,就意味着地址转换设备无法判断公有地址与私有地址之间的对应关系。
换个角度来看,这意味着对于没有在访问互联网的内网设备,是无法从互联网向其发送网络包的。而且即便是正在访问的设备,也只能向和互联网通信中使用的那个端口发送网络包,无法向其他端口发送包。也就是说,除非公司主动允许,否则是无法从互联网向公司内网发送网络包的。这种机制具有防止非法入侵的效果。
不过有时候我们希望能够从互联网访问公司内网,这需要进行一些设置才能实现。之所以无法从互联网访问内网,是因为对应表里没有相应的记录,那么我们只要事先手动添加这样的记录就可以了。一般来说,用于外网访问的服务器,可以放在地址转换设备的外面并为他分配一个公有地址,也可以将服务器的私有地址手动添加到地址转换设备中,这样就可以从互联网访问到这台具有私有地址的服务器了。
05.路由器的包过滤功能:
包过滤也是路由器的一个重要附加功能,与上面地址转换机制的复杂比起来,包过滤机制并不复杂。包过滤就是在对包进行转发时,根据MAC头部、IP头部、TCP头部的内容,按照事先设置好的规则决定是转发这个包还是丢弃这个包。我们通常说的防火墙设备或软件,大多数都是利用这一机制来防止非法入侵的。