实验名称:ICMP差错报文实验成绩学生姓名:学号:指导教师:班级:网络1301主机编号:4—A实验日期:2015.12.1实验目的:1.掌握ICMP协议的报文格式2.理解不同类型ICMP报文的具体意义实验原理:ICMP差错报文ICMP差错报文用来报告差错。虽然现代的技术已经制造出很可靠的传输媒体,但差错仍然存在,因而必须进行处理。正如在实验三中所讨论的,IP是个不可靠的协议。这就表示IP不考虑差错校验和差错控制。ICMP就是为了补偿这个缺点而设计的。然而ICMP不能纠正差错,它只是报告差错,差错纠正留给高层协议去做。ICMP使用源IP地址把差错报文发送给数据报的源点(发出者)。一共有5种差错报文:目的端不可达、源点抑制、超时、参数问题以及改变路由,如下图所示。图4-10差错报文差错报文的数据字段包括原始数据报(引起差错的报文)的首部和原始数据报数据部分的前8个字节。包括原始数据报首部的目的是为了向差错报文的原始信源给出关于数据报本身的信息。包括数据的前8个字节是因为这前8个字节提供了关于端口号(UDP和TCP)和序号(TCP)的信息。根据这些信息,源点可以把差错情况通知给上层协议。1.目的端不可达当路由器不能够为数据报找到路由或主机,就丢弃这个数据报,然后向发出这个数据报的源主机发送目的端不可达报文。下图给出了目的端不可达报文的格式。这种类型的代码字段指明了丢弃该数据报的原因。图4-11目的端不可达报文2.源点抑制IP协议是无连接协议,因此通信缺乏流量控制。ICMP源点抑制报文就是为了给IP增加一种流量控制而设计的。当路由器或主机因拥塞而丢弃数据报时,它就向数据报的发送端发送源点抑制报文。第一,它通知发送端,数据报已被丢弃。第二,它警告发送端,在路径中的某处出现了拥塞,因而源端必须放慢发送过程。源点抑制报文的格式如下图所示:图4-12源点抑制报文3.超时超时报文是在以下两种情况下产生的:●数据报的生存时间字段值被减为0时,路由器丢弃这个数据报,并向发送端发送超时报文。●当组成报文的所有分段未能在某一时限内到达目的主机时,也要产生超时报文。当第一个分段到达时,目的主机就启动计时器。当计时器的时限到了,目的主机就将所有分段丢弃,并向发送端发送超时报文。超时报文格式如下图所示:图4-13超时报文4.参数问题当数据报在Internet上传送时,如果路由器或目的主机发现数据报首部中出现了二义性问题,或在数据报的某个字段中缺少某个值,它就丢弃这个数据报,并向发送端发送参数问题报文。下图给出了参数问题报文格式。代码字段指明了丢弃数据报的原因。图4-14参数问题报文●代码为0时表示在首部的某个字段中有差错或二义性。指针字段值指向有问题的字节。●代码为1时表示缺少所需的选项部分。这种情况下不使用指针。5.重定向为了提高效率,主机不参与路由选择更新过程,因此,主机可能会把某数据报发送给一个错误的路由器。这时,收到这个数据报的路由器会把数据转发给正确的路由器,同时向主机发送重定向报文,告诉主机正确路由器的地址。下图给出了重定向报文的格式。实验环境(画出拓扑结构)实验步骤:本练习将主机A、B、C、D、E、F作为一组进行实验。1.目的端不可达(1)主机A、B、C、D、E、F启动协议分析器捕获数据,并设置过滤条件(提取ICMP)。(2)在主机A、C、D、E上ping172.16.2.10(不存在的IP)。(3)主机A、B、C、D、E、F停止捕获数据。察看捕获到的数据,并回答以下问题:●捕获到的是哪一种目的端不可达报文?2.超时(1)在主机E上启动协议编辑器,编写一个发送给主机D(172.16.1.4)的ICMP数据帧。其中:MAC层:目的MAC地址:主机B的MAC地址(172.16.0.1接口的MAC)。源MAC地址:E的MAC地址。协议类型或数据长度:0800。IP层:总长度:包含IP层和ICMP层长度。TTL:0。高层协议类型:1。校验和:在其它字段填充完毕后,计算并填充。源IP地址:E的IP地址。目的IP地址:D的IP地址。ICMP层:类型:8。代码字段:0。校验和:在ICMP其它字段填充完毕后,计算并填充。其它字段使用默认值。(2)主机B(172.16.0.1的接口)、F启动协议分析器捕获数据,并设置过滤条件(提取ICMP协议)。(3)主机E发送已编辑好的数据帧。(4)主机B、F停止捕获数据,察看并分析捕获到的数据。(5)主机B在命令行方式下输入recover_config命令,停止静态路由服务。实验数据及结构分析课后习题:1.为什么要设置TTL字段?Time-to-live,为了减少互联网上的包的数目,不然互联网上会有很多垃圾包。具体为每个报文被转发一次,TTL就减去1,直到TTL为0时,如果该包仍未到达目的地,则会被丢弃。2.为什么要限制由失效的ICMP差错报文再产生一个ICMP报文?限制失效报文为了减少网络流量,再产生一个报文一般也会是报告错误状态。3.什么样的ICMP报文是由路由器发送出的?什么样的ICMP报文是由目的主机发送出的?路由器:网络不可达,主机不可达,对主机重定向等目的主机:回显应答,端口不可达等。4.主机A向主机B发送数据报,主机B从未收到该数据报,而主机A也从未收到出问题的通知。试给出可能发生情况的两种不同解释。可能是主机A和主机B位于两个不同网段通过路由器连接在一起,路由器协议栈出现故障