第五讲差错与控制报文协议(ICMP).ppt
文本预览下载声明
第5讲 因特网控制报文协议;ICMP协议报文封装:
向下:虽然ICMP协议可以接受来自上层的请求,但并不直接封装来自上层协议的数据。ICMP协议将请求转变为ICMP报文,然后将报文封装在IP协议中进行发送,在IP数据报首部中的协议字段为“1”;
向上:IP软件一旦接收到差错或控制报文,立即交给ICMP模块进行处理。ICMP模块可以形成应答报文,也可以交给上层的应用程序或协议去处理。
文档:
RFC792: Internet Control Message Protocol,1981
RFC1256: ICMP Router Discovery Messages,1991;主要内容;5.1 ICMP报文格式与类型;字段说明:
类型:是一个8比特长字段,定义了ICMP报文的类型。
代码:是一个8比特长字段,指明了发送此特定报文类型的原因。
检验和:是一个16比特长字段,用于数据报传输过程中的差错控制。
首部的其余部分:对每一种报文类型都是特定的。
数据段部分:
在差错报文中:所携带的信息可找出引起差错的原始分组;
在查询报文中:携带了基于查询类型的额外信息。
ICMP报文类型:(见下图);;情况一、分为二大类:差错报告和查询;情况二、分为三大类:差错报告、控制报文和请求应答报文;5.2 ICMP差错报告;以下几种情况不会产生ICMP差错报告报文:
对于携带ICMP差错报文的数据报,不会再产生ICMP差错报文;
对于分片的数据报,如果不是第一个分片,则不会产生ICMP差错报文;
对于具有组(多)播地址的数据报文,不会产生ICMP差错报文;
对于具有特殊地址(如:127.0.0.0和0.0.0.0)的数据报文,不会产生ICMP差错报文。 ;5.2.1 信宿不可达报告 ;信宿不可达报文可能由路由器产生,也可能由信宿机产生。产生信宿不可达报文的原因的16种可能 :;各代码说明:
代码0:网络不可达。可能是硬件故障。
代码1:主机不可达。这也可能是硬件故障。
代码2:协议不可达。IP数据报携带的数据可能属于高层协议,但此时高层协议并未运行,于是就发送出代码为2的报文。
代码3:端口不可达。数据报要交付的那个应用程序(进程)此时未运行。
代码4:需要进行分片,但该数据报的DM(不分片)字段已被设置。
代码5:源站路由选择不能完成。即在这个源站路由选择选项中定义的一个或多个路由器无法通过。
代码6:目的网络不可知。(与代码0不同)
代码7:目的主机不可知。(与代码1不同)
代码8:源主机是孤立的。
代码9:与目的网络的通信从管理上是禁止的。
代码10:与目的主机的通信从管理上是禁止的。
代码11:对所请求的服务类型,网络不可达。(与代码0不同)
代码12:对所请求的服务类型,主机不可达。(与代码1不同)
代码13:主机不可达。因为管理机构放置了一个过滤器在它上面。
代码14:主机不可达。因为主机的优先级被破坏了。这个报文由路由器发出,指出所请求的优先级对该目的站是不允许的。
代码15:主机不可达。因为它的优先级被删掉了。;注意:
具有代码2或3的目的站不可达报文只能由目的主机创建,其余的目的站不可达报文只能由路由器创建;
在路由器没有发送信宿不可达报文时,也不一定表示数据报已经交付了,即路由器无法检测出分组没有交付的所有问题。;5.2.2 数据报超时报告;数据报超时报告的报文格式与信宿不可达报告的报文格式相同,只是类型和代码值不同,如下图所示:
数据报超时报告的类型和代码的含义如表所示:
;5.2.3 数据报参数错报告;说明:
类型12:表明数据报参数错
代码0:表示数据报首部中的某个字段的值有错或不明确,这时ICMP报文首部的指针指向数据报中有问题的字节;只能报告一个出错参数
代码1:表示数据报首部中缺少某一选项所必须具有的部分参数,此时的ICMP报文没有指针字段;只能报告缺少参数,不能说明缺少哪个参数;5.3 ICMP控制报文;5.3.1 源抑制报文;源抑制报文的格式如图所示。;源抑制包括三个阶段:
发现拥塞阶段:路由器对缓冲区进行监测,一旦发现拥塞,立即向相应的信源发送ICMP源抑制报文;
该信源收到源抑制报文后,便知道拥塞已经发生,而且所发送的数据报已经丢掉;
解决拥塞阶段:信源根据收到的源抑制报文中所带的原数据报的首部信息决定对去往某一特定信宿的信息流进行抑制;
通常信源在收到源抑制报文后,按一定的规则降低发往某信宿的数据报传输率。
拥塞解除:拥塞解除后,信源逐渐恢复数据报传输速率。;在拥塞控制中以下几点值得关注:
虽然对于每个因拥塞而丢弃的数据报都产生ICMP源抑制报文,但信源只按照自己的时间段进行响应;
拥塞的解除由信源依据是否有进一步的源抑制报文到达来进行判断;
拥塞可能是由多个源共同行为的结果,由于各个信源
显示全部