NAT 技术并不复杂 ,其基本思想是将家庭或者企业内部网连接到NAT路由器上。NAT路由器至少有一个有效的外部全球 IP地址。当内网中的某个主机试图访问 Inte rnet 时,NAT 路由器会将其私有地址转换成全球 IP 地址,从而实现Internet 的访问。在此过程中 NAT 路由器实际上充当了 一个 Inte rnet 访问代理的角色。
NAT路由器的具体工作原理如图3. 25 所示。内部网 192. 168. 0. 0/2 4 内所有主机的 IP地址均为 私有地址, 而 NAT路由器拥有一个全球 IP地 址172. 24. 160. 10。NAT 路由器接收到从 内部网的主机 A 发往 Internet 上主机 B 的IP分组, 显然 该 分组 的源 IP地 址 为 192. 168. 0. 99 , 目的 IP 地 址 则 为202. 118. 1. 64。NAT 路由器将该分组的源 IP地址转换 为 新 的 地 址172. 24. 160. 10, 即 NAT 路由器自身的全球IP 地址,然后转发出去。因此,主机 B 收到这个 IP 分组时,以为 A 的 IP 地址是 172. 24. 160. 10, 而并不知道 A 的私有地址是 192. 168. 0. 99。实际上,即使知道了,也不能向私有地址回送 IP 分组。因为如前所述,目的 地址是私有 IP 地址的 IP 分组是不被 Internet 中的路由器转发的。当 NAT 路由器收到主机 B 发来的 IP 分组时,还要进行一次 IP 地址的转换。通过NAT 地址转换表,将 IP 分组中旧的目的 IP 地址 172. 24. 160. 10, 转换为新的目的IP 地址 192. 168.0.99, 即主机 A 的内部 IP 地址。
由此可见,当 NAT 路由器具有n 个全球IP 地址时,内部网内最多可以同时有
图 NAT路由器工作原理
n 个主机接入到Internet。但是在一般情况下,ISP 只分 配给 NAT 一个全球IP , 如何实现内部网中的多台主机同时接入呢?为了解决这个问题,现在常用的 NAT 转换表把运输层的端口号也利用上。这样,就可以使多个拥有本地地址的主机,共用一 个 NAT 路由器上的全球 IP 地址,因而可以同时和 Internet 上的不同主机进行通信。使用端口号的 NAT 也叫做网络地址与端口号 转换( Ne twork Address and PortTranslation, NAPT ) 。但在大部分文献中,任然沿用 NAT 这个名词。下表说明了NAPT 的地址转换机制。从下表可以看出,内部 网中有两台主机 192. 168. 0. 99和192. 168.0. 100 同时向 Internet 发送IP 分组,其所使用的端口号分别为39163 和42628。NAPT 将源IP 地址和 TCP 端口号都进行转换(如果是使用UDP , 则对 UDP 的端口号进行转换)。将内部网中不同的源 1P 地址都转换为相同的全球 IP 地址, 而源主机所采用的 TCP 端口号,则转换为不同的新的端口号。这样,当 NATP 路由器收到从 Internet 发来的应答时,从 NATP 转换表中就可以找到争取的目的主机。
表 NAPT 地址转换表举例