关于公共 IP 地址和使用端口的基本问题

网络工程 路由 ip ipv4 纳特
2021-07-05 17:47:46

我意识到我所有的设备都有相同的公共 IP 地址(我知道公共和私有 IP 地址的概念,但我认为这在两种情况下都是独一无二的),所以我不太了解路由器是如何将知道哪个设备对应于进入我的 LAN 的响应?

这是一个例子,但它没有告诉我路由器如何处理这个:

在此处输入图片说明

我想我在某处读到它正在使用端口,但是如果,例如,我和我兄弟正在使用 SSH,据我所知,路由器会收到相同 IP 地址的答案(因为公共 IP 地址是共享的) ,并且到同一个端口(SSH为22),那么路由器怎么知道给哪个设备给出相应的答案呢?

1个回答

不要将目标中使用的众所周知的端口与您的 PC 使用的源端口混淆。大多数情况下,您的 PC 在启动通信时将使用随机的临时端口。例如,当您浏览网页时,您的 PC 将使用端口 80(众所周知的 HTTP 端口)作为目标端口,但它会选择自己的端口(例如 53277)作为源端口。

使用 NAT 的路由器将维护一个 NAT 表。当您从 NAT(私有地址)内部发起连接时,NAT 表将有一个条目,其中包含源 IP 地址、源端口(这通常是随机的临时端口)、目标 IP 地址、目标 IP 端口和随机您的路由器选择用来替换源端口的端口号。

当流量返回到公共 IP 地址和 NAT 分配的随机端口时,NAT 将反转该过程,将公共目标地址和端口替换为 NAT 表中的地址和端口,以发送回您的内部主机。