TCP/IP协议分析(第七讲)主讲:李勇第六章ICMP协议分析TCP/IP协议分析36.1ICMP概述ICMP经常被认为是IP层的一个组成部分。它传递差错信息以及其它需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错信息返回给用户进程。ICMP的正式规范参见RFC792[Posterl1981b]。ICMP信息是在IP数据报内部被传输的。TCP/IP协议分析41、ICMP报文格式首部ICMP报文0数据部分检验和类型代码(这4个字节取决于ICMP报文的类型)81631IP数据报前4个字节都是一样的ICMP的数据部分(长度取决于类型)TCP/IP协议分析52、ICMP协议的主要功能①通告网络错误。②通告网络拥塞。③协助解决故障。④通告超时。TCP/IP协议分析63、ICMP报文的类型ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。具体报文类型见P97表6-1。TCP/IP协议分析76.2ICMP询问报文ICMP询问报文有两种:回送请求和回答报文时间戳请求和回答报文下面的几种ICMP报文不再使用信息请求与回答报文掩码地址请求和回答报文路由器询问和通告报文TCP/IP协议分析81、ICMP回显请求和回显应答报文TCP/IP协议分析92、举例Ping命令TCP/IP协议分析103、ICMP时间戳请求与应答报文ICMP时间戳请求允许系统向另一个系统查询当前的时间。返回的建议值是自午夜开始计算的毫秒数,协调的统一时间(CoordinatedUniversalTime,UTC)。这种ICMP报文的好处是它提供了毫秒级的分辨率,而利用其他方法从别的主机获取的时间只能提供秒级的分辨率。由于返回的时间是从午夜开始计算的,因此调用者必须通过其他方法获知当时的日期,这是它的一个缺陷。TCP/IP协议分析114、ICMP时间戳请求与应答报文格式TCP/IP协议分析125、ICMP时间戳请求与应答的作用目的:同步互连网中各个主机的时钟。方法:首先利用该报文从其它主机处获得其时钟的当前时间;根据时戳请求与应答报文接收的时间,计算出两地的往返延迟,以此数据来同步时钟,但这种时钟同步能力是有限的。TCP/IP协议分析136.3ICMP差错报告报文ICMP差错报告报文共有5种:终点不可达源点抑制(Sourcequench)时间超过参数问题改变路由(重定向)(Redirect)TCP/IP协议分析141、ICMP差错报告报文的内容首部IP数据报ICMP的前8字节装入ICMP报文的IP数据报IP数据报首部ICMP差错报告报文8字节收到的IP数据报IP数据报首部8字节ICMP差错报告报文IP数据报的数据字段TCP/IP协议分析152、不应发送ICMP差错报告报文的几种情况对ICMP差错报告报文不再发送ICMP差错报告报文。对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。对具有多播地址的数据报都不发送ICMP差错报告报文。对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。TCP/IP协议分析166.3.1目的不可达报文格式TCP/IP协议分析171、目标不可达的情况有16种不同类型的ICMP不可达报文,代码分别从0到15。ICMP端口不可达差错代码是3。TCP/IP协议分析182、举例端口不可达需要进行分片但设置了禁止分片位由于过滤,通信被强制禁止TCP/IP协议分析196.3.2超时报文有两种情况需要发送超时报文。一种是路由器把数据报的生存时间减至零时,路由器丢弃数据报,并向源主机发送超时报文;另一种是一个数据报的所有段到达前,重组计时到点,接收主机也会向源主机发送超时报文。TCP/IP协议分析201、超时报文格式TCP/IP协议分析216.3.3路由重定向报文当一个源主机创建的数据报发至某路由器,该路由器发现数据报应该选择其他路由,则向源主机发送改变路由报文。改变路由的报文能指出网络或特定主机的变化,一般发生在一个网络连接多路由器的情况下。TCP/IP协议分析221、重定向报文格式TCP/IP协议分析232、举例1、路由重定向2、不正确的路由