码迷,mamicode.com
首页 > 其他好文 > 详细

IP数据报分片、组装过程以及路由表的建立过程

时间:2016-08-03 15:41:09      阅读:561      评论:0      收藏:0      [点我收藏+]

标签:linux

1)IP分组 中3位标志

标志位共三位

最高位为0 该值必须复制到所有的分组中

DF(Do not Fragment) 

DF 值为1 表示不能分片 如果分组的长度超过MTU 又不可以分片 则这个分组丢弃 并用ICMP差错报文向主机报告

           0 表示可以分片

MF (More Fragment)

MF 值为1 表示接收的不是最后一个分片

              0 表示 接收的是最后一个分片

2)分片、组装 过程 描述

IP分组头中 ,与分组和组装相关的 字段有: 标识(16位)、标志(3位)、片偏移(13位)。

最大传输单元:每中局域网 中规定的 帧的数据字段的最大长度。

分片过程:

               当IP分组的长度大于数据链路层MTU时, 就必须对IP分组进行分片。IP分组首先需要确定片长度,然后将原始IP分组包括分组头分成第一片。

如果剩下的数据仍然超过片长度,则需要进行第二次分片, 第二次分片数据加上原来的分组头,构成第二片。这样一直分割下去,到最后一片剩下的数据小于MTU为止。

标识位:16位,最多分配ID65535个    标记是哪一个分组的

               每个分组由多个分片组成,每个分片的标识位一样,这样到达目的主机,目的主机可以根据标识 将不同分组的分片找出来。

片偏移: 片偏移以8字节位单位来计算。利用片偏移可以对 通过标识位找到的同一分组的分片 进行排序,一位只要根据片偏移将他们进行排序,就找到了              

一个分组。

标志位: 知道哪一个分片是当前分组的最后一个。

组装过程:

    分组可能通过不同的传输路径到达目的主机。属于同一分组的不同片到达时会出现乱序,或者与其他分组混合在一起。首先,根据标识字段将属于同一分组的所有片挑出来,主机在第一个分片到达时分配一个存储缓冲区,当数据报的后序分片到达时,数据根据片位移被复制到缓冲区存储器中的指定位置,当所有的分片都到达时,原始数据报就恢复了。 

3)路由表是 如何建立的 

一般路由器只需要记录 子网掩码、目的网络地址、下一跳路由器地址与路由器转发端口,不需要也不可能记录完整的路径。

路由表就是记录上面信息的一张表。

   路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表其他行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。


     路由表的生成 主要是通过 路由选择算法。

     路由表的更新主要是通过 路由选择协议。如 路由信息协议 RIP、开放最短路径优先的OSPF协议。协议都是基于算法的。RIP基于向量-距离(V-D)路由选择算法。

     V-D算法设计思想:

      路由器周期性的通知相邻的路由器:自己可以到达的网络,以及到达该网络的距离(跳数)。

     其他路由器在接收到这个路由器的(V,D)报文后,按照最短路径原则对自己的路由表进行刷新。

     注意:刚开始路由器路由表没有信息,要经过初始化,初始化的路由表包含所有与该路由直接相连的网络的路由。然后就是不断的更新。



本文出自 “城市猎人” 博客,请务必保留此出处http://alick.blog.51cto.com/10786574/1833860

IP数据报分片、组装过程以及路由表的建立过程

标签:linux

原文地址:http://alick.blog.51cto.com/10786574/1833860

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!