分组转发算法
更新日期:
文章目录
在Ip数据报的首部中没有地方可以用来指明“下一跳路由器的IP地址”。在IP数据报的首部写上的IP地址是源IP地址和目的IP地址,而没有中间经过的路由器的IP地址。既然IP数据报中没有下一跳路由器的IP地址,那么待转发的数据报又怎样找到下一跳路由器呢?
当路由器收到一个带转发的数据报,在从路由表的出下一跳路由器的IP地址后,不是把这个地址填入IP数据报,而是送交数据链路层的网络接口软件。网络接口软件负责把下一跳路由器的IP地址转换成硬件地址(使用ARP),并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器。由此可见,当发送一连串的数据报时,上述的这种查找路由表、计算硬件地址、写入MAC帧的首部等过程,将不断的重复进行,造成了一定的开销。
根据上述,可归纳出分组转发算法如下:
(1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址N。
(2)若N就是与此路由器直接相连的某个网络地址,则直接进行交付,不需要再经过其他的路由器,直接把数据报交付目的主机(这里包括把目的主机地址D,转化为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就是间接交付,执行3;
(3)、若路由表中有目的地址D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行4;
(4)若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行5;
(5)、若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行6;
(6)、报告转发分组错误;