资源预览内容
第1页 / 共41页
第2页 / 共41页
第3页 / 共41页
第4页 / 共41页
第5页 / 共41页
第6页 / 共41页
第7页 / 共41页
第8页 / 共41页
第9页 / 共41页
第10页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第5讲 因特网控制报文协议,IP协议存在的问题:IP协议没有差错报告或差错纠正机制;IP协议缺少一种为主机和管理查询的机制;ICMP协议是为补充IP协议的两个缺点而设计的,它配合IP协议使用;ICMP协议:用于IP层的差错报告、拥塞控制、路径控制以及路由器或主机信息的获取。ICMP协议在网络层中的位置:,ICMP协议报文封装:向下:虽然ICMP协议可以接受来自上层的请求,但并不直接封装来自上层协议的数据。ICMP协议将请求转变为ICMP报文,然后将报文封装在IP协议中进行发送,在IP数据报首部中的协议字段为“1”;向上:IP软件一旦接收到差错或控制报文,立即交给ICMP模块进行处理。ICMP模块可以形成应答报文,也可以交给上层的应用程序或协议去处理。文档:RFC792: Internet Control Message Protocol,1981RFC1256: ICMP Router Discovery Messages,1991,主要内容,5.1 ICMP报文格式与类型 5.2 ICMP差错报告 5.3 ICMP控制报文 5.4 ICMP请求与应答报文对,5.1 ICMP报文格式与类型,ICMP报文由首部和数据段组成。首部为定长的8个字节,前4个字节是通用部分,后4个字节随报文类型的不同有所差异。ICMP报文的一般格式如图所示。,字段说明:类型:是一个比特长字段,定义了ICMP报文的类型。代码:是一个比特长字段,指明了发送此特定报文类型的原因。检验和:是一个比特长字段,用于数据报传输过程中的差错控制。首部的其余部分:对每一种报文类型都是特定的。数据段部分:在差错报文中:所携带的信息可找出引起差错的原始分组;在查询报文中:携带了基于查询类型的额外信息。ICMP报文类型:(见下图),情况一、分为二大类:差错报告和查询,情况二、分为三大类:差错报告、控制报文和请求应答报文,返回,5.2 ICMP差错报告,ICMP差错报告的数据段部分:包含出错数据报的首部及出错数据报的前64位数据(即:端口号(UDP和TCP)和序号(TCP),这些信息有助于信源或管理人员发现错误原因;ICMP差错报告具有以下特点:只报告差错,但不负责纠正错误,纠错工作留给高层协议去处理;发现出错的设备只向信源机报告差错。差错报告作为一般数据传输,不享受特别优先权和可靠性。产生ICMP差错报告的同时,会丢弃出错的IP数据报。,以下几种情况不会产生ICMP差错报告报文:对于携带ICMP差错报文的数据报,不会再产生ICMP差错报文;对于分片的数据报,如果不是第一个分片,则不会产生ICMP差错报文;对于具有组(多)播地址的数据报文,不会产生ICMP差错报文;对于具有特殊地址(如:127.0.0.0和0.0.0.0)的数据报文,不会产生ICMP差错报文。,5.2.1 信宿不可达报告,当路由器无法根据路由表转发IP数据报时或主机无法向上层协议和端口提交IP数据报时,将丢弃当前的数据报,并产生信宿不可达差错报告,向信源报告出错;信宿不可达报文如图所示。,信宿不可达报文可能由路由器产生,也可能由信宿机产生。产生信宿不可达报文的原因的16种可能 :,各代码说明:代码:网络不可达。可能是硬件故障。代码:主机不可达。这也可能是硬件故障。代码:协议不可达。IP数据报携带的数据可能属于高层协议,但此时高层协议并未运行,于是就发送出代码为的报文。代码:端口不可达。数据报要交付的那个应用程序(进程)此时未运行。代码:需要进行分片,但该数据报的DM(不分片)字段已被设置。代码:源站路由选择不能完成。即在这个源站路由选择选项中定义的一个或多个路由器无法通过。代码:目的网络不可知。(与代码不同)代码:目的主机不可知。(与代码不同)代码:源主机是孤立的。代码:与目的网络的通信从管理上是禁止的。代码10:与目的主机的通信从管理上是禁止的。代码11:对所请求的服务类型,网络不可达。(与代码不同)代码12:对所请求的服务类型,主机不可达。(与代码不同)代码13:主机不可达。因为管理机构放置了一个过滤器在它上面。代码14:主机不可达。因为主机的优先级被破坏了。这个报文由路由器发出,指出所请求的优先级对该目的站是不允许的。 代码15:主机不可达。因为它的优先级被删掉了。,注意:具有代码或的目的站不可达报文只能由目的主机创建,其余的目的站不可达报文只能由路由器创建;在路由器没有发送信宿不可达报文时,也不一定表示数据报已经交付了,即路由器无法检测出分组没有交付的所有问题。,5.2.2 数据报超时报告,产生数据报超时报文的两种情况:在数据报的传输过程中,首部的TTL值用于防止数据报因路由表的问题而无休止地在网络中传输。当TTL值为0时,路由器会丢弃当前的数据报,并产生一个ICMP数据报超时报告;在信宿进行分片重组时会启动重组定时器,一旦重组定时器超时,信宿就会丢弃当前正在重组的数据报,然后产生一个ICMP数据报超时报告,并向信源发送该超时报告。,数据报超时报告的报文格式与信宿不可达报告的报文格式相同,只是类型和代码值不同,如下图所示:数据报超时报告的类型和代码的含义如表所示:,5.2.3 数据报参数错报告,数据报参数错报告是由数据报首部字段值不明确或空缺而引起的差错报告;一旦路由器或信宿机发现错误的数据报首部和错误的数据报选项参数时,便抛弃该数据报,并向信源发送差错报告报文;数据报参数错报文的格式如图所示:,说明:类型12:表明数据报参数错代码0:表示数据报首部中的某个字段的值有错或不明确,这时ICMP报文首部的指针指向数据报中有问题的字节;只能报告一个出错参数代码1:表示数据报首部中缺少某一选项所必须具有的部分参数,此时的ICMP报文没有指针字段;只能报告缺少参数,不能说明缺少哪个参数,返回,5.3 ICMP控制报文,ICMP控制报文包括源抑制报文和重定向报文源抑制报文用于拥塞控制重定向报文用于路径控制下表给出了这两类报文的类型和作用描述。,5.3.1 源抑制报文,产生源抑制报文的原因: 在IP协议中没有流量控制机制;在运行IP时,缺乏流量控制会产生一个主要问题:拥塞;若数据报的接收速率比它们被转发或处理的速率快得多,则队列将会溢出。这样,路由器或主机别无选择,只能将某些数据报丢弃。措施:在ICMP中利用源抑制的方法为IP协议增加一种流量控制机制;源抑制报文功能:它通知源站,数据报已被丢弃;它警告源站,在路径中的某处出现了拥塞,因而源站必须放慢发送过程;,源抑制报文的格式如图所示。,源抑制包括三个阶段:发现拥塞阶段:路由器对缓冲区进行监测,一旦发现拥塞,立即向相应的信源发送ICMP源抑制报文;该信源收到源抑制报文后,便知道拥塞已经发生,而且所发送的数据报已经丢掉;解决拥塞阶段:信源根据收到的源抑制报文中所带的原数据报的首部信息决定对去往某一特定信宿的信息流进行抑制;通常信源在收到源抑制报文后,按一定的规则降低发往某信宿的数据报传输率。拥塞解除:拥塞解除后,信源逐渐恢复数据报传输速率。,在拥塞控制中以下几点值得关注:虽然对于每个因拥塞而丢弃的数据报都产生ICMP源抑制报文,但信源只按照自己的时间段进行响应;拥塞的解除由信源依据是否有进一步的源抑制报文到达来进行判断;拥塞可能是由多个源共同行为的结果,由于各个信源的发送速率相差较大,源抑制的效果未必很好。,5.3.2 重定向报文,产生原因(针对主机而言):主机通常使用静态路由选择,当主机开始联网工作时,其路由表中的项目数很有限,通常只有一个默认路由器的IP地址;当主机向另一个网络发送数据报时,将此数据报发给这个默认路由器(可能并非是去往信宿的最佳下一跳路由器);措施:ICMP提供了重定向机制,为解决主机路由表的刷新问题;,默认路由器的工作:当收到数据报后,根据其路由表判断本路由器是否是去往信宿的最佳选择,如果不是,则:该路由器向信宿网络转发该数据报;它产生一个ICMP重定向报文,通知信源修改它的路由表,重定向报文将给出信源最佳下一跳路由器的IP地址。例子:,ICMP重定向报文的格式如图所示:说明:代码0:对特定网络路由的改变;代码1:对特定主机路由的改变;代码2:基于指明的服务类型对特定网络路由的改变;代码3:基于指明的服务类型对特定主机路由的改变;主机开机后在ICMP重定向机制的作用下,经过不断积累逐渐充实和完善其路由表。动态且优化,值得注意的是:ICMP产生重定向报文的时候并不丢弃原数据报;ICMP重定向报文由位于同一网络的路由器发送给主机,完成对主机的路由表的刷新;被刷新的路由表项与重定向报文数据部分指示的IP数据报首部中的信宿地址相关;内容为重定向报文中目标路由器的IP地址。,返回,5.4 ICMP请求与应答报文对,ICMP请求与应答报文对的出现使得因特网上的任何主机或路由器可以向其他主机或路由器发送请求并获得应答;通过ICMP请求与应答报文对,网络管理人员、用户或应用程序可以对网络进行检测,了解:设备的可达性地址掩码的设置时钟同步等情况目的:利用这些有用的信息,对网络进行故障诊断和控制。,ICMP请求与应答报文对如下表所示:,5.4.1 回应请求与应答报文,目的:对网络进行诊断和测试;测试主机或路由器的可达性;测试IP协议的工作情况;ping命令大多是利用ICMP回应请求与应答报文来实现的;回应请求与应答报文格式如图所示:,说明:类型8:表明是回应请求报文类型0:表明是回应应答报文格式中的标识符和序号字段在协议中没有正式定义,通常将标识符和序列号用于匹配请求与应答标识符一般为发起请求进程的进程ID回应请求与应答报文的标识符和序列号一致。,5.4.2 时间戳请求与应答报文,作用:两个机器(主机或路由器)可使用时间戳请求和时间戳回答报文来确定IP数据报在这两个机器之间来往所需的往返时间; 它可以用作两个机器中时钟的同步,进行时钟同步的基本思路:请求方主机通过获取另一主机的时间戳信息,将该信息和请求方主机的时间戳信息进行比较后,估算两者的时钟差异。,请求/应答格式如图:说明:类型13:请求报文;类型14:应答报文;初始时间戳字段:用于指示请求方发出请求的时间接收时间戳字段:用于指示应答方主机收到请求的时间发送时间戳字段:用于指示应答方主机发送应答的时间三个时间戳字段各为32比特长,以毫秒为单位从世界时间午夜0点起计时。时间戳的计数值不能超过86400000(24小时)。请求报文:填初始时间戳,接收时间戳和发送时间戳为0。应答报文:初始时间戳直接从请求报文中复制,接收时间戳和发送时间戳由应答方主机根据自己接收和发送时的时钟填写。,时钟同步:首先要计算出时间戳请求和应答的往返延迟时间;然后据此计算出单程传输延迟时间;最后由两设备的时间戳和单程传输延迟计算出两台设备之间的时间差。往返延迟时间和单程传输延迟时间计算(如图所示):发送时间= t接收 - t初始接收时间= t当前 - t发送往返延迟时间= 发送时间 + 接收时间单程传输延迟时间=往返延迟时间/2(如:发送时间=接收时间)时间差t接收(t初始单程时延),例子:主机A发出时间戳请求时的初始时间戳为1000毫秒;主机B收到请求时的接收时间戳是1055毫秒;主机B给出应答时的发送时间戳是1057毫秒;主机A收到应答时的时间为1030毫秒。主机A可以根据这些时间戳计算出两台主机间的时间差。往返时间t当前t初始(t发送t接收) 10301000(10571055)28(毫秒)单程时延28214(毫秒)时间差t接收(t初始单程时延)1055(100014)41(毫秒)计算可知:主机B的时钟比主机A的时钟快了41毫秒,即:同步的差别有: 41毫秒,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号