根据我从多个来源(网络和其他书籍)中了解的关于NAPT(在 Linux 环境中也称为NAT 过载或IP 伪装)的概念,如果存在类似以下的场景:
当一个数据包从 ISP 到达 NAT 框时,它是 TCP 标头中的DESTINATION PORT(而不是传入数据包的SOURCE PORT),它被提取并用作 NAT 框映射表的索引,以定位正确的该表中的条目。
但是在 Tanenbaum 的书(计算机网络第 5 版)第 454 页第 5 章中,据说它是从传入数据包的 TCP 标头中提取的源端口,但这对我来说毫无意义,因为源端口传入数据包是传出数据包的目标端口,因此 NAT 表中没有与之匹配的条目。
这两个方案是在网络上找到的一些资源,它们帮助我研究了 NAPT:
根据我的理解,当数据包返回时遵循上述方案,它将在源端口字段 110 和目标端口字段 14500 中具有。然后从 TCP 标头中提取目标的值 14500 并用于定位NAT 表中的第一个条目。