我只是在想,这个想法出现在我的脑海里。
假设我在我的局域网内有主机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哪个主机发出请求,并将该响应包路由到该特定主机。