IP地址的网络地址这一部分是用于进行路由控制。
路由控制表中记录着网络地址与下一步应该发送至路由器的地址。在主机和路由器上都会有各自的路由器控制表。
在发送 IP 包时,首先要确定 IP 包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将 IP 包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址,也就是最长匹配。
下面以下图的网络链路作为例子说明:
- 主机 A 要发送一个 IP 包,其源地址是
10.1.1.30和目标地址是10.1.2.10,由于没有在主机 A 的路由表找到与目标地址10.1.2.10的网络地址,于是包被转发到默认路由(路由器1) - 路由器
1收到 IP 包后,也在路由器1的路由表匹配与目标地址相同的网络地址记录,发现匹配到了,于是就把 IP 数据包转发到了10.1.0.2这台路由器2(该过程需要获取路由器2的mac地址,使用arp协议实现) - 路由器
2收到后,同样对比自身的路由表,发现匹配到了,于是把 IP 包从路由器2的10.1.2.1这个接口出去,最终经过交换机把 IP 数据包转发到了目标主机
路由表展开:
目的网络 子网掩码 下一跳路由器 若直接交付应当从哪一个接口转发出去 跃点数
network_destination netmask gateway interface metric
128.96.39.0 255.255.255.128 网关1(192.168.1.2) 接口0 10
128.96.39.128 255.255.255.128 网关2 接口1 10
128.96.40.0 255.255.255.128 网关3 R2 10
192.4.153.0 255.255.255.192 网关4 R3 10
default gw 网关5 R4
匹配过程:目的ip与路由器子网掩码相与,若相与结果与network_destination相同,则下一跳路由器确定,从该接口出去,使用arq协议获取下一跳路由器的mac地址,使用该mac地址包装ip数据报并交付出去给下一跳路由器,重复该过程最终交付给目的ip地址