网络层(二)——IP数据报转发

前言

网络层的主要目的是为了对上层屏蔽各种复杂、异构的底层网络,从而提供简单灵活的、无连接的、尽最大努力交付的数据报服务。前面我们介绍了IP地址,它为网络上的每一台主机和路由器的每个接口指明了一个唯一的地址。为了完成数据报的交付,下一步的任务就是在知道了目的主机的IP地址后,如何将数据报送过去。

这就有点类似于“把信送给加西亚”的故事。我们有一封信,也知道送给谁,但怎么送到目前还不知道。

路由表

要实现IP数据报的转发离不开路由器。路由器工作在网络层,将多个网络连接在一起。它就像是岔路口的指示牌,为数据报(分组)指明了前进的方向。这一点其实我们从路由器的名字中就可以看出——“路由”,即“路该由此向哪里走”。而具体来说,这一功能则是通过路由表以及相应的转发算法来实现的。路由表里面存储了一系列的路由,而一条路由包括如下信息:

                                                                         (目的网络地址,下一跳地址)

下面简单说明路由表的工作原理:当一个分组到达后,路由器首先提取出分组中包含的目的IP地址,并计算出IP地址中的目的网络地址,接下来在路由表中查找与目的网络地址匹配的路由,如果匹配成功,就将该分组转发到下一跳地址所示的路由器。

IP分组转发算法

其实刚刚介绍的路由表的工作原理已经包含了IP分组转发算法的主要思想。但有一点需要注意的是,在路由表中每一个路由仅仅指明了要去往目的网络的下一个路由器的地址,而并没有给出到达目的网络的完整路径。这就好像我们平时问路,路人虽然知道目的地在哪里,但并不是很好清晰地讲出来,于是就告诉我们你先去下一个十字路口,到那里之后再找个人问问。

另外还有一点需要注意的是,有时候目的网络和路由器直接相连,那么就不需要下一跳地址,而可以直接把数据报发送给目的网络上的主机,因此就有了直接交付间接交付的概念。

下面给出具体的IP分组转发算法:

  1. 从数据报的首部提取出目的主机的IP地址D,并计算出目的网络地址N;
  2. 若N就是与此路由器直接相连的某个网络,则进行直接交付,不再经过其他的路由器直接把数据报交付目的主机(这里涉及到地址解析协议,不再详述);否则就是间接交付,执行(3);
  3. 若路由表中有目的地址为D的特定主机路由,则把数据报传送给该路由指明的下一跳地址;否则,执行(4);
  4. 若路由表中有目的网络地址为N的路由,则把数据报传送给该路由指明的下一跳地址;否则,执行(5);
  5. 若路由表中有一个默认路由,则把数据报该默认路由指明的下一跳地址;否则,报告转发分组出错。

另外,当涉及到包含子网划分的问题时,需要将路由做如下改动:

                                                                (目的网络地址,子网掩码,下一跳地址)

相应的,上述算法也需要做一些改动,但整体流程还是一致的。改动如下:

  1. 从数据报的首部提取出目的主机的IP地址D;
  2. 用与此路由器直接相连的网络的子网掩码与D做按位逻辑与操作,若得出的网络地址N和与路由器相连的网络地址匹配,则进行直接交付,不再经过其他的路由器直接把数据报交付目的主机(这里涉及到地址解析协议,不再详述);否则就是间接交付,执行(3);
  3. 若路由表中有目的地址为D的特定主机路由,则把数据报传送给该路由指明的下一跳地址;否则,执行(4);
  4. 用路由表中每一个路由包含的子网掩码与D作按位逻辑与操作,若得出的网络地址N与路由中的目的网络地址匹配,则把数据报传送给该路由指明的下一跳地址;否则,执行(5);
  5. 若路由表中有一个默认路由,则把数据报该默认路由指明的下一跳地址;否则,报告转发分组出错。

结语

以上内容简单介绍了IP数据报是如何转发的,可以看出,转发的关键就在于路由表的使用。但其实还有一个关键问题没有解决,那就是路由表是如何构建的,它是如何保证按照路由表上的指引最终能够到达目的主机的呢?关于这一问题就需要了解路由选择协议了,小白的我这一块还不是很明白,以后有机会再补充吧

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值