路由器如何找到它的默认网关?

路由器如何找到它的默认网关?

我了解地址解析协议以及它如何向子网上的所有设备广播以查找目标的 MAC 地址。我知道当计算机无法通过 ARP 找到目标时,它会得出结论,该目标一定位于另一个子网上,因此它会将其发送到路由器。

如果目的地确实位于地球的另一端,并且路由器必须跳转到您的 ISP 路由器,那么路由器首先如何找到其默认网关的 IP 地址?

答案1

第一段是错误的,它的意思恰恰相反。

当已知目的地位于当前网络上时,使用 ARP。顺序如下:

检查路由表以查找目的地

路由表是按照特异性的顺序进行测试的,因此虽然条目 192.0.0.0/8 和 192.168.0.0/16 都与 192.168.1.1 匹配,但第二个条目是更具体的匹配。0.0.0.0/0 匹配所有内容,并且是默认路由。

已连接还是已路由?

匹配的路由要么是已连接的网络(发送设备在同一网络上有 IP 地址),要么不是。如果已连接,则发出 arp 并检索 mac 地址(假设设备存在),然后将数据包移交给第 2 层(以太网)进行传输。

如果网络不是连通网络,则它将具有网关 IP 地址。该 IP 地址必须在连接的网络上。因此,再次为网关 IP 地址发出 arp,检索到 mac 地址,并将数据包移交给第 2 层以传输到网关 IP。

在下一跳

一旦到达目的地,就会执行完全相同的过程。网关在连接的接口上拥有目标 IP 地址,或者将其传递给另一个路由器。

创建路由表

路由表的填充方式有很多种。连接网络的路由始终由操作系统根据接口地址配置。在使用 DHCP 的环境中,会向接口发出 IP 地址,并且通常会附带一个默认网关。因此,一旦 DHCP 完成,设备就会拥有连接网络路由和默认路由。

更基本的设置是静态的。设备在其配置中有一个静态分配的 IP 地址、一个默认网关,也许还有一些静态路由。这些都是在设备本身上手动配置的。

动态路由

显然,在处理像互联网这样复杂的事物时,手动添加静态路由将是一个困难的提议。这种情况在某些层面上仍然会发生,但一切都由动态路由协议帮助。这实际上是路由器“拥有”一组 IP 地址范围,并将其传达给其他路由器。所有路由器都会相互学习路由。

这意味着 ISP 可以获得一个新的 IP 范围,并将其添加到其配置中,并将其从其网络中进行宣传,而互联网的其余部分无需进一步配置即可了解它。

免责声明

请注意,整个描述是对所发生情况的精简版本,其中有许多例外、警告和不同的技术可以改变过程的展开方式,但这就是它在基本层面上的工作方式。

答案2

这就是 DHCP 服务器的作用所在。由于它还不知道自己的 IP 地址,因此它将使用 IP 地址 255.255.255.255 和源 IP 地址 0.0.0.0 在网络上发送发现请求。

然而,这是 MAC 地址发挥作用的地方,并且发现数据包被封装到数据链路层以太网帧中,目标 MAC 地址为 FF:FF:FF:FF:FF:FF,源为网络接口 MAC 地址。

第一个收到 FF:FF:FF:FF:FF:FF 数据包的交换机会将该发现数据包转发到除其来源端口之外的每个交换机端口,因为在 DHCP 服务器看到它之前,它也不知道 FF:FF:FF:FF:FF:FF 是谁。如果 DHCP 服务器是第一个交换机,则它不会转发请求,因为交换机是 DHCP 服务器,它将接收此帧,然后将信息发送回 IP 255.255.255.255,因为它不知道是谁在联系他们,因为源 ip 是 0.0.0.0,但它知道联系他们的 mac 地址,因此它将封装提供数据包,其中源 mac 是 dhcp 服务器,目标 mac 是发送发现数据包的设备,并且它是作为单播而不是广播发送的。

然后,设备收到此要约,然后请求租赁,DHCP 服务器确认租赁

还要注意,如果默认网关意味着您的通信必须通过其他设备,则通常意味着路由是静态设置的,或者换句话说,手动设置,而不是动态路由,因为某些设置会使设备无法知道哪个设备实际上是默认网关。

答案3

大多数互联网连接都使用某种形式的 PPP - 无论是用于 DSL 的 PPPoA 还是用于电缆的 PPPoE。

PPP 是一种点对点协议(毕竟这是它的名字),因此默认网关始终是 PPP 连接另一端的网关。

无需以任何方式检测这种情况,因为情况就是这样。唯一的问题是是否主动使用 PPP 连接的远端作为默认网关,通常情况下您会这样做。

相关内容