计算机网络作业教材 P128所述的分组转发算法如下:(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N
(2) 若网络 N 与此路由器直接相连, 则把数据报直接交付目的主机 D;否则是间接交付, 执行 (3)
(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)
(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)
(5) 若路由表中有一个默认路由, 则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)
(6) 报告转发分组出错
将该算法加以修改便可用于如下图所示(P130)划分子网的 B类网络
0 修改后的算法如下:(1) 从收到的分组的首部提取目的 IP 地址 D
(2) 先用各网络的子网掩码和D逐比特相“与”,看是否和相应的网络地址匹配
若匹配,则将分组直接交付
否则就是间接交付,执行(3)
(3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行 (4)
(4) 对路由表中的每一行的子网掩码和 D 逐比特相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)
(5) 若路由表中有一个默认路由, 则将分组传送给路由表中所指明的默认路由器;否则,执行 (6)
(6) 报告转发分组出错
用流程图表示上述算法如下:用 C++实现该算法,考虑传送到路由器R2处的 IP数据报分组,经过路由选择决定否否是是开始提取目的 IP地址 D 用子网掩码与D逐位相“与”直接交付与相应网络地址匹配
传送给指明的下一路由器路由表中第行子网掩码与 D 逐位相“与”传送给该行指明的路由器路由表中有目的地址为D 的特定主机路由