对外部网络的请求如何路由?

对外部网络的请求如何路由?

当我想从连接 C 类网络的 PC 访问某个外部网络(比如说 1.1.1.1)时,以下哪一种情况实际上会发生?

  1. 我的电脑的操作系统(NIC)知道我想要访问内部网络之外的地址,并直接将数据包发送到默认网关。

    或者

  2. 我的 PC 像处理其他请求一样处理该请求,将其发送到我的交换机,交换机不知道目标地址,因此它会将它们重新发送到所有连接的设备。由于其中之一是路由器,它会将数据包重新发送到外部。

或者我完全误会了?

答案1

在某种程度上,两者都有。IP 等级,你的电脑知道它要去一个外部地址,并直接把它发送到路由器,因为它知道路由器是作为任何不在本地网络上的东西的网关。子网(它通过使用子网掩码)。

然而,交换机和集线器在 IP 之下运行,以太网层(具体来说,是数据链路层,IEEE 802 以太网用于有线以太网和 WiFi 设备)。它不知道 IP 地址是什么,也不知道它们是什么意思。但是,它确实理解 MAC 地址。当您的计算机发出数据包时,它还包括MAC地址网络上下一个应该处理该数据包的设备。在本例中是路由器。

当一个中心收到数据包后,它会执行您所描述的操作 - 它会复制数据包并通过所有线路将其发送出去,希望将其送达目的地。任何收到数据包但不是接收方的设备都会将其丢弃。

A转变另一方面,它更智能一些。它实际上会保存一个 MAC 地址表,并根据传入流量将它们与每个端口关联起来。这样,当它必须将数据包发送到特定 MAC 地址时,它就知道需要通过哪个端口发送。这有助于减少网络拥塞。

答案2

假设网卡上的网络掩码为255.255.255.0,则请求将被发送到默认网关。如果网络掩码的设置使得所需网络在范围内,则 PC 将处理该请求。

答案3

您的 PC 使用其子网掩码来确定目标 IPv4 地址是否在子网外。如果是,则您的 PC 计划将以太网层报头寻址到路由器的以太网 (MAC) 地址。如果它不知道路由器的 MAC 地址,则使用 ARP 来查找。

因此,在以太网层,数据包被发送到您的路由器,但在 IP 层,数据包仍然被发送到原始目标 IP 地址。

答案4

2) 很容易回答:
您的 PC 不会将其数据包发送到交换机,因为它不知道交换机在那里。

您的 PC(或者更确切地说,您的网络堆栈)有一个路由表。根据该表中的信息,它可以:

  • 将信息循环回自身(自己的 IP,或者本地主机)
  • 将其寻址到本地网络上的 NIC(通过其自己的 IP 和自己的子网了解)
  • 知道它不是本地的,并通过希望知道它要去哪里的人(又名默认网关)发送它。

我正在努力想出一个更长更详细的答案,大约一周后我可能会在我的主页上发布一些关于网络的内容。同时,我想引导您阅读本网站姊妹网站上的一个非常长且详尽的答案:服务器故障 子网划分如何工作

相关内容