路由器如何知道将数据包发送到哪个设备?

路由器如何知道将数据包发送到哪个设备?

我的问题不是它如何通过互联网移动,而是它如何通过路由器移动到某个设备。家庭网络中连接到路由器的所有设备都具有相同的外部 IP。假设设备 A 正在加载页面,数据包从外部源发送到路由器,因为数据包知道设备 A 的外部 IP,并且能够到达路由器。但是现在,它如何到达设备 A?路由器如何知道将其发送到设备 A 而不是设备 B?

我认为这涉及到 NAT,但我只是在寻找 NAT 如何实现这一点的逻辑解释。

答案1

当您发起与外部站点的连接时,路由器每次都会使用不同的源端口号……然后它会使用该源端口号(即数据返回的位置)作为关键字来查找请求来自内部网络上的哪台机器。这称为端口地址转换(与网络地址转换相对,后者指路由器有多个可用网络地址的情况)。

答案2

正常情况下,家庭网络中的所有设备都有不同的内部地址(私有地址,始终为 192.168.0.1~192.168.0.255)。

当数据包从家庭网络发送时(假设设备 A:192.168.0.123),当它通过路由器时,路由器会将私有地址转换为路由器的外部地址(假设为 140.191.2.5),并且路由器还会在其 NAT 中记录此映射。

当响应回来时,路由器映射NAT,并发现原始来源是设备A。

所以设备A最终接收到了数据包。

这只是一个概念,更多详细信息请参考wiki:NAT。

相关内容