我不明白路由器如何理解数据包需要通过哪些其他路由器才能到达所需的 IP 地址?也就是说,例如,从伏尔加格勒的家用计算机(通过家用路由器)向位于墨西哥的站点发送打开 html 页面的请求。而这个家庭路由器又是如何知道数千个中间路由器中的哪一个通过数据包到达墨西哥的呢?
我不明白路由器如何理解数据包需要通过哪些其他路由器才能到达所需的 IP 地址?也就是说,例如,从伏尔加格勒的家用计算机(通过家用路由器)向位于墨西哥的站点发送打开 html 页面的请求。而这个家庭路由器又是如何知道数千个中间路由器中的哪一个通过数据包到达墨西哥的呢?
在路由中有一个概念“默认网关”(default gateway)。事实上,它的存在意味着:“如果你不知道到目标地址的路由,就将它发送到默认网关。”
除了默认路由,路由器还可以知道具体的子网。例如,家庭路由器通常只知道用户设备连接到的内部子网。他在提供商的网关上“抛出”的所有其他内容。家庭路由器也可能知道提供商的内部网络,但通常这是它的“知识”结束的地方。
但是提供商的路由器“知道”更多。如果您不深入研究提供商网络的内部路由,那么我们可以简单地说,提供商的路由器知道所有提供商的内部子网,以及与它直接连接的其他提供商的子网(so-称为“对等”)。奇怪的是,大多数提供商还有一个默认网关,可以通向更高级别和规模的提供商(所谓的“上行链路”,上行链路)。
但!在网络的最顶端是来自第 1 层组的提供者。他们的路由器没有默认网关。他们“知道”任何 IP 地址的位置。一级供应商提供网络连接,即 允许任何两个“白色”IP 地址相互连接。这些供应商的设备自然无法与普通的家用硬件相提并论。
应该补充的是,如果我们知道目标地址在哪里,即 它所在的路由器的地址,这并不意味着这个目标路由器是唯一的。实际上,子网与路由器地址相关联,即 由该路由器服务的一组连续的地址(或几个组)(所谓的“前缀”)。在这个路由器后面可能有一组其他的,每一个只为这些地址的一部分提供服务。例如,提供商可以为一个地区设置一个路由器,并拥有一个连接地区子网的全市网络。此结构允许您通过减少上行链路级别的前缀数量来聚合地址。
因此,当您在伏尔加格勒的家用计算机想要从墨西哥的站点获取页面时,它会向家庭路由器发送一个数据包,然后再将数据包发送到供应商的路由器,再将供应商发送到其上行链路,依此类推,直到数据包到达供应商知道墨西哥站点的位置(更准确地说,它知道它所在的路由器的地址)。然后数据包通过另一条路由器链,后面有越来越小的子网,最后到达所需的站点。当网站向您发送响应时,也会发生类似的过程。
没门。这不是他关心的问题。路由器仅根据其本地路由确定目标地址正式可达的下一跳。而进一步发送到哪里是下一个节点关心的问题。