数据包如何知道如何到达子网中的设备?



这是一个困扰我很长时间的问题。我一直在学习中寻找答案,并且总是假设"我确定我错过了什么,或者我会进一步学习它",但好吧,我没有。无论如何,假设发送了带有 tcp+ip 的数据包:

仅从公共 IP 和端口地址判断,此数据包如何知道它应该在路由器中转到哪个特定设备?

更清楚的是,假设我的家庭路由器的公共IP地址是155.100.100.10(这是IP标头中的目的地(,并且我有三个设备连接到它,因此所有这三个设备都具有相同的目标IP地址。因此,目标 IP 在 IP 标头中,要转到的进程的端口在 TCP 标头中,但是数据包到底如何知道要转到三个设备中的哪一个?

如果是子网划分,请解释数据包的发送方在哪里包含有关发送到哪个子网的特定信息,因为即使经过一些 wireshark 挖掘,我似乎也找不到它

没关系,我找到了,我想我会把答案留给其他可能偶然发现同样事情的人:

基本上,客户端在发送请求时在网络地址转换器(NAT(设备/"路由器"上注册自己的本地地址和唯一端口。因此,当服务器仅使用公共 IP 地址回复时,它会使用保留端口来查看在子网中发送信息的位置。