第9章-TCPIP协议族-ICMP协议.ppt
第九章第九章 网际控制报文协议(网际控制报文协议(ICMPICMP)课程目标课程目标l 掌握掌握ICMPICMP数据报的格式。数据报的格式。l 掌握掌握ICMPICMP数据报的分类。数据报的分类。l 了解了解pingping、tracerttracert命令实现原理命令实现原理l 使用使用WiresharkWireshark分析分析ICMPICMP数据报分片数据报分片1.IP1.IP协议的缺点协议的缺点nIP协议没有差错报告或差错纠正机制;nIP协议缺少一种为主机和管理查询的机制;nICMP为弥补以上缺点而设计,配合IP协议使用。第九章第九章 网际协议(网际协议(IP)第九章 网际协议(IP)各种应用层协议 网络接口层(TELNET,FTP,SMTP 等)物理介质传输层TCP,UDP应用层ICMPIPRARPARP与各种网络接口网际层IGMPnICMP本身是网络层协议,但它的报文首先要封装成IP数据报,再传送给下一层。(IP数据报协议字段为1)第九章第九章 网际协议(网际协议(IP)2.IMCP2.IMCP报文分为两大类报文分为两大类n类型一:差错报告报文 当路由器或终点主机在处理IP报文时遇到问题。n类型二:查询报文 成对出现,帮助网络管理员从一个路由器或主机得到特定信息。第九章第九章 网际协议(网际协议(IP)第九章第九章 网际协议(网际协议(IP)类型字段的值与类型字段的值与ICMPICMP报文的类型的关系报文的类型的关系ICMPICMP报报文种文种类类类类型的型的值值ICMPICMP报报文的文的类类型型差差错报错报告告报报文文3 3终终点不可到达点不可到达4 4源站抑制源站抑制1111时间时间超超过过1212参数参数问题问题5 5改改变变路由路由询问报询问报文文8 8或或0 0回送回送请请求或回答求或回答1313或或1414时间时间戳戳请请求或回答求或回答1717或或1818地址掩地址掩码请码请求或回答求或回答1010或或9 9路由器路由器询问询问或通告或通告9.2 ICMP 报文的格式 首 部ICMP 报文0数 据 部 分检验和类型代码(这 4 个字节取决于 ICMP 报文的类型)81631IP 数据报前 4 个字节都是一样的ICMP由8个字节的首部和可变长度的数据部分组成。ICMP 的数据部分(长度取决于类型)9.2 ICMP 报文的格式 首 部ICMP 报文0数 据 部 分检验和类型代码(这 4 个字节取决于 ICMP 报文的类型)81631IP 数据报类型:定义了报文的类型。代码:指明了发送这个特定报文类型的原因。校验和:首部+数据部分的校验。ICMP 的数据部分(长度取决于类型)9.3 ICMP 差错报告 ICMP总是把差错报文报告给原始的数据源。一共有5种差错可处理如图所示:nICMP只提供报告差错,不会纠正差错,差错纠正留给高层协议处理。9.3 ICMP 差错报告 关于ICMP差错报文有以下的一些要点:n对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。n对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。n对具有多播地址的数据报都不发送ICMP差错报告报文。n对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。ICMP 差错报告报文的数据字段的内容 首部IP 数据报ICMP 的前 8 字节装入 ICMP 报文的 IP 数据报IP 数据报首部ICMP 差错报告报文8字节收到的 IP 数据报IP 数据报首部8字节ICMP 差错报告报文IP 数据报的数据字段数据部分包括原始数据报的首部+数据报中的前8个字节9.3.1 终点不可到达 n当路由器不能给数据报找到路由或主机不能交付数据报时,就丢弃这个数据报,同时发送一个ICMP终点不可达报文。9.3.1 终点不可到达 n代码字段用0-15分别指明丢弃该数据报的原因:n包括:网络不可达、主机不可达、协议不可达、端口不可达、需要分片等。9.3.2 源点抑制n在ICMP的源点抑制报文就是为了给IP增加了一种流量控制而设计的。源点抑制报文通知源点,由于拥塞,在路由器或目的主机中已经丢弃了数据报,源点必须放慢数据报的发送,直到拥塞程度减轻为止。9.3.2 源点抑制 源点抑制注意:l首先,经受拥塞的路由器或目的主机,必须为每一个丢弃的数据报向源主机发送源点抑制报文。l没有一种机制可以告诉源点,拥塞程度已经减轻,因而可以按照原来的速率发送数据。源点应继续降低发送速率,直到不再收到更多的源点抑制报文为止。l在一对一的通信或多对一的通信,都可以产生拥塞。9.3.3 超时 当路由器收到生存时间字段值为0的数据报时,就丢弃这个数据报,并向源点发送超时报文。当最后的终点在规定的时间内,没有收到所有的分片时,它就丢弃已收到的分片,并向源点发送超时报文。9.3.3 超时抓包分析 举例:执行命令:ping i 2 。分析:1)i 参数表示指定TTL值 2)ping 默认发送4个回答请求数据报,同时将IP首部的TTL值设为2.3)分析该网络中会出现哪些数据报。答案:4个echo request,4个超时ICMP差错报ICMP Echo requestICMP Echo request回送请求报回送请求报回送请求报回送请求报 举例:执行命令:举例:执行命令:ping i 2 ping i 2 。分析:分析:1)i 1)i 参数表示指定参数表示指定TTLTTL值值 2)2)ping ping 默默认认发发送送4 4个个回回答答请请求求数数据据报报,同同时时将将IPIP首首部部的的TTLTTL值设为值设为2.2.3 3)分析该网络中会出现哪些数据报。)分析该网络中会出现哪些数据报。答案:答案:4 4个个echo request,4echo request,4个超时个超时ICMPICMP差错报差错报ICMP ICMP 超时差错报文超时差错报文超时差错报文超时差错报文 举例:执行命令:举例:执行命令:ping i 2 ping i 2 。分析:分析:1)i 1)i 参数表示指定参数表示指定TTLTTL值值 2)2)ping ping 默默认认发发送送4 4个个回回答答请请求求数数据据报报,同同时时将将IPIP首首部部的的TTLTTL值设为值设为2.2.3 3)分析该网络中会出现哪些数据报。)分析该网络中会出现哪些数据报。答案:答案:4 4个个echo request,4echo request,4个超时个超时ICMPICMP差错报差错报9.3.4 参数问题 存在二义性或缺少字段值,将丢弃数据报。代码0:在首部的某个字段中有差错或二义性。这种情况下,指针字段值指向有问题的字节。代码1:表示缺少所需的选项部分。这种情况下不是用指针。9.3.5 改变路由 主机在开始工作时只有很小的路由表,这个路由表逐渐增大和更新,完成这项工作的工具之一就是改变路由报文。9.3.5 改变路由改变路由报文参数代码0:对特定网络路由的改变代码1:对特定主机路由的改变代码2:基于指明的服务类型对特定网络路由的改变代码3:基于指明的服务类型对特定主机路由的改变9.4 ICMP 查询报文 n除差错报告外,ICMP还能对某些网络问题进行诊断。这是通过4种不同的查询报文来完成的:9.4.1 ICMP 回送请求和回答n回送请求和回送回答组合起来确定了两个系统是否能够彼此通信;n回送请求报文可以由主机或路由器发送,收到回送请求报文的主机或路由器发送回送回答报文;n回送请求和回送回答报文可由网络管理员来使用,用来检查IP协议的工作情况;n用回送请求和回送回答报文可测试某个主机的可达性,通常调用ping命令来完成。9.4.1 ICMP 回送请求和回答n回送请求和回送回答组合起来确定了两个系统是否能够彼此通信;n回送请求报文可以由主机或路由器发送,收到回送请求报文的主机或路由器发送回送回答报文;n回送请求和回送回答报文可由网络管理员来使用,用来检查IP协议的工作情况;n用回送请求和回送回答报文可测试某个主机的可达性,通常调用ping命令来完成。9.4.1 ICMP 回送请求和回答标识符和序号在标识符和序号在协议中均未正式协议中均未正式定义,由系统自定义,由系统自己实现。己实现。9.4.1 ICMP 回送请求和回答n抓包分析ping 命令的实现原理n默认发送4个Echo request数据报n接收到4个Echo reply包则全部ping通9.4.2 ICMP时间戳请求和回答9.4.2 ICMP时间戳请求和回答n时间戳请求和时间戳回答报文可用来计算数据报从源点到终点所需的单向时间,以及再返回源点所需的往返时间。所用的公式是:n发送时间=接收时间戳的值-原始时间戳的值n接收时间=分组返回的时间-发送时间戳的值n往返时间=发送时间+接收时间n注意:只有当源点和终点的机器中的时钟是同步的,发送时间和接收时间的计算才是准确的,但是即使这两个时钟没有同步,往返时间的计算还是准确的。9.4.3 ICMP地址掩码请求和回答9.4.4 ICMP路由器查询和通告9.4.4 ICMP路由器查询和通告9.5 校验和9.6 Traceroute命令实现原理 nTraceroute功能:用来跟踪一个分组从源点到终点的路径。n实现原理:实现原理:1)源主机A向目的主机B分别发送多次UDP分组,将TTL值设为1,2,3n;2)每过一跳路由器,TTL减1,利用收到的超时ICMP报文确定所过路由器IP;思考:到达目的主机B的UDP报文TTL会减1,但不会丢弃,所以不会发送ICMP超时报文,如何处理?9.6 Traceroute命令实现原理 n解决方法:n在UDP报文中封装一个UDP协议不支持的端口,目的主机B收到后,无法交付到相应的应用程序n数据报被丢弃,并向A发送ICMP终点不可达差错报文。(类型3,代码3)。9.6 Tracert命令实现原理 nWindows 下的路由查询工具n实现原理:n1)源主机A向目的主机B分别发送多次ICMP Echo Requst报文,将TTL值设为1,2,3n;n2)每次发3个报文,知道有目的主机响应Echo Reply。TracertTracert抓包分析抓包分析TracertTracert抓包分析抓包分析9.7 ICMP网络攻击 1.针对带宽的DOS的攻击 利用无用的数据来耗尽网络带宽。通过高速发送大量的ICMP echo reply数据包,目标网络的带宽瞬间就会被耗尽。ICMP echo reply数据包具有较高的优先级,在一般情况下,网络总是允许内部主机使用Ping命令。9.7 ICMP网络攻击 2.针对连接的DOS攻击n 针对连接的DOS攻击,可以终止现有的网络连接。nNuke通过发送一个伪造的ICMP Destination Unreachable或Redirect消息来终止合法的网络连接。更具恶意的攻击如puke和smack,会给某一个范围内的端口发送大量的数据包,毁掉大量的网络连接,同时还会消耗受害主机CPU的时钟周期。9.7 ICMP网络攻击 3.Smurf攻击n 首先,攻击者会先假冒目的主机(受害者)之名向路由器发出广播的ICMP echo-request数据包。因为目的地是广播地址,路由器在收到之后会对该网段内的所有计算机发出此ICMP数据包,而所有的计算机在接收到此信息后,会对源主机(亦即被假冒的攻击目标)送出ICMP echo-reply响应),所有的ICMP数据包在极短的时间内涌入目标主机内,这不但造成网络拥塞,更会使目标主机因为无法反应如此多的系统中断而导致暂停服务。