数据包如何知道要去往哪个设备?

数据包如何知道要去往哪个设备?

我的知识水平真的很基础,但据我所知,当你搜索一个网站时,你会向服务器发送一个请求,请求该网页的信息,然后服务器会返回包含所有信息的数据包。有人告诉我,这些数据包通过你在请求时提供给服务器的 IP 地址知道要去哪里,但该 IP 只会将数据包发送到你的路由器,那么路由器如何知道网络中的哪个设备请求了这些数据包?我知道每个设备都有一个 MAC 地址,但由于你没有在原始请求中发送 Mac 地址,所以发回的数据包肯定不能包含它?我试着在网上查找,但真的找不到任何解释。如果有人能简单地向我解释一下,我将不胜感激 :)

答案1

IP 数据包的工作原理与美国邮政服务非常相似。将每个数据包视为一个信封,信封上写有收件人:和发件人:地址。当您邮寄信件时,信件会寄到您当地的邮局。当地邮局会查看收件人:地址的邮政编码。然后,当地邮局会将其路由到距离该邮政编码最近的下一个邮局,然后再路由到下一个邮局,依此类推,直到信件到达收件人的当地邮局。

当您的计算机发送 IP 数据包(例如向 google.com 发送 HTTP GET 请求)时,数据包首先离开您的网络接口(无论是 WiFi 还是以太网),然后到达您的路由器。实际上,首先您的计算机必须通过 DNS 将 google.com 解析为 IP 地址,但这是另一个话题……然后,您的路由器会查询其 ARP(地址解析协议)表,以查看它是连接到 WiFi 还是路由器交换机的本地设备。如果不是,则将其向上发送到路由器分配的网关 IP 地址(由您的 ISP 分配)。

数据包到达您本地 ISP 的边缘路由器。该路由器查询其路由表以确定它是上游、对等还是下游路由。它是上游,因此边缘路由器将数据包发送到上游的下一个路由器,如此反复,直到到达您 ISP 的主路由器,该路由器可能连接到高容量光纤主干网。

然后,数据包将传输到 Google 最近的地理数据中心,整个路由过程将被逆转,直到到达众多 Google HTTP 服务器之一。

每次数据包在路由器上停留以确定下一个要出去的端口时,我们称之为“跳跃”。您可以使用大多数操作系统内置的 traceroute 实用程序实际查看这些跳跃的运行情况。

在 Windows 中:tracert google.com

在Linux / MacOS中:traceroute google.com

顺便说一句,您说得对,任何网络上的每个设备都有一个唯一的 MAC(媒体访问控制)地址。这些 IP 地址到 MAC 地址的转换存储在 ARP 表中。当交换机或路由器重置时,它们会被清除。为了发现给定 IP 地址的设备 MAC 地址,您的网卡会向网络广播地址发送 WHOIS 数据包。交换机知道将这些数据包发送到每个端口,如果具有此 MAC 地址的设备已连接,它会响应“就在这里!” :-)

相关内容