6.3.2 NAT转换表

NAT如何知道哪个内部主机应该收到从Internet到达的数据报呢?

在NAT中维护着一张转换表,表中的每个条目包括两项内容:Internet上主机的IP地址网点上主机的内部IP地址。当传入数据报从Internet到达时,NAT在转换表中查找数据报的目的地址,提取内部主机的相应地址,用主机的地址替换数据报的目的地址,并通过本地网络把该数据报转发给主机。

显然,NAT转换表中的内容应该在数据报从Internet到达之前就已经建立。那么,NAT转换表到底在什么时候初始化的呢?可以采用以下几种方式:

■ 手工初始化。在进行任何通信前,有管理员手工配置NAT转换表;

■ 外发数据报。当数据报经过NAT盒发送至Internet时,NAT盒从内部主机接收到数据报,并根据内部主机的IP地址和目的主机的IP地址建立一个表项;

■ 传入域名查找。当Internet上的主机通过查找内部主机的域名来找到其IP地址时,域名软件在NAT转换表中建立一个表项,然后通过发送地址G作为答复。

三种方式各有优缺点:

手工初始化提供了永久的映射,并允许IP数据报在任何时候以任何方向发送;

外发数据报方式能够自动初始化转换表,但是不允许从外部发起的通信;

传入域名查找方式允许网点外部发起的通信,但是需要修改域名软件,而且必须要通过域名解析时才有效。

以上三种方式中最广泛采用的是外发数据报方式,许多ISP都采用了这种方式,如下图所示。

上述的方式中,实施了内部地址和外部地址的一对一映射,但是,这种映射存在一个局限性,那就是它仅仅允许网点在任何时候,最多有一台计算机访问Internet的一台计算机。

然而,在实际应用中,往往需要一个网点的多台主机并发访问给定的外部地址。这时,需要对NAT的映射进行改进。它保留了一对一的映射,但是允许NAT盒中容纳多个IP地址。这种方案称为多地址NAT。但分配了K个地址的时候,多地址NAT最多允许K个内部主机访问给定的外部主机。