如果数据包被发送到公共 IP 地址,路由器如何知道它应该接收该数据包?

如果数据包被发送到公共 IP 地址,路由器如何知道它应该接收该数据包?

假设我有一台路由器,它的一个接口上有一个公用 IP 地址,另一个接口上有一个私有地址,比如 192.168.1.1/24。然后有一台计算机连接到第二个接口,它也有一个私有 IP 地址 (192.168.1.2/24)。现在,计算机想要将数据包发送到某个公用 IP 地址,比如 11.12.13.14,所以我认为它会将这个公用地址放在 IP 数据包的目标字段中,不是吗?

但是现在,如果路由器的本地 IP(和计算机的默认网关)是 192.168.1.1,那么这个数据包如何传送到路由器?

这看起来是一个非常简单的问题,但我真的很难理解它是如何工作的。

答案1

具有互联网和本地的网络设置如下。

您的网络通过调制解调器连接到互联网。调制解调器可以与互联网上的 1 个设备交换信息。

您的网络中通常有多个设备。为了让这些设备相互通信,您需要一个具有多个网络端口的设备以及一些软件来管理它。过去,这是一个网络集线器。集线器基本上将传入流量复制到所有端口,并且任何监听者都会做出响应。

研究使这些设备变得智能,这就是交换机的诞生。交换机与集线器略有不同。它会尝试通过向所有端口传输新连接并查看谁回复来确定目的地是谁。当它在端口上收到回复时,它会用初始请求中给出的 IP 地址标记该端口,并将该 IP 地址的所有流量路由到该端口,而不会将其广播到所有其他端口。

调制解调器和交换机不能一起使用来将本地 PC 连接到互联网,因此创建了一种称为路由器的新设备。路由器位于调制解调器和交换机之间。路由器通常包含额外功能,例如 DHCP 服务器,允许管理本地网络。路由器将有一个查找表,可帮助确定 IP 地址是本地的还是互联网上的。它还将有一个包含端口映射的表,以便您可以从互联网打开端口并将其流量转发到本地设备。

那么。假设 IP 为 192.168.1.2 的 PC1 向 192.168.1.3 发送一个数据包。数据包通过连接的电缆从网卡传输出去。数据包到达交换机上的端口。

交换机启用了 3 个端口:WAN 端口(连接到路由器)、端口 1(即 192.168.1.2(本身))和端口 2(即 192.168.1.3)。除非路由器已经确定 192.168.1.3 属于该端口并将数据包直接发送到该端口,否则路由器会将其传输到 WAN 端口和端口 2。

假设您的计算机现在向 11.22.33.44 发送一个数据包。数据包通过网卡再次到达交换机。交换机没有这个 IP 地址的集合,因此它会将其发送到所有端口。路由器接收数据包并将其转发到调制解调器,调制解调器再将其传输到互联网。

稍后,互联网响应,一个数据包从调制解调器传来。该数据包被转发到路由器,路由器识别出这是对先前数据包的响应(通过 uPNP),并将其转发到交换机。交换机将其转发回您的端口。

简而言之,这就是路由器的工作原理。

我希望这是有意义的。:)

另外,如果您的问题是 2 台设备具有相同的 IP,那么您不能拥有具有相同 IP 地址的 2 台设备。这样就会发生 IP 冲突,网络将无法正常工作。

答案2

为了补充前面的答案,您问:

因此,路由器会接收发往 11.22.33.44 的数据包,即使该本地(LAN)端口(数据包通过该端口发送)上的地址是 192.168.1.1?

是的,因为您的计算机通过以太网链路或 Wi-Fi 链路物理连接到路由器。这是一条物理链路,您将所有网络流量发送到该链路(所有 IP 数据包都通过相同的物理 MAC 地址到达路由器设备)。您的路由器链路有一个 IP 地址,如您所说,192.168.1.1,这是您的默认网关 IP,因此来自该地址的任何传入流量都将被识别为通过路由器从网络传入。

但是,请不要忘记,您是通过 Wi-Fi 或以太网链路物理发送每个网络数据包的,并且这些链路的级别低于 IP,因此所有数据包都会通过物理连接发送到路由器,无论其 TCP/IP 协议内容如何(源 IP、目标 IP、源端口、目标端口)。

因此,无论数据包的源 IP 或目标 IP 是什么,所有 IP 数据包都会通过有线连接或无线连接到达路由器,然后由路由器或任何此类设备决定如何处理它们,是检查数据包的源 IP 和端口以将与您 PC 的 IP 和端口匹配的任何响应流量发送回它(路由器),还是将所有响应流量发送到连接到路由器的每个设备以探测答复,如交换机或集线器。就像第一个答案所说的那样,区别在于,集线器始终将所有流量发送到与其链接的所有设备以探测答复,而交换机仅在收到一个答复之前这样做,然后将该设备标记到该连接,无需进一步探测。

相关内容