您好,欢迎访问三七文档
ICMP协议1ICMP协议的概念与作用2ICMP数据包的层次与格式3ICMP数据包的类型4ICMP差错报文的特点5各种ICMP数据包5.1差错报告报文5.2icmp控制报文5.3icmp请求/应答报文6.ICMP应用:1.ping2.tracert3.MTU计算1ICMP协议的概念与作用ICMP(InternetControlMessagesProtocol,网际控制报文协议),通过它可以知道故障的具体原因和位置。由于IP不是为可靠传输服务设计的,ICMP的目的主要是用于在TCP/IP网络中发送出错和控制消息。ICMP的错误报告只能通知出错数据包的源主机,而无法通知从源主机到出错路由器途中的所有路由器(环路时)。ICMP数据包是封装在IP数据包中的。2ICMP数据包的层次与格式层次:ICMP数据包是封装在IP数据包中的。应用程序应用程序应用程序应用程序TCPUDPIGMPIPIGMPRARP硬件接口ARP物理传输介质链路层网络层传输层应用层2ICMP数据包的层次与格式ICMP数据包格式如图5-1所示。3.ICMP数据包类型ICMP报文的种类有三大类种,即ICMP差错报告报文、控制报文、请求/应答报文。各大类型报文又分多种类型报文。(见后面附图)3.ICMP数据包类型信息不可到达报告IP协议IP数据报IP数据报传输协议差错与控制报文协议ICMP差错报告报文超时报告参数出错报告控制报文源抑制报文重定向报文请求/应答报文时戳请求/应答报文地址模请求/应答报文回应请求/应答报文IP协议全貌3.ICMP数据包类型类型代码说明查询差错00回送应答(ping命令应答)√目标不可达0网络不可达√1主机不可达√2协议不可达√3端口不可达√4需要进行分片,但设置了DF不分片(2.3.2节)√5源路由选择失败√36目标网络未知√ICMP报文的类型和代码字段的值与ICMP报文类型的对应关系3.ICMP数据包类型ICMP报文类型7目标主机未知√8源主机被隔离√9与目标网络的通信被强制禁止√10与目标主机的通信被强制禁止√11对于请求的服务类型TOS,网络不可达√12对于请求的服务类型TOS,主机不可达√13由于过滤,通信被强制禁止√14主机越权√15优先权中止生效√3.ICMP数据包类型ICMP报文类型40源站抑制(用于拥塞控制)√重定向0对网络重定向√1对主机重定向√2对服务类型和网络重定向√53对服务类型和主机重定向√80回送请求(ping命令请求)√90路由通告√100路由请求√3.ICMP数据包类型ICMP报文类型超时0在数据报传输期间生存时间TTL为0√111在数据报组装期间生存时间TTL为0√参数出错0IP数据报头部错误(包括各种差错)√121缺少必需的选项√130时间戳请求√140时间戳应答√170地址掩码请求√180地址掩码应答√4ICMP差错报文的特点报告IP数据报在传输中的差错是ICMP报文最基本的功能,ICMP差错报文有如下特点:(1)ICMP差错报文都是由路由器发送到源主机的,因为IP数据报中含有源主机的IP地址,报告给源主机是最可行的方案,另外,发出IP数据报的源主机最需要知道数据是否到达目标主机。(2)ICMP差错报文只提供IP数据报在传输过程中的差错报告,并不规定对各类差错应采取什么样的处理措施。具体对差错的处理,由收到ICMP差错报文的源主机将相应的差错与应用程序联系起来才能进行相应的差错处理。4ICMP差错报文的特点(3)ICMP差错报文不享受任何优先权,也没有特别的可靠性保证措施,与普通的IP数据报一样进行传输,传输过程中可能被丢失、损坏,甚至被抛弃。(4)ICMP差错报文是伴随着抛弃出错的IP数据报而产生的。(5)当路由器发送一份参数错误等的ICMP差错报文时,ICMP报文数据区始终包含产生ICMP差错报文的IP数据报的头部和其数据区的前8个字节(64位)。4ICMP差错报文的特点当路由器发送参数错误等的ICMP报文数据字段由两部分组成,一部分是收到的需要进行差错报告的IP数据报的首部,另一部分是IP数据报的数据字段的前8个字节,如图5-3所示。4ICMP差错报文的特点(6)在有些情况下,为了防止在网络中产生大量的ICMP差错报文(广播风暴),影响网络的正常工作,即使发生差错,也不会产生ICMP差错报文,这些情况包括:●ICMP报文发生差错。这是为了避免差错报文无休止产生而规定的(但ICMP查询报文可能会产生ICMP差错报文)。●目的地址是广播地址或多播地址(D类地址)的IP数据报。●作为链路层广播的数据报。●不是IP分片的第一片。●源地址不是单个主机的数据报。这就是说,源地址不能为零地址、回送地址、广播地址或多播地址。5.1差错报告报文信息不可达报文网关在以下情况下发出信息不可到达报告1)信宿机硬件出现故障或关机;2)发送者指定的地址不存在;3)网关不知道去往信宿的路径;信宿不可到达报告的格式校验和类型(3)码(0-12)校验和未用(全0)出错数据报报头+前64bit数据........码域值:0~12,进一步说明信宿不可到达的具体原因码值意义码值意义0网络不可到达1主机不可到达2协议不可到达3端口不可到达4需分片,但DF置位5源路由失败6信宿网络未知7信宿主机未知8源主机被隔离9与信宿网络的通信被隔离10与信宿主机的通信被隔离11对请求的服务类型,网络不可到达12对请求的服务类型,主机不可到达5.1差错报告报文信息不可达报文5.1差错报告报文互连网寻址是路由器根据本地寻径表进行的;如果寻址出现错误,可能出现routingcycle;为了避免报文无限制的在网中循环,IP协议采用了两种措施:在数据报头设置TTL域;对分片数据报采用定时器技术;当报文超时出现时,路由器或信宿立即丢弃该数据报,并使用ICMP超时报文向信源机发送报告;超时报文5.1差错报告报文1)参数出错报文报告出错的报文头与错误的报文选项参数2)路由器或信宿机在丢弃参数出错的报文时,将向信源机发出参数出错报文;3)参数出错报文格式:码(0-12)类型(12)码(0或1)校验和指针£数据报报头+前64位数据......未用(全0)0--数据报某个参数错,指针域指向出错的字节;1--数据报缺少某个选项,无指针域;参数出错报文5.2ICMP控制报文ICMP控制报文1.拥塞控制与源站抑制报文当一个路由器接收IP数据报的速度比其处理IP数据报的速度快,或一个路由器传入数据报的速率大于传出数据报的速率时,就会产生拥塞(Congestion)现象。这时路由器可以通过发送源站抑制(SourceQuench)报文来抑制源主机发送IP数据报的速率,避免可能产生的差错。5.2ICMP控制报文源站抑制报文的类型字段为4,代码字段只能为0。源站抑制技术进行拥塞控制的方法如下:(1)当路由器发生拥塞时,便发出ICMP源站抑制报文。拥塞的判别可以用三种方法:一是检查路由器缓存区是否已满;二是给缓存区输出队列设置一个阈值,判断队列中数据报的个数是否超过阈值;三是检测某输入线路的传输率是否过高。(2)源主机收到抑制报文后,按一定的速率降低发往目标主机的数据报传输率。(3)如果在一定的时间间隔内源主机没有收到抑制报文,便认为拥塞已解除,源主机可以逐渐恢复到原来数据报的流量。5.2ICMP控制报文2.路由控制与重定向报文假如源主机要向目标主机发送IP数据报,源主机的默认路由是路由器1,则源主机先把IP数据报送到路由器1,再由路由器1进行路由选择。路由器1经过选路后,把IP数据报送到路由器2。同时路由器1也发现源主机要发送到目标主机的IP数据报以后可以直接发送到路由器2(因为路由器1和路由器2同在一个网络中),则路由器1向源主机发送一个ICMP重定向报文,告诉它可以直接把IP数据报送到路由器2。这样,就使源主机始终保持着一个动态的、既小且优的路径表。5.2ICMP控制报文目标主机路由器2路由器1③ICMP重定向报②IP数据报源主机①IP数据报④后继IP数据报ICMP重定向例子5.2ICMP控制报文重定向优缺点与报文格式优点:保证主机有一个动态、小而优的寻径表缺点:只能用于同一网络内的网关与主机之间的路径信息交换而不能用于网关之间的路径信息交换;081631类型(5)码(0-3)校验和网关IP地址数据报报头+前64位数据?.....•码值:1--对主机重定向报文;2--对服务类型和网络的重定向报文3--对服务类型和主机的重定向报文ICMP差错报告与控制报文是单向传输的报文5.3请求与应答报文回送请求与应答报文1)目的:测试信宿机或路由器是否可以到达;2)报文格式:081631类型(8或0)码(0)校验码标识符序号任选数据......1)标识符与序号用来确定是哪一台主机发出的回应请求;2)回应请求与应答报文以IP数据报方式在互连网中传输,如果成功接收到应答报文的话,则说明数据传输系统、IP与ICMP软件工作正常,信宿机可以到达;3)TCP/IP实现中,用户的ping命令就是利用回应请求与应答报文测试信宿机是否可以到达;5.3请求与应答报文1)目的:同步互连网中各个主机的时钟;2)方法:首先利用该报文从其它主机处获得其时钟的当前时间,根据时戳请求与应答报文接收的时间,计算出两地的往返延迟,以此数据来同步时钟,因此这种时钟同步能力是有限的;3)时戳请求与应答报文的格式:时戳请求与应答报文081631类型(13或14)码(0)校验码标识符序号初始时戳接收时戳发送时戳5.3请求与应答报文地址掩码请求与应答报文081631类型(13或14)码(0)校验码标识符序号初始时戳接收时戳发送时戳1)用于无盘系统在引导过程中获取自己的子网掩码。2)主机启动时,会广播一个地址掩码请求报文。路由器收到地址掩码请求报文后,回送一个包含本网使用的32位地址掩码的应答报文。27有三种基于ICMP的简单而广泛使用的应用为:Ping,Traceroute,MTU测试Ping使用ICMP回送和应答消息来确定一台主机是否可达。ICMP应用发送数据Z我不知道怎样访问Z广域网到Z目的端不可达ICMP描述了目的地不可达A28B可以到达吗?可以,我在这里。ICMP回声请求ICMP回声应答由PING命令产生的回声应答ABPing是应用层直接使用网络层ICMP的一个例子。它没有通过运输层的TCP或UDP.29Tracert该程序用来确定通过网络的路由IP数据报。Tracert基于ICMP和UDP。它把一个TTL为1的IP数据报发送给目的主机。第一个路由器把TTL减小到0,丢弃该数据报并把ICMP超时消息返回给源主机。这样,路径上的第一个路由器就被标识了。随后用不断增大的TTL值重复这个过程,标识出通往目的主机的路径上确切的路由器系列.继续这个过程直至该数据报到达目的主机。但是目的主机哪怕接收到TTL为1的IP数据报,也不会丢弃该数据并产生一份超时ICMP报文,这是因为数据报已经到达其最终目的地。那么如何判断是否已经到达目的主机了呢?31用ICMP发现路径MTU网络MTU:MaxTransmissionUnit是网络最大传输单元(包长度),IP路由器必须对超过MTU的IP报进行分片,目的主机再完成重组处理,所以确定源到目的路径MTU对提高传输效率是非常必要的。确定路径MTU的方法是“要求报告分片但又不被允许”的ICMP报文。1、将IP数据报的标志域中的分片BIT位置1,不允许分片。2、当路由器发现IP数据报长度大于MTU时,丢弃数据报,并发回一个要求分片的ICMP报。3、将IP数据报长度减小,分片BIT位置1重发,接收返回的ICMP报的分析。4、发送一系列的长度递减的、不允许分片的数据报,通过接收返回的ICMP报的分析,可确定路径MTU。
本文标题:ICMP协议详解
链接地址:https://www.777doc.com/doc-1819061 .html