第5章 差错与控制报文协议.ppt_第1页
第5章 差错与控制报文协议.ppt_第2页
第5章 差错与控制报文协议.ppt_第3页
第5章 差错与控制报文协议.ppt_第4页
第5章 差错与控制报文协议.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章Internet控制报文协议ICMP 5 1因特网控制报文协议5 2ICMP报文格式与类型5 3ICMP差错报告5 4ICMP控制报文5 5ICMP请求与应答报文对5 6ICMP报文封装 5 1因特网控制报文协议 ICMP ICMP协议设计的最初目的主要是用于IP层的差错报告 由路由器或信宿以一对一的模式向信源报告传输错误的原因 随着网络的发展 检测和控制功能逐渐被引入到ICMP协议中 使得ICMP协议不仅用于传输差错报告 而且大量用于传输控制报文 ICMP与IP协议位于同一个层次 IP层 但ICMP报文是封装在IP数据报的数据部分进行传输的 ICMP协议是IP协议的补充 用于IP层的差错报告 拥塞控制 路径控制以及路由器或主机信息的获取 返回 5 2ICMP报文格式与类型 ICMP报文由首部和数据段组成 首部为定长的8个字节 前4个字节是通用部分 后4个字节随报文类型的不同有所差异 ICMP报文的一般格式如图所示 ICMP报文虽然细分为很多类 但总的来看可以分为如图所示的三大类 差错报告 控制报文和请求应答报文 返回 5 3ICMP差错报告 ICMP差错报告的数据区包含出错数据报的首部及该数据报的前64位数据 这些信息有助于信源或管理人员发现错误原因 ICMP差错报告具有以下特点 1 只报告差错 但不负责纠正错误 纠错工作留给高层协议去处理 2 发现出错的设备只向信源报告差错 3 差错报告作为一般数据传输 不享受特别优先权和可靠性 4 产生ICMP差错报告的同时 会丢弃出错的IP数据报 形成ICMP差错报告时有以下例外 1 ICMP差错报文本身不会再产生ICMP差错报告 2 分片报文的非第一个分片不会产生ICMP差错报告 3 组播地址报文不会产生ICMP差错报告 4 特殊地址127 0 0 0和0 0 0 0的报文不会产生ICMP差错报告 5 3 1信宿不可达报告 当路由器无法根据路由表转发IP数据报时或主机无法向上层协议和端口提交IP数据报时 将丢弃当前的数据报 并产生信宿不可达差错报告 向信源报告出错 信宿不可达报文如图所示 信宿不可达报文可能由路由器产生 也可能由信宿机产生 产生信宿不可达报文的原因的16种可能 5 3 2数据报超时报告 在数据报的传输过程中 首部的TTL值用于防止数据报因路由表的问题而无休止地在网络中传输 当TTL值为0时 路由器会丢弃当前的数据报 并产生一个ICMP数据报超时报告 另外 在信宿进行分片重组时会启动重组定时器 一旦重组定时器超时 信宿就会丢弃当前正在重组的数据报 然后产生一个ICMP数据报超时报告 并向信源发送该超时报告 数据报超时报告的报文格式与信宿不可达报告的报文格式相同 只是类型和代码值不同 数据报超时报告的类型和代码的含义如表所示 类型值11表示是数据报超时报文 代码 0 表示TTL超时 代码 1 表示分片重组超时 5 3 3数据报参数错报告 数据报参数错报告是由数据报首部字段值不明确或空缺而引起的差错报告 一旦路由器或信宿机发现错误的数据报首部和错误的数据报选项参数时 便抛弃该数据报 并向信源发送差错报告报文 数据报参数错报文的格式如图4 4所示 类型12表明数据报参数错代码 0 表示数据报首部中的某个字段的值有错或不明确 这时ICMP报文首部的指针指向数据报中有问题的字节 代码 1 表示数据报首部中缺少某一选项所必须具有的部分参数 此时的ICMP报文没有指针字段 表4 3给出了数据报参数错报告的类型 代码为 0 的参数错只能报告一个出错参数代码为 1 的参数错只能报告缺少参数 不能说明缺少哪个参数 返回 5 4ICMP控制报文 ICMP控制报文包括源抑制报文和重定向报文源抑制报文 用于拥塞控制重定向报文 用于路径控制下表给出了这两类报文的类型和作用描述 5 4 1源抑制报文 IP协议采用的是无连接数据报方式进行传输发送方事先并不了解中间的路由器和信宿的处理能力和缓冲区大小在数据报传输过程中没有采用任何流量控制机制当大量的数据报进入路由器或信宿时 会造成缓冲区溢出 即出现拥塞 Congestion ICMP利用源抑制的方法来进行拥塞控制 通过源抑制来减缓信源发出数据报的速率 源抑制报文的格式如图6 5所示 源抑制包括三个阶段 发现拥塞阶段 解决拥塞阶段和恢复阶段 在发现拥塞阶段 路由器对缓冲区进行监测 一旦发现拥塞 立即向相应的信源发送ICMP源抑制报文 该信源收到源抑制报文后 便知道拥塞已经发生 而且所发送的数据报已经丢掉 在解决拥塞阶段 信源根据收到的源抑制报文中所带的原数据报的首部信息决定对去往某一特定信宿的信息流进行抑制 通常信源在收到源抑制报文后 按一定的规则降低发往某信宿的数据报传输率 拥塞解除后 信源逐渐恢复数据报传输速率 在拥塞控制中以下几点值得关注 1 虽然对于每个因拥塞而丢弃的数据报都产生ICMP源抑制报文 但信源只按照自己的时间段进行响应 2 拥塞的解除由信源依据是否有进一步的源抑制报文到达来进行判断 3 拥塞可能是由多个源共同行为的结果 由于各个信源的发送速率相差较大 源抑制的效果未必很好 5 4 2重定向报文 因特网上的路由器和主机中都存有一个路由表 路由表决定了去往目的地的下一跳路由器的地址 路由器上的路由表能够及时地反映网络结构的变化 这一特点由路由器之间定期交换路由信息加以保证 主机因为不能保证全天开机 所以主机中的路由表不能及时反映网络结构的变化情况 另外 由于因特网上的主机数量远大于路由器的数量 主机如果参与路由信息的交换 势必带来大量的通信开销 因此主机中的路由表不通过路由协议进行更新 但主机所在的网络可能和多个路由器相连 主机在发送信息时也要根据其路由表来选择下一跳路由器 为了解决主机路由表的刷新问题 ICMP提供了重定向机制 主机路由表所给出的下一跳路由器可能并非去往信宿的最佳下一跳路由器 当主机的下一跳路由器收到数据报后 该路由器根据它的路由表判断本路由器是否是去往信宿的最佳选择 如果不是 该路由器仍然会向信宿网络转发该数据报 但在转发的同时会产生一个ICMP重定向报文 通知信源修改它的路由表 重定向报文中将给出信源最佳下一跳路由器的IP地址 主机A根据重定向报文修改路由表的例子 ICMP重定向报文的格式如图所示 代码从0到3分别代表不同的重定向方式 具体含义由前面的表4 4给出 主机开机后在ICMP重定向机制的作用下 经过不断积累逐渐充实和完善其路由表 动态且优化 值得注意的是 1 ICMP产生重定向报文的时候并不丢弃原数据报 2 ICMP重定向报文由位于同一网络的路由器发送给主机 完成对主机的路由表的刷新 3 被刷新的路由表项与重定向报文数据部分指示的IP数据报首部中的信宿地址相关 内容为重定向报文中目标路由器的IP地址 返回 5 5ICMP请求与应答报文对 ICMP请求与应答报文对的出现使得因特网上的任何主机或路由器可以向其他主机或路由器发送请求并获得应答 通过ICMP请求与应答报文对 网络管理人员 用户或应用程序可以对网络进行检测 了解 设备的可达性地址掩码的设置时钟的同步等情况目的是利用这些有用的信息 对网络进行故障诊断和控制 ICMP请求与应答报文对如表4 5所示 其中的信息请求与应答报文已经不再使用 5 5 1回应请求与应答报文 回应请求与应答报文的目的是对网络进行诊断和测试 回应请求与应答不仅可以被用来测试主机或路由器的可达性 还可以测试IP协议的工作情况 TCP IP网络系统所提供的ping命令大多是利用ICMP回应请求与应答报文来实现的 该命令通常用于测试信宿的可到达性 ICMP回应请求与应答报文的格式如图所示 类型 8 表明是回应请求报文类型 0 表明是回应应答报文协议未对标识符和序列号字段进行正式定义 通常将标识符和序列号用于匹配请求与应答 标识符一般为发起请求进程的进程ID 回应请求与应答报文的标识符和序列号一致 5 5 2时间戳请求与应答报文 因特网中的各个主机和路由器都是独立运行的 因此在时钟上存在着较大的差异 而一些分布式应用系统要求各个设备的时钟是同步的 ICMP时间戳请求与应答报文就是用于设备间进行时钟同步的报文对 用时间戳请求与应答报文进行时钟同步的基本思路是请求方主机通过获取另一主机的时间戳信息 将该信息和请求方主机的时间戳信息进行比较后 估算两者的时钟差异 请求 应答格式如图 类型13 请求报文 类型14 应答报文 初始时间戳字段用于指示请求方发出请求的时间接收时间戳字段用于指示应答方主机收到请求的时间发送时间戳字段用于指示应答方主机发送应答的时间三个时间戳字段各为32比特长 以毫秒为单位从世界时间午夜0点起计时 时间戳的计数值不能超过86400000 24小时 请求报文 填初始时间戳 接收时间戳和发送时间戳为0 应答报文 初始时间戳直接从请求报文中复制 接收时间戳和发送时间戳由应答方主机根据自己接收和发送时的时钟填写 为了估算请求方与应答方之间的时钟差异 首先要计算出时间戳请求和应答的往返延迟 然后据此计算出单程传输延迟 最后由两设备的时间戳和单程传输延迟计算出两台设备之间的时间差 从而实现时钟的同步 往返延迟时间可以用下式计算 往返时间 t当前 t初始 t发送 t接收 t接收 t初始 t当前 t发送假设传输请求的时延和传输应答的时延相同 那么单程时延就等于往返时间的一半 一个时钟同步的例子 主机A发出时间戳请求时的初始时间戳为1000毫秒 主机B收到请求时的接收时间戳是1055毫秒 主机B给出应答时的发送时间戳是1057毫秒 主机A收到应答时的时间为1030毫秒 主机A可以根据这些时间戳计算出两台主机间的时间差 往返时间 t当前 t初始 t发送 t接收 1030 1000 1057 1055 28 毫秒 单程时延 28 2 14 毫秒 时间差 t接收 t初始 单程时延 1055 1000 14 41 毫秒 由上面的计算可知 主机B的时钟比主机A的时钟快了41毫秒 5 5 3地址掩码请求与应答报文 地址掩码请求与应答报文使得一台主机可以获得另一台主机或路由器的子网掩码 如果能够获得本网络中路由器的子网掩码 也就得到了本机所属子网的掩码 无盘机通过RARP获得IP地址后 可以利用地址掩码请求来获得子网掩码 地址掩码请求与应答报文的格式如图4 11所示 类型 17 表示地址掩码请求 地址掩码请求报文的地址掩码字段为 0 类型 18 表示地址掩码应答 5 5 4路由器请求与通告报文 初始化路由表的方法 在配置文件中指定静态路由利用ICMP路由器请求和通告报文来获得路由器的IP地址 通过路由器请求和通告报文还可以知道路由器是否处于活动状态 主机在引导以后通过广播或组播发出路由器请求报文 一台或更多台路由器以路由器通告报文作为响应 即使没有路由器请求报文 路由器也可以定期广播或组播路由器通告报文 ICMP路由器请求报文和路由器通告报文的格式如图 地址数字段指明报文所含的地址项的个数 一个地址项由一个IP地址和一个4字节的地址优先级构成 地址项大小字段指明每个路由器地址项所占32比特字的数目 一般为2 生存期字段以秒为单位指明所通告地址的有效时间 数据区是一到多个地址项 地址项中的优先级指出该IP地址作为默认路由器地址的优先等级 值越小优先级越高 若地址优先级为0 则该地址可作为默认路由器地址 优先级为0 x80000000时 表明该地址不能作为默认路由器地址使用 返回 5 6ICMP报文封装 向下 虽然ICMP协议可以接受来自上层的请求 但并不直接封装来自上层协议的数据 ICMP协议将请求转变为ICMP报文 然后将报文封装在IP协议中进行发送 包含ICMP报文的IP数据报首部的协议字段为 1 向上 IP软件一旦接收到差错或控制报文 立即交给ICMP模块进行处理 ICMP模块可以形成应答报文 也可以交给上层的应用程序或协议去处理 本章要点 ICMP协议是IP协议的补充 用于IP层的差错报告 拥塞控制 路径控制以及路由器或主机信息的获取 ICMP既不向信宿报告差错 也不向中间的路由器报告差错 而是向信源报告差错 ICMP与IP协议位于同一个层次 但ICMP报文被封装在IP数据报的数据部分进行传输 ICMP报文可以分为三大类 差错报告 控制报文和请求 应答报文 ICMP差错报告分为三种 信宿不可达报告 数据报超时报告和数据报参数错报告 数据报超时报告包括TTL超时和分片重组超时 数据报参数错包括数据报首部中的某个字段的值有错和数据报首部中缺少某一选项所必须具有的部分参数 ICMP控制报

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论