NAT:如果两个主机发起连接到相同的IP:PORT,具有相同的源端口,那么路由器如何处理它?

我只是在想,这个想法出现在我的脑海里。

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

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

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

干杯。

只是因为主机A和Bselect了端口10123并不意味着这是路由器使用的端口。 路由器从它自己select的源端口连接到主机C. 所以连接看起来更像这样:

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

我与Laurentiu路由器将基于来自A或B的IP地址发送数据包。响应数据包将如下所示:

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

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

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

路由器有IP地址的路由表。 它记住特定的IP地址来find哪个主机发出请求,并将该响应包路由到该特定主机。