NAT:如果两台主机发起到同一个IP:PORT的连接,并且使用相同的源PORT,路由器会如何处理?

NAT:如果两台主机发起到同一个IP:PORT的连接,并且使用相同的源PORT,路由器会如何处理?

我刚才正在思考,然后这个想法就出现在我的脑海里。

假设我的局域网内有主机 A 和 B。我有一个路由器,互联网上还有一台主机 C。我知道在启动连接时,源端口是随机选择的,但如果两台主机在启动到同一主机:端口时选择相同的端口,会发生什么情况?

A:10123 -> C:80
B:10123 -> C:80

路由器如何知道哪些数据包属于每个数据包?

干杯。

答案1

主机 A 和 B 选择了端口 10123,但这并不意味着路由器会使用该端口。路由器会从自己选择​​的源端口连接到主机 C。因此,连接看起来更像是这样:

                                  router
                          +--------------------+
A:(src:10123, dest:80) -> | A:10123 -> C:43775 | -> C:80
B:(src:10123, dest:80) -> | B:10123 -> C:43776 | -> C:80
                          +--------------------+

答案2

我和 Laurentiu 一致,路由器将根据 A 或 B 的 IP 地址发送数据包。响应数据包将如下所示:

Source IP: C
Source Port: 80
Destination IP: A (or B)
Destination Port 10123

路由器会将数据包路由到正确的主机。

如果路由器配置了 PAT,则路由器将为传出的数据包分配 NAT/PAT IP 和新的随机源端口。

答案3

路由器有带 IP 地址的路由表。它记住特定的 IP 地址,以查找哪个主机发出了请求,并将响应数据包路由到该特定主机。

相关内容