目录
一.网络地址转换NAT
1.什么是网络地址转换NAT
下面讨论一种情况,就是在专用网内部的一些主机本来已经分配到了本地IP地址,(即仅在本专用网内使用的专用地址),但现在又想和互联网上的主机通信(并不需要加密),那么应当采取什么措施呢?
最简单的办法就是设法再申请一些全球IP地址。但这在很多情况下是不容易做到的,因为全球IPV4的地址已所剩不多了。目前使用得最多的方法是采用网络地址转换。
网络地址转换NAT,这种方法需要在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和互联网连接。下图给出了NAT路由器的工作原理。在图中,专用网192.168.0.0内所有主机的IP地址都是本地IP地址192.168.x.x。NAT路由器至少要有一个全球IP地址,才能和互联网相连。图中表示出NAT路由器有一个全球IP地址172.38.1.5(当然,NAT路由器可以有多个全球IP地址)。
2.NAT路由器的工作原理
在上图中,NAT路由器收到从专用网内部的主机A发往互联网上主机B的IP数据报:源IP地址是192.168.0.3,而目的IP地址是213.18.2.4。NAT路由器把IP数据报的源IP地址192.168.0.3,转换为新的源IP地址(即NAT路由器的全球IP地址)172.38.1.5,然后转发出去。因此,主机B收到这个IP数据报时,以为A的IP地址是172.38.1.5。当B给A发送应答时,IP数据报的目的IP地址是NAT路由器的IP地址172.38.1.5。B并不知道A的专用地址192.168.0.3.实际上,即使知道了,也不能使用,因为互联网上的路由器都不转发目的地址是专用网本地IP地址的IP数据报。当NAT路由器收到互联网上的主机B发来的IP数据报时,还要进行一次IP地址的转换。通过NAT地址转换表,就可把IP数据报上的旧的目的P地址172.38.1.5,转换为新的目的P地址192.168.0.3(主机A真正的本地IP地址)。
由此可见,当NAT路由器具有n个全球IP地址时,专用网内最多可以同时有n台主机接入到互联网。这样就可以使专用网内较多数量的主机,轮流使用NAT路由器有限数量的全球IP地址。
显然,通过NAT路由器的通信必须由专用网内的主机发起。设想互联网上的主机要发起通信,当IP数据报到达NAT路由时,NAT路由器就不知道应当把目的IP地址转换成专用网内的哪一个本地IP地址。这就表明,这种专用网内部的主机不能充当服务器用,因为互联网上的客户无法请求专用网内的服务器提供服务。
为了更加有效地利用NAT路由器上的全球IP地址,现在常用的NAT转换表把运输层的端口号也利用上。这样,就可以使多个拥有本地地址的主机,共用一个NAT路由器上的全球IP地址,因而可以同时和互联网上的不同主机进行通信。使用端口号的NAT也叫做网络地址与端口号转换NAPT,而不使用端口号的NAT就叫做传统的NAT。但在许多文献中并没有这样区分,而是不加区分地都使用NAT这个更加简洁的缩写词。下表说明了NAPT的地址转换机制。
从上表可以看出,在专用网内主机192.168.0.3向互联网发送IP数据报,其TCP端口号选择为30000。NAPT把源IP地址和TCP端口号都进行转换(如果使用UDP,则对UDP的端口号进行转换。原理是一样的)。另一台主机192.68.0.4也选择了同样的TCP端口号30000这纯属巧合(端口号仅在本主机中才有意义)。现在NAPT把专用网内不同的源IP地址都转换为同样的全球IP地址。但对源主机所采用的TCP端口号(不管相同或不同),则转换为不同的新的端口号。因此,当NAPT路由器收到从互联网发来的应答时,就可以从IP数据报的数据部分找出运输层的端口号,然后根据不同的目的端口号,从NAPT转换表中找到正确的目的主机。