路由器如何将数据包传送到目的地?

网络工程 以太网 ip MAC地址 ARP
2022-02-06 10:44:40

提前为这样的菜鸟问题感到抱歉。

我知道,当设置向其目的地发送数据包的任务时,计算机首先通过其掩码和 IP 地址检查目的地的 IP 地址是否在同一网络上。我知道当一台计算机需要 MAC 地址时,它会向该广播域上的所有节点广播一个 ARP 请求。

这对外部网络有什么作用?例如,假设我想导航到https://google.com,我的浏览器会处理所有 DNS 查询并获取 IP 地址。我猜是因为以太网,我的计算机发送一个 IP 数据包,源为我自己,目标为 Google 的 IP 地址,然后将其包装在第 2 层帧中,默认网关作为目标 MAC。路由器/默认网关是否剥离第 2 层帧并通过 PPPoA 将其发送到其默认网关(这是我的情况),还是然后用自己的源 MAC 和目标 MAC 作为其默认网关替换该帧?

很难找到答案,真的很想得到一些帮助。

2个回答

有很多步骤

  • 路由器执行任何必要的 L2 过滤以防止意外的数据包重复。对于以太网,这意味着将数据包的目标 MAC 地址与路由器上传入以太网端口的 MAC 地址进行比较。
  • 路由器剥离 L2 帧并将数据包传递到 IP 路由。
  • 路由器在其路由表中查找目标 IP 地址。根据此表,它确定应该从哪个接口发送数据包以及“下一跳 IP 地址”是什么。
  • 如果传出接口是以太网或类似接口,路由器使用接口的 ARP 表将下一跳 IP 地址解析为 MAC 地址。如果 ARP 表中没有条目,则数据包将在创建时排队。
  • 数据包被包装在一个新的 L2 帧中并发送到下一跳。

默认网关只是路由表中的一个条目,如果不知道更明确的路由,则作为最后的手段进行匹配。一些路由器没有设置默认网关,而是依赖于了解整个 Internet 路由表。

你的理解非常接近。

当路由器接收到一个帧时,它会剥离该帧以获取数据包。然后路由器查看它的路由表,看看它是否有到目标地址的路由。如果不是,它会丢弃数据包。如果是这样(并且默认路由作为最后的手段),路由器会将数据包切换到其下一跳的接口。

该跃点可能有也可能没有使用 MAC 地址的协议(并非全部都有,PPP 不使用 MAC 地址)。在任何情况下,路由器都会构建一个新帧,封装下一跳的数据包,并将新帧转发到下一跳接口。