子网掩码定义了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类掩码
目标IP: 122.10.2.4 使用C类掩码
因此,源设备将子网掩码应用于自己的和目标设备,以查看它们是否在同一个子网上。
来源: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从最长到最短面具的所有路线,首先命中的是网关。