不论使用地址池还是使用单个地址,NAT 过载过程相同。 继续上述 PAT 示例,PC1 希望使用单个公有 IPv4 地址与 Web 服务器 Svr1 通信。 同时,另一个客户端 PC2 希望与 Web 服务器 Svr2 建立类似会话。 PC1 和 PC2 都配置了私有 IPv4 地址,而且为 PAT 启用 R2。

PC 到服务器的进程

1. 图 1 显示 PC1 和 PC2 分别向 Svr1 和 Svr2 发送数据包。 PC1 具有源 IPv4 地址 192.168.10.10,而且使用 TCP 源端口 1444。 PC2 具有源 IPv4 地址 192.168.10.11,而且恰巧为其分配了相同的源端口 1444。

2. 来自 PC1 的数据包先到达 R2。 通过使用 PAT,R2 将源 IPv4 地址更改为 209.165.200.225(内部全局地址)。 NAT 表中没有其他设备使用端口 1444,因此,PAT 保存了相同的端口号。 随后将数据包转发到位于 209.165.201.1 的 Svr1。

3. 接着,来自 PC2 的数据包到达 R2。 PAT 已配置为对所有转换使用一个内部全局 IPv4 地址 209.165.200.225。 与 PC1 的转换过程类似,PAT 将 PC2 的源 IPv4 地址更改为内部全局地址 209.165.200.225。 但是,PC2 具有与当前 PAT 条目(PC1 的转换)相同的源端口号。 PAT 将增大源端口号,直到源端口号在其表中为唯一值。 在本示例中,NAT 表中的源端口条目和来自 PC2 的数据包收到的端口号为 1445。

尽管 PC1 和 PC2 使用相同的转换后地址(内部全局地址 209.165.200.225)和相同的源端口号 1444;但修改后的 PC2 的端口号 (1445) 使 NAT 表中的每个条目都是唯一的。 这在从服务器发送的数据包返回客户端时显得十分明显。

服务器到 PC 的进程

4. 如图 2 所示,在典型的客户端-服务器互换中,Svr1 和 Svr2 分别对从 PC1 和 PC2 收到的请求做出响应。 服务器将来自已接收数据包的源端口用作目的端口,而将源地址用作返回流量的目的地址。 服务器看起来像是和位于 209.165.200.225 中的同一主机通信;但事实并非如此。

5. 当数据包到达时,R2 使用每个数据包的目的地址和目的端口在其 NAT 表中查找唯一条目。 对于来自 Svr1 的数据包,目的 IPv4 地址 209.165.200.225 具有多个条目,还只有一个条目具有目的端口 1444。 R2 使用其表中的条目,将数据包的目的 IPv4 地址更改为 192.168.10.10,而目的端口无需更改。 随后将数据包转发到 PC1。

6. 当来自 Svr2 的数据包到达 R2 时,对其执行类似转换。 找到了目的 IPv4 地址 209.165.200.225,仍具有多个条目。 但是,使用目的端口 1445,R2 能够唯一确定转换条目。 目的 IPv4 地址已更改为 192.168.10.11。 在这种情况下,目的端口也必须修改回 NAT 表中存储的它的原始值 1444。 随后将数据包转发到 PC2。