路由器如何确定数据包的目的地?

路由器如何确定数据包的目的地?

我有一个基本的网络问题。两台电脑正在 WLAN 上通信。两台电脑都位于路由器或调制解调器后面。

两台 PC 具有相同的公共 IP。该公共 IP 大部分时间是路由器或调制解调器的 IP。这些路由器和调制解调器后面可以有多台 PC。这些 PC 如何通信?我可以理解数据包可以到达这些路由器或调制解调器,然后到达互联网,但之后呢?在数据包中,目标 IP 设置为公共 IP。当数据包返回时,路由器或调制解调器如何决定将数据包发送到哪里?有人可以解释一下吗?

答案1

这背后的大部分机制神秘NAT伪装

  • 您的电脑与外界通信

例如,您的 PC 位于私有网络上,IP 为 10.1.2.3。
您的路由器会记住 PC 的 IP/端口,并会记住它已初始化与远程 IP/端口 (WAN) 的连接。因此,当同一信道上有回复时,路由器会将数据包转发回其 LAN 端的 PC。

  • 外部设备与你的 PC 通信

在这种情况下,扩展设备初始化连接,因此路由器不知道应该将数据包转发到哪个 10.xxx 客户端。
这就是为什么路由器需要特定设置的原因,例如,如果您的 PC 恰好是 Web 服务器(http 端口)

  HTTP (WAN) ==> (LAN) 10.1.2.3:80

也就是说,来自 HTTP 端口的数据包将发送到内部 LAN 地址 10.1.2.3(您的 PC)的端口 80。

答案2

在基本设置中,设备始终只知道下一跳。该设备也只知道到达所需目的地的下一跳。如果目的地不在主机/路由器本地,它会将数据包发送到默认网关等等等等。

在更复杂的情况下,您可以使用静态路由指向某个特定网络目的地的明确网关。

如果手动管理这些路由变得太复杂,则可以使用动态路由分发协议,例如 RIP

更复杂的协议可以更了解 IP 地址块的全球分布(通过AS 编号) 并尝试根据成本和距离决定将数据包路由到何处。例如边界网关协议开放源协议 (OSPF)

答案3

我对您的“大多数时候”有点困惑:我认为要么总是,要么从不。如果 PC 的公共 IP 始终与其路由器/调制解调器一致,则本地网络正在使用 NAT 让 PC 从本地网络外部进行访问。=> 参见第一个答案

如果 PC 的公网 IP 与其路由器/调制解调器不一致,则可以直接从 WAN 访问本地网络(如果我们忽略可能阻挡的防火墙)。=> 参见第二个答案

如果你刚刚开始了解路由的工作原理,那么你应该首先集中精力于后一种情况,也可以将其简化为:

PC1 <-LAN1-> Router1 <-WAN_link-> Router2 <-LAN2-> PC2 

(好像周围没有其他东西一样)

答案4

好问题。实际上有几种策略,但本质上路由器会保留所有 NAT 连接的表(客户端端口、客户端 IP、目标 IP、目标端口)。当返回数据包时,它会根据数据包的来源和端口匹配要将其转发到哪个客户端。

大多数 NAT 实现也是 PAT(端口地址转换实现),以防止两个客户端选择相同的源端口。

某些路由器(例如 Cisco 设备)出于安全原因会进行序列号随机化 - 它可以帮助隐藏 NAT 后面的客户端数量和类型。它还可以尝试保护客户端免受针对序列号的类型攻击,或猜测下一个连接的下一个序列号。

相关内容