端口如何通过 NAT 工作?

端口如何通过 NAT 工作?

我无法在教程中准确表述,但这就是我所说的公共 IP:10.0.0.1 私有 IP 192.168.0.1、192.168.0.2 和 192.168.0.3 通过同一端口连接到 argos.com google.com 和 ebay.com,路由器接收这些数据包并将它们的地址转换为路由器的公共地址,服务器处理此信息并将数据包发送回 10.0.0.1,但现在我们有三个不同的目的地,地址和端口为 10.0.0.1:80,NAT 从那里如何工作?同一个数据包会被发送到所有三台计算机吗?

答案1

路由器的 NAT 表包含

  • 目标 IP:端口(数据包发送到的目的地,例如google.com:80
  • 使用的 WAN IP:端口(例如,10.0.0.1:12354,用于此连接)
  • 本地客户端 IP:端口(例如 192.168.0.1:1234)

当路由器收到从google.com:80到10.0.0.1:12345的数据包时,它知道必须把这个数据包传回192.168.0.1:1234。

如果两个内部客户端想要访问同一个外部节点 google.com:80,那么路由器将为这些连接使用不同的 WAN 端口(例如 12345 和 12346)——因此答案的参数足够完整,可以理解,答案数据包必须传输到哪个内部客户端。

PS. 大多数情况下路由器只有一个外部(WAN)地址,但这不是硬性规定。

答案2

在内部,路由器会为连接分配一个新的、唯一的端口,称为 NAT 的表这样,当响应返回时,它会识别它之前分配的内部端口,然后就可以知道将返回数据包转发到哪个源。示例:

  1. 主机 192.168.0.1 打开https://google.com(端口 443)
  2. 请求到达路由器并在内部为传出请求(例如,45678)。
  3. Google 看到该请求来自 your_public_ip:45678 到 google.com:443。
  4. Google 将答案发送至 your_public_ip:45678。
  5. 您的路由器知道该端口已映射到客户端 192.168.0.1,并将答复发回。

相关内容