NAT 如何更改端口号?

问题描述 投票:0回答:2

根据我的知识,我相信以下陈述是正确的。

  1. 路由器只能重定向数据包,并且只能与网络(互联网层)交互。
  2. NAT 将私有 IP 映射到公共 IP。它使用 NAT 表,其中源私有 IP 映射到公共 IP,并且源端口也更改为新的源端口。

我的问题是关于端口的 NAT 功能。在路由器中工作的 NAT 如何改变与传输层(端口)相关的内容? 即当私有系统发送源端口时,NAT 如何在将其发送到互联网之前使用新端口更改它。

我遗漏了一些东西,或者也许我在某个地方错了。将不胜感激的帮助。

谢谢

network-programming tcp router nat
2个回答
2
投票

NAT 拦截来自 NAT 内部网络上的节点的传出 IP 数据包(包括 UDP 和 TCP),并可以就地修改 UDP 和 TCP 标头中的源 IP 和源端口。 它也会更新标头中的其他字段(即校验和)。

同样,对于传入数据包,NAT 在其端口映射表中找到从先前出站数据包或连接创建的条目后,将更改目标 IP/端口。

至于“如何”——它就是这样。 它使用与收到的内容完全相同的有效负载从字面上重建新的 UDP/TCP/IP 标头。 NAT 被注册为 LAN 上的网关设备,因此所有发往互联网的数据包都将被发送到 NAT 的 MAC 地址 - 如果您想知道 NAT 是如何捕获数据包的。


0
投票

路由器可以根据其支持的功能处理OSI参考模型任何层的IP数据包。例如BGP,从技术上讲它是一个七层协议,路由器也支持它。同样,它也可以在可以更改 IP 或端口号的情况下进行 NAT。

© www.soinside.com 2019 - 2024. All rights reserved.