CIDR -- IPv4 标头中的网络前缀

网络工程 路由 ipv4 子网
2021-07-04 20:34:03

除了 32 位 IPv4 IP 地址之外,无类别域间路由 (CIDR) 还需要一个前缀来指示网络 ID 的截止。

IP 报头只有 32 位地址字段。

并且,一个 IP 地址可以匹配两个无类别地址:例如。IP 地址 222.10.5.11 将匹配 222.10.0.0/21 和 222.10.5.0/23。

我的Q是:

当路由器 R1 收到一个发往网络 222.10.0.0/21 的主机 222.10.5.11 的数据包时,R1 怎么知道这是一个无类别地址并且网络前缀是 21?这个网络前缀写在 IP 标头中的什么地方?

TIA

//--------------------------

编辑:

我了解路由协议,比如 OSPF 可以传递子网掩码,从而传递这个前缀。但是,对于转发,当一个地址为 222.10.5.11 的 IPv4 数据包进来时,IP 怎么知道这个数据包是给 222.10.5.0/23 中的主机的呢?

2个回答

路由器使用它们的路由表来知道将东西发送到哪里。您的 IP 数据包无法告诉我的路由器如何处理。(有“源路由”选项,但每个理智的管理员都会禁用它。)

路由流向最具体的(最长前缀)匹配。如果我有 222/8 的路线和 222.10/16 的路线。后者将适用——16 大于 8。在您的示例中,/23 将是使用的,因为它是更具体的路线。

数据包只包含一个目标地址。网络都有不重叠的前缀,因此地址所属的网络总是很清楚。路由器的路由表包含到前缀的路由和前缀的集合,因此它知道将数据包发送到哪里。最后一个路由器直接连接到网络并且知道确切的(未聚合的)前缀。