当前位置:   article > 正文

计网 | IP数据报的传输过程地址变化 及 路由器的分组转发算法与例题_一个ip分组经路由器转发后,有哪些字段会发生变化

一个ip分组经路由器转发后,有哪些字段会发生变化

 


1、不考虑NAT,IP地址不会改变

2、考虑NAT,内网IP地址会改变

3、只要经过路由器,MAC地址都改变 

在不考虑NAT情况下:

        源/目的IP地址永远不会改变

        源/目的MAC地址会改变

假设主机A想要向主机C发送IP数据报,过程如下:

         1、主机A准备好想要发送的IP数据,并在IP数据前加上首部部分(各种字段),传输过程中主要使用 源地址(A)、目的地址(C)

        2、打包形成协议块,向下传递到数据链路层,增加额外信息,由于A和C不直接相连,故额外信息中 源地址(A),目的地址(路由器)

        3、路由器收到信息后,剥除数据链路层信息,获得MAC帧数据部分,即IP数据报部分,此时IP数据报中首部中的 源IP地址和目的IP地址 仍然是 A和C

        4、打包形成协议块,向下传递到数据链路层,增加额外信息,额外信息中 源地址(路由器),目的地址(C)。

 


在考虑NAT情况下:

        源/目的内网IP地址会改变

        源/目的MAC地址会改变


 

路由器的分组转发算法

 

  • 1、从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。
  • 2、
    • 若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);
    • 否则就是间接交付,执行3。
  • 3、若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行4。
  • 4、若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行5。
  • 5、若路由表中有一个默认路由,则把数据报传送给路由器中所指明的默认路由器;否则,执行6。
  • 6、报告转发分组出错。

路由表并没有给分组指明到某个网络的完整路径(即先经过哪一个路由器,然后再经过哪一个路由器,等等)。

路由表指出,到某个网络应当先到某个路由器(即下一跳路由器),在到达下一跳路由器后,再继续查找其路由表,知道再下一步应当到哪一个路由器。这样一步一步地查找下去,直到最后到达目的网络。


 

【划分子网】路由器的分组转发算法

 

在划分子网的情况下,分组转发的算法必须做相应的改动。

使用子网划分后,路由表必须包含以下三项内容:目的网络地址、子网掩码和下一跳地址。

划分子网的情况下,路由器转发分组的算法如下:

  • 1、从收到的数据报的首部提取目的IP地址D。
  • 2、先判断是否为直接交付。
    •  对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”,看结果是否和相应的网络地址匹配。
      • 若匹配,则把分组进行直接交付(还需要把D转换成物理地址,把数据报封装成帧发送出去),转发任务结束。
      • 否则就是间接交付,执行(3)。
  • 3、若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
  • 4、对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相“与”,其结果为N。
    • 若N与该行的目的网络地址匹配,则把数据报传送给改行指明的下一跳路由器;
    • 否则,执行5。
  • 5、若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行6。
  • 6、报告转发分组出错。
     

【例4-4】图4-24有三个子网,两个路由器,以及路由器R1中的部分路由表。现在源主机H1向目的主机H2发送分组。R1收到H1向H2发送的分组后查找路由表的过程。 

解:

  1. 源主机H1首先要进行的操作是要判断:发送的这个分组,是在本子网上进行直接交付还是要通过本子网上的路由器进行间接交付?
    1. 源主机H1把本子网的“子网掩码255.255.255.128”与目的主机H2的“IP地址128.30.33.138”逐位相“与”(即逐位进行AND操作),得出128.30.33.128,它不等于H1的网络地址(128.30.33.0)。
    2. 这说明H2与H1不在同一个子网上。因此H1不能把分组直接交付H2,而必须交给子网上的默认路由器R1,由R1来转发。
  2. 路由器R1在收到一个分组后,就在其路由表中逐行寻找有无匹配的网络地址
    1. 路由表第一行:用这一行的“子网掩码255.255.255.128”和收到的分组的“目的地址128.30.33.138”逐位相“与”(即逐位进行AND操作),得出128.30.33.128。然后和这一行给出的目的网络地址128.30.33.0进行比较。但比较的结果不一致(即不匹配)。
    2. 用同样方法继续往下找第二行:用第二行的“子网掩码255.255.255.128”和该分组的“目的地址128.30.33.138”逐位相“与”(即逐位进行AND操作),结果也是128.30.33.128。这个结果和第二行的目的网络地址128.30.33.128相匹配说明这个网络(子网2)就是收到的分组所要寻找的目的网络。于是不需要再继续查找下去。
  3. R1把分组从接口1直接交付主机H2(它们都在一个子网上)。


【例4-2】图4-23中有三个子网通过两个路由器互连在一起。主机H1发送出一个分组,其目的地址是128.1.2.132。现在源主机是H1而目的主机是H2。试讨论分组怎样从源主机传送到目的主机。
在这里插入图片描述
【解】

  1. 主机H1首先必须确定:目的主机是否连接在本网络上?如果是,那么问题很简单,就直接交付,根本不需要利用路由器;如果不是,就间接交付,把分组发送给连接在本网络上的路由器,以后要做的事情都由这个路由器来处理。
    1. 主机H1先把要发送的分组的目的地址和本网络N1的子网掩码按位进行AND运算,得出运算结果。
    2. 如果运算结果等于本网络 N1的前缀,就表明目的主机连接在本网络上;否则,就必须把分组发送到路由器R1,由路由器R1完成后续的任务。
    3. 由于采用了CIDR记法,转发表中给出的都是网络前缀,而没有明显给出子网掩码。
    4. 其实只要细心观察斜线后面的数字,就可知道相应的子网掩码。例如,/26 的子网掩码就是点分十进制的255.255.255.192。
    5. 现在,要发送的分组的目的地址是128.1.2.132,本网络的掩码是26个1,后面有6个0。如图4-24(a)所示,按位.AND运算的结果是128.1.2.128,不等于本网络N1的前缀。
    6. 这说明目的主机没有连接在本网络上。源主机H1必须把分组发送给路由器R1,让路由器R1根据其转发表来处理这个分组。在这里插入图片描述
  2. 路由器R1的部分转发表已在图4-23右上方给出了。
    1. 转发表中第1列就是“前缀匹配”,这是因为查找转发表的过程就是寻找前缀匹配的过程
    2. 现在先检查路由器R1的转发表中的第1行。
    3. 源主机H1要发送的分组的目的地址是128.1.2.132。本网络128.1.2.192/26的前缀有26位,因此本网络的掩码是26个1,后面是6个0。
    4. 目的地址和子网掩码按位.AND运算的结果是128.1.2.128/26(见图4-24(a))。很明显,AND运算结果与转发表第1行的前缀不匹配。
    5. 接着检查路由器R1的转发表中的第2行。运算结果是128.1.2.128/26,如图4-24(b)所示。这个结果和转发表第2行的前缀相匹配。
    6. 因此按照转发表第2行指出的,在网络N2上进行分组的直接交付(通过路由器R1的接口1)。
    7. 这时路由器R1调用ARP,解析出目的主机H2的MAC地址,再封装成链路层的帧,直接交付连接在本网络N2上的目的主机H2。
  3. 如果按照同样的方法,检查路由器R1的转发表中的第3行,不难得出不匹配的结果。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/431389
推荐阅读
相关标签
  

闽ICP备14008679号