NAT 工作在 OSI 模型的哪一层?

网络工程 纳特 第3层 第4层
2021-07-31 16:56:40

简单的问题和答案当然是第 3 层,但是我们能否说 PAT 在第 4 层上工作也是因为它处理端口号,这是第 4 层的功能?

或者它只是一个第 3 层协议?

4个回答

NAT 在第 3 层工作,因为它正在修改 IP 标头。如果您使用 PAT,您可能会争辩说它也在第 4 层工作,因为它可能会更改数据包的源端口,以防它不是唯一的。

通过使用称为端口地址转换 (PAT) 的功能(也称为“过载”,NAT 功能的子集),可以将多个内部地址 NAT 转换为仅一个或几个外部地址。

PAT 使用内部全局 IP 地址上的唯一源端口号来区分转换。由于端口号以 16 位编码,因此理论上每个 IP 地址的总数可能高达 65,536。

PAT 将尝试保留原始源端口,如果该源端口已被分配,则 PAT 将尝试从相应端口组 0-511、512-1023 或 1024-65535 的开头开始查找第一个可用端口号。

如果相应组中仍然没有可用端口并且配置了多个 IP 地址,则 PAT 将移动到下一个 IP 地址并再次尝试分配原始源端口。这一直持续到可用端口和 IP 地址用完为止。

因此,只有在端口不唯一的情况下才会修改端口。

Cisco链接很好地概述了 NAT。

Nat 是一个跨层的过程。它至少涉及第 3 层(IP)和第 4 层(TCP、UDP 等)。在某些情况下,它还可能涉及第 7 层(应用程序)。

一对一的 NAT 至少需要修改 IP 地址(第 3 层)、IP 校验和(第 3 层)和 TCP/UDP 校验和(第 4 层)。

一对多 NAT 至少需要修改 IP 地址(第 3 层)、IP 校验和(第 3 层)、TCP/UDP 端口(第 4 层)和 TCP/UDP 校验和(第 4 层)。

这样一个最小的 NAT 会破坏很多东西(例如主动模式 ftp)。因此,大多数 NAT 将超越基础知识,还会对应用程序数据(第 7 层)中的至少一些 IP 地址执行转换和跟踪。

想想这必须如何在来自同一设备的数据包之间保持一致……至少在会话中。因此,您可能会争辩说,您应该将其置于 5 级或更高级别。仅仅因为它向下修改 IP 报头不应该取消它从更高层的考虑。较低的层可能对较高的层一无所知,但较高的层可以了解并操纵较低的层。事实上,第 6 层似乎是合适的。来自维基百科:

如果表示服务提供它们之间的大映射,应用层实体可能会使用不同的语法和语义。

地址之间的映射,即使地址在第 3 级而不是第 7 级,似乎也是一个非常表现层的事情。

Nating 在 layer3 & layer4 下工作,甚至在应用层下工作。