在路由决策中,为什么只使用源的子网掩码并应用于源IP和目的IP?

子网掩码定义了IPv4地址如何分解。 IPv4地址nnn.nnn.nnn.nnn不像MAC地址,它们只是随机数。 这打破了路由的目的。 它们有两部分:networkingID和主机ID。 networkingID显示设备所在的子网。 主机ID显示子网上的哪个特定设备。

然而,有四个不同的八位字节,有不同的方式将地址分成两个字段。 这给了我们A类,B类和C类。它们只有完整的八位字节专用于节点ID或networkingID,所以无类别的口罩开始发挥作用。 这是192.24.50.1/24表示法。 我理解这个部分(除非我不知道上面的错误)。


路由器如何使用它来做出决定?

发生的过程是决定一个设备的两个选项:

我想在与我相同的子网上find目的地吗?

  • 如果是,则以帧的forms发送直接传输,目的地址在以太网/ 802.11 /等中。 帧是该主机的MAC地址。 如果它不知道,那么将会执行ARP来获取它。 “嘿,谁的IP地址是192.59.1.2,你的MAC地址是什么?

  • 如果不是,那就意味着我们必须把它路由到另一个子网。 它在一个不同的“邻居”。 这是路由器的工作,因此,我们将传输发送到默认网关进行路由决策。 然后我们再问这个问题,等等。


路由器如何专门使用子网和IP地址?

如前所述,为了查看目的地是否与自己在同一个子网上,它必须比较IP地址。 但是,它只比较networkingID部分。 这就是比较重要的一点。 “我的邻居是目的地吗?” 所以它比较两者的networkingID做出这个决定。

通过将子网掩码“应用”到两个IP地址,获得networkingID的方式是基本的二进制逻辑。

例如,120.50.2.1与255.255.255.0子网掩码给我们120.50.2.0。 它本质上是拿走主机ID,因为这个部分是无用的比较。


这里是我混乱

设备如何传输到使用不同子网掩码的其他设备?

在做出路由决策时,只需要三条信息。 当前设备IP,目标IP和当前设备的子网掩码。 (不使用目标子网掩码)

但是如果你有一个带有A类子网掩码的设备发送到具有C类子网掩码的设备呢?

源IP 122.10.21.5 使用A类掩码

  • 122是networking号码
  • 10.21.5是networking节点

目标IP: 122.10.2.4 使用C类掩码

  • networking号码是122.10.2
  • 4是networking节点

因此,源设备将子网掩码应用于自己的和目标设备,以查看它们是否在同一个子网上。

来源:122.10.21.5 + 255.0.0.0 = 122.0.0.0

目的地:122.10.2.4 + 255.0.0.0 = 122.0.0.0

这告诉我们他们在同一个子网上。 但他们不是! 源位于标识为122的子网上,而目标位于子网上,标识为122.10.2!

如果目的地的子网掩码被应用于目的地而不是使用源,那么这是固定的。

来源:122.10.21.5 + 255.0.0.0 = 122.0.0.0

目的地:122.10.2.4 + 255.255.255.0 = 122.10.2.0

第一:20多年前IP类已经被删除了,所以忘记了它们。 我打算使用CIDR表示法。

重叠的子网是不允许的。 在同一个空间中也不能有一个/ 24子网,它也用于一个/ 8子网。 换句话说:每个IP地址只能是一个子网掩码的networking的一部分。

在路由中, IP地址不用于任何事情,它只是一起传输。

使用相应条目的掩码将目的 IP地址与路由表条目匹配: if (dest.IP && entry[n].mask) == entry[n].address then forward to entry[n].gateway is if (dest.IP && entry[n].mask) == entry[n].address then forward to entry[n].gateway over从最长到最短面具的所有路线,首先命中的是网关。