是否所有网络设备都需要做出路由决策,无论是跨网络通信还是在网络内通信?

网络工程 路由
2021-07-26 05:26:30

来自 Hunt 的 TCP/IP 网络管理:

网关在网络之间路由数据,但所有网络设备、主机和网关都必须做出路由决策

仅针对跨不同网络的通信做出路由决策是否正确?

对于网络内的通信(无论是否在网络中),

  • 网络中是否有任何设备需要做出路由决策?

  • 网络中的任何设备都必须有路由表或类似的东西吗?

如果一个设备做出路由决定,那是否意味着该设备有一个路由表或类似的东西?如果设备有路由表或类似的东西,它会做出路由决定吗?

或者,是否只有网关设备必须做出路由决定并拥有路由表或类似的东西?

我有这些问题是因为我的 Linux 笔记本电脑不是本地 wifi 网络中的网关,但令我惊讶的是有一个路由表。是不是因为网络中的任何设备都有路由表?我的笔记本电脑似乎无法连接两个网络,因为所有环回地址的网络和wifi网络无法相互通信。但它的路由表显示了与同一 wifi 网络中的其他设备通信的路由,以及 wifi 网络之外所有其他目的地的默认路由。

谢谢。

4个回答

每个 IP 设备都有一个路由表,因此会做出路由决策。只有两个条目可能非常简单,但从根本上说,设备需要决定目的地是否在直连网络上。如果没有,它将数据包转发到网关。对于大多数设备(如 PC),只有一个默认网关,但可以有多个。

从理论上说,考虑到有一个IP地址的计算机192.168.1.3/24,并希望一些数据发送到IP地址,192.168.2.5/24那么就应该做一个子网检查,看看如果它想达到的IP地址处于同一网络或没有; 能够决定是否将数据包转发到其网关。

当你有一个子网掩码时,/24它的二进制掩码11111111.11111111.11111111.00000000. 零是您可以在“同一网络”中修改 IP 地址的地方。如果您在零开始之前更改任何内容,则意味着您正在更改您所在的网络,并且为了能够与这样的 IP 通信,您需要在其中两个之间使用路由器。毕竟,能够做出这个决定被认为是做出了路由决定。

希望回答有帮助。

每个主机都需要决定如何处理它生成的数据包。对于典型的单宿主主机配置,这意味着三件事之一。

  1. 将它们从输出队列循环回输入队列并在本地进行处理。
  2. 将它们发送到同一子网上的另一台主机(例如通过 ARPing 获取目标的 MAC 地址)
  3. 通过将它们发送到默认网关(例如通过默认网关的 MAC 地址的 ARPing)将它们发送出网络。

如果您阅读了早期的 RFC,那么它们是基于此逻辑将被显式编码的假设而编写的。

然而,现代操作系统(至少是全功能的)支持多宿主并充当路由器(尽管后者通常默认禁用)。所以他们使用显式路由表来决定如何处理数据包。接口配置用于填写此路由表中的默认条目,但也可以手动添加条目。

基本上路由决定是在 OSI 模型的第 3 层做出的。运行在该层的所有设备都进行路由决定。台式机、笔记本电脑、服务器、路由器、防火墙、负载平衡器、代理设备等设备被视为第 3 层设备流量根据路由决策路由到目的地。

一般在三层设备中,决策是基于路由表、ARP表来将数据包转发到下一层。