IP 层转发分组的流程

路由表信息

在一个路由表中,对每条路由最主要的是以下两个信息:
(目的网络地址,下一跳地址)
例子
在这里插入图片描述
我们就根据目的网络地址确定下一跳的路由器,所以可以得出以下结果:
(1)IP数据报最终一定可以找到目的主机网络上的路由器(可能通过多次间接交付)
(2)只有到达最后一个路由器时,才试图向目的主机直接交付。

虽然互联网中所有的分组转发都是基于目的主机的网络,但是也允许特例,即对特定的目的主机指定一个路由。这种路由叫特定主机路由。

路由器还可采用默认路由以减小路由表所占用的空间和搜索路由表所用的时间。当然默认路由只对某个网络中只有很少的对外连接是有用的。

如果一个主机在一个小网络上,且该网络只用一个路由器与网络连接,那么这种情况下使用默认路由是比较方便的。看一个例子:
在这里插入图片描述
在上面这个图中,连接到N1上的任何一台主机中的路由表只需要三个项目即可。
1、本网络主机的路由,其目的网络就是本网络 N1,不需要路由器转发,直接交付。
2、第二个项目是网络N2的路由,对应的下一跳路由器是 R2.
3、第三个项目就是默认路由,只要目的地址是其它的网络,就一律选择默认路由。将数据报间接交付给 R1, 再让R1转发给 互联网中的下一个路由器,其它被记为 0.0.0.0 。
注意:当路由器接收到一个待转发的数据报,在从路由表得到下一跳路由器的 IP地址后,不是将这个地址填入IP数据报。而是送交数据链路层的网络接口软件,网络接口软件使用 ARP将下一跳的IP地址转化为硬件地址放到链路层的MAC帧首部,然后根据这个硬件地址找到下一跳路由器。

路由器为什么不直接用硬件地址呢?
IP的存在本来就是为了隐蔽底层网络的复杂性而便于分析和研究问题。
感兴趣可以看下知乎回答:为什么不直接用硬件地址通信?

分组转发算法
1、提取出 目的主机IP地址 D,得到目的主机网络地址N
2、若N就是与此路由器相连的某个网络地址,直接交付 将D转换为 具体的硬件地址(ARP)再封装MAC帧,否则间接交付,执行(3)
3、若路由表中有目的地址为 D的特定主机路由,则将数据报传送给路由表指明的下一跳路由器;否则执行(4)
4、若路由表中有直达N的网络,则将数据报传送给路由表指明的下一跳路由器;否则执行(5)
5、若路由表中有默认路由,则将数据报传送给路由表默认路由;否则执行(6)
6、报告分组转发出错

后来划分子网该算法也需要做出相应改变,下次会记录那部分。

参考文章
《计算机网络》 第七版 谢希仁

猜你喜欢

转载自blog.csdn.net/weixin_45146520/article/details/114809180