在不划分子网的两级IP 地址下,从IP地址得出网络地址是个很简单的事。但在划分子网的情况下,从 IP地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。 因此分组转发的算法也必须做相应的改动。
在划分子网情况下路由器 转发分组的算法
(1) 从收到的分组的首部提取目的IP地址D。
(2) 先用各网络的子网掩码和D逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付, 执行(3)。
(3) 若路由表中有目的地址为D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)。
(4) 对路由表中的每一行,将子网掩码和D 逐位相“与”。若结果 与该行的目的网络地址匹配,则将分组传送给该行指明的下 一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明 的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。
【例】已知互联网和路由器R1 中的路由表。 主机H1 向H2 发送分组。 试讨论R1 收到H1 向H2 发送的分组后查找路由表的过程。
主机H1 要发送分组给H2,要发送的分组的目的 IP 地址:128.30.33.138。
因此 H1首先检查主机 128.30.33.138 是否连接在本网络上如果是,则直接交付; 否则,就送交路由器 R1,并逐项查找路由表。
主机H1 首先将本子网的子网掩码255.255.255.128与分组的IP地址128.30.33.138 逐比特相“与”(AND 操作)
因此H1 必须把分组传送到路由器R1 然后逐项查找路由表。
路由器R1收到分组后就用路由表中第1个项目的子网掩码和128.30.33.138 逐比特AND操作。
路由器R1 收到分组后就用路由表中第1 个项目的 子网掩码和128.30.33.138 逐比特AND 操作。