实验5----Internet控制报文协议(ICMP)-2.doc_第1页
实验5----Internet控制报文协议(ICMP)-2.doc_第2页
实验5----Internet控制报文协议(ICMP)-2.doc_第3页
实验5----Internet控制报文协议(ICMP)-2.doc_第4页
实验5----Internet控制报文协议(ICMP)-2.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

。实验5 Internet控制报文协议(ICMP)【实验目的】1. 掌握ICMP协议的报文格式2. 理解不同类型ICMP报文的具体意义3. 了解常见的网络故障【学时分配】2学时【实验环境】该实验采用网络结构二【实验内容】一. ICMP简介IP协议是一种不可靠无连接的协议,当数据包经过多个网络传输后,可能出现错误、目的主机不响应、包拥塞和包丢失等问题。为了处理这些问题,在IP层引入了另一个协议ICMP(Internet控制信息协议)。ICMP报文有两种类型:差错报文和查询报文。ICMP报文封装在IP报文里传输。ICMP报文可以被IP协议、传输层协议(TCP或UDP)和用户进程使用。ICMP与IP一样,都是不可靠传输,ICMP的信息也可能丢失。为了防止ICMP报文无限制的连续发送,对于ICMP报文在传输中发生的问题,将不再发送ICMP差错报文。二. ICMP报文格式ICMP数据包由8字节的首部和可变长度的数据部分组成。如下图所示,第一个字段是ICMP的类型,它定义了报文类型。第二个字段是代码字段,它指明了发送这个特定报文类型的原因。校验和字段为ICMP数据包提供差错校验。对于不同类型的ICMP数据包,首部的最后4个字节的格式是不同的,具体的格式将在下面讨论。差错报文的数据部分携带引起差错的原始数据。查询报文的数据部分携带了基于查询类型的额外信息。图4-1 ICMP报文的一般格式 类型:8位字段,用于描述特定类型的ICMP报文。 代码:8位字段,进一步描述某些ICMP报文的具体说明。 校验和:16位字段,覆盖这个ICMP报文的校验和。三. ICMP封装ICMP报文封装在IP数据报中,具体的封装方法如下图所示:图4-2 ICMP封装四. ICMP报文类型ICMP报文可分为两大类:差错报文和查询报文,如下图所示:图4-3 ICMP报文类型差错报文报告路由器或主机在处理IP数据报时遇到的问题。查询报文是成对出现的,它帮助主机或网络管理员从一个路由器或另一个主机得到特定的信息。例如,主机使用ICMP回显请求和回显应答报文发现它们的邻站。下表列出了每一类ICMP报文。表4-1 ICMP报文五. ICMP查询报文ICMP查询报文能够获得特定主机或路由器的信息,能够对某些网络问题进行诊断。ICMP查询报文包括4对不同类型的报文,分别为回显请求和应答报文、时间戳请求和应答报文、地址掩码请求和应答报文以及路由器询问和通告报文,如下图所示。图4-4 查询报文1. 回显请求和应答回显请求报文和回显应答报文用来确定了两个节点(主机或路由器)之间是否能够正常通信。用户可以使用这对报文来发现网络问题。主机或路由器可以发送回显请求报文给另一个主机或路由器。收到回显请求报文的主机或路由器产生回显应答报文,并将其返回给原来的发送端。回显请求和回显应答报文可用来确定是否在IP这级能够通信。因为ICMP报文被封装在IP数据报中,发送回显请求的主机在收到回显应答报文时,就证明了在发送端和接收端之间能够使用IP数据报进行通信。另外,这还证明了链路中的路由器能够接收、处理和转发数据报。回显请求和回显应答报文还可以用于检查另一个主机是否可达。用户可以调用数据包因特网搜寻器(ping)命令做到这一点。现在,大多数系统都提供ping命令,它可以产生一连串的回显请求或回显应答报文。回显请求和回显应答报文也可以用来验证某个节点是否正常工作。可以向被测试的节点发送回显请求报文,该报文的数据字段包含一段信息,如果这段信息被测试的节点在回显应答报文中完全一样地重复,则说明该节点工作正常;否则说明该节点出了问题。下图给出了回显请求和回显应答报文的格式。类型值为8表示回显请求报文,类型值为0表示回显应答报文。标识符和序号字段在协议中没有正式定义,可以由发送端任意使用。图4-5 ICMP回显请求和应答报文2. 时间戳请求和应答两个机器(主机或路由器)可使用时间戳请求和时间戳应答报文来确定IP数据报在这两个机器之间传输所需要的时间,也可以用作两个机器时钟的同步。这两个报文的格式如下图所示。其中,类型值为13表示时间戳请求报文,类型值为14表示时间戳应答报文。图4-6 时间戳请求和应答报文在报文格式中3个时间戳字段的长度都是32位。每一个字段都保存一个整数,代表从通用时间(格林尼治标准时间)的午夜起测量出的时间,以毫秒为单位。源节点在时间戳请求报文的原始时间戳字段填入它的时钟所显示的通用时间。其它两个时间戳字段都填入零。收到时间戳请求报文后,终点将生成时间戳应答报文。终点把请求报文中的原始时间戳字段值复制到应答报文的同一个字段中。然后在接收时间戳字段中填入收到这个请求报文时其时钟所显示的通用时间。最后,终点在应答报文将要发送时在发送时间戳字段中填入其时钟所显示的通用时间。时间戳请求和时间戳应答报文可以用来计算数据报从源点到终点所需的时间,还可以用于计算数据报再返回到源点所需的时间。3. 地址掩码请求和应答要得到掩码,主机应该向局域网上的路由器发送地址掩码请求报文。若主机知道路由器的地址,它就把请求直接发送给该路由器。若主机不知道路由器的地址,则它就广播地址掩码请求报文。路由器收到地址掩码请求报文后,用地址掩码应答报文进行响应,向主机提供所需的掩码。地址掩码请求和地址掩码应答报文的格式如下图所示。其中,类型值为17表示地址掩码请求报文,类型值为18表示地址掩码应答报文。在请求报文中,地址掩码字段填入全0。当路由器把地址掩码应答发回给主机时,这个字段就包含真正的掩码。图4-7 地址掩码请求和应答报文无盘工作站在启动时是需要地址掩码的,它会使用RARP协议查找完整的IP地址,在收到IP地址以后,无盘工作站就可使用地址掩码请求报文找出地址掩码,从而确定IP地址的哪一部分定义了子网号,哪一部分定义了主机号。4. 路由器询问和通告主机若想把数据发送给另一个网络上的主机,就需要知道连接到该网络上的路由器的地址。此外,这个主机还需要知道这些路由器是否正常工作。路由器询问报文和路由器通告报文可以完成这项工作。主机可把路由器询问报文进行广播(或多播)。收到询问报文的一个或几个路由器就使用路由器通告报文广播其路由选择信息。甚至在没有主机询问时,路由器也可周期性地发送路由器通告报文。路由器发送出通告报文时,它不仅通告了自己的存在,而且也通告了它所知道的所有在这个网络上的路由器。下图给出了路由器询问报文的格式。图4-8 路由器询问报文下图给出了路由器通告报文的格式。生存期字段表示这个报文在多长时间内是有效的。在通告报文中每一个路由器的项目有两个字段:路由器地址和地址优先级。地址优先级定义了路由器的等级。优先级用来选择某个路由器作为默认路由器。若地址优先级为零,则这个路由器就被认为是默认路由器。若地址优先级是0x80000000,则这个路由器永远不能被选为默认路由器。图4-9 路由器通告报文六. 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. 重定向为了提高效率,主机不参与路由选择更新过程,因此,主机可能会把某数据报发送给一个错误的路由器。这时,收到这个数据报的路由器会把数据转发给正确的路由器,同时向主机发送重定向报文,告诉主机正确路由器的地址。下图给出了重定向报文的格式。图4-15 改变路由报文七. ICMP校验和ICMP的校验和的计算覆盖了整个ICMP报文(首部和数据)。1. 校验和的计算发送端按以下步骤使用反码算术运算计算校验和:(1)把校验和字段置为零。(2)把报文按照16位长度分段,使用反码算术运算计算所有分段之和。(3)把得到的和求反码,得到校验和。(4)把校验和存储在校验和字段中。2. 校验和的测试接收端按以下步骤使用反码算术运算来测试校验和的正确性:(1)把报文按照16位长度分段,使用反码算术运算计算所有分段之和。(2)把得到的和求反码。【实验步骤】实验要求:1. 按照实验指导书中要求的实验步骤完成练习1、3两项的实验内容;2. 回答出实验练习1、3中给出的每一个问题;注意:本次实验中请将各主机的子网掩码设置成练习1运行Ping命令各主机打开协议分析器,进入相应的网络结构并验证网络拓扑的正确性,如果通过拓扑验证,关闭协议分析器继续进行实验,如果没有通过拓扑验证,请检查网络连接。本练习将主机A、B、C、D、E、F作为一组进行实验。实验开始前主机B首先执行命令“staticroute_config”启动静态路由。 1. 主机B、E、F启动协议分析器,打开捕获窗口进行数据捕获并设置过滤条件(提取ICMP协议)。2. 主机A ping主机E()。3. 主机B、E、F停止捕获数据,察看捕获到的数据,并回答以下问题: 捕获的报文对应的“类型”和“代码”字段分别是什么?类型 8 代码0 分析报文中的哪些字段保证了回显请求报文和回显应答报文的一一对应?新增加的条目,简述ARP协议的报文交互过程以及ARP高速缓存表的更新过程。1、代码、标识号、序列号,协议数据2、练习2 ICMP查询报文本练习将主机A、B、C、D、E、F作为一组进行实验。1. 主机A启动协议编辑器,编辑一个ICMP时间戳请求数据帧发送给主机C(3)。MAC层:目的MAC地址:C的MAC地址。源MAC地址:A的MAC地址。协议类型或数据长度:0800。IP层:总长度:包含IP层和ICMP层长度。高层协议类型:1。校验和:在其它字段填充完毕后计算并填充。源IP地址:A的IP地址。目的IP地址:C的IP地址。ICMP层:类型:13。代码字段:0。校验和:在ICMP层其它字段填充完毕后,计算并填充。其它字段使用默认值。2. 主机C启动协议分析器进行数据捕获,并设置过滤条件(提取ICMP协议)。3. 主机A发送已编辑好的数据帧。4. 主机C停止捕获数据。察看主机C捕获到的数据,并填写下表:表4-2 实验结果练习3 ICMP差错报文本练习将主机A、B、C、D、E、F作为一组进行实验。1. 目的端不可达(1)主机A、B、C、D、E、F启动协议分析器捕获数据,并设置过滤条件(提取ICMP)。(2)在主机A、C、D、E上ping 0(不存在的IP)。(3)主机A、B、C、D、E、F停止捕获数据。察看捕获到的数据,并回答以下问题: 捕获到的是哪一种目的端不可达报文ICMP2. 超时(1)在主机E上启动协议编辑器,编写一个发送给主机D(4)的ICMP数据帧。其中:MAC层:目的MAC地址:主机B的MAC地址(接口的MAC)。源MAC地址:E的MAC地址。协议类型或数据长度:0800。IP层:总长度:包含IP层和ICMP层长度。TTL:0。高层协议类型:1。校验和:在其它字段填充完毕后,计算并填充。源IP地址:E的IP地址。目的IP地址:D的IP地址。ICMP层:类型:8。代码字段:0。校验和:在ICMP其它字段填充完毕后,计算并填充。其它字段使用默认值。(2)主机B(的接口)、F启动协议分析器捕获数据,并设置过滤条件(提取ICMP协议)。(3)主机E发送已编辑好的数据帧。(4)主机B、F停止捕获数据,察看并分析捕获到的数据。(5)主机B在命令行方式下输入recover_config命令,停止静态路由服务。【思考问题】练习21. 能否根据时间戳计算出当前的时间?能2. 使用时间戳得到的时间比从系统得到的时间有什么好处?比系统得到的精确练习31. 为什么要设置TTL字段?用来判断收到的包是否有效2. 为什么要限制由失效的ICMP差错报文再产生一个ICMP报文?对源点通知高层协议是有用。3. 什么样的ICMP报文是由路由器发送出的?什么样的ICMP报文是由目的主机发送出的?4. 主机A向主机B发送数据报,主机B从未收到该数据报,而主机A也从未收到出问题的通知。试给出可能发生情况的两种不同解释。 论文设计题目 ICMP协议及应用研究 The ICMP Protocol and Its Application Study 作 者 张 李 华 二级学院、专业 信息工程学院 计算机科学技术 班 级 计001 指导教师职称 詹国华教授 论 文 字 数 10202 论文完成时间 2008年5月 教务处制 本科毕业论文 ICMP协议和应用研究 2 目 录 摘要3 Abstract4 第一章 引言5 第二章 基于IPv4的ICMP的认识5 2.1 OSI参考模型和TCP/IP参考模型的比较 5 2.2 TCP/IP 在网络中的地位和作用6 2.3 ICMP的介绍7 2.3.1 ICMP 协议报头7 2.3.2 ICMP协议的消息8 2.3.3 ping命令8 2.3.4 路由跟踪traceroute8 2.4 ICMP 攻击影响网络安全8 第三章ICMP部分功能的模拟实现10 3.1 背景10 3.1.1 ping命令的深入认识10 3.2存在的问题12 3.3 CPing的功能特点13 3.3.1网络的连通13 3.3.2可视化界面13 3.3.3 显示简单对一般用户容易看懂13 3.3.4 容量小易携带13 3.4模拟环境14 3.5.1硬件环境14 3.5.2软件环境14 3.5 实现14 3.5.1 文件组成14 3.5.2 网络套接字16 3.6 操作过程及结果的显示16 第四章ICMP的发展趋势基于Ipv6的ICMP18 参考文献19 本科毕业论文 ICMP协议和应用研究 3 摘要 本文较深入地研究了TCP/IP协议组中的ICMP协议。ICMP是“Internet Control Message Protocol”Internet控制报文协议的缩写是一个非常重要的协议。ICMP是一种与IP协议并行运行在网络层的协议用于在IP主机、路由器之间传递控制消息。控制消息包含网络通不通、主机是否可达、路由是否可用等网络本身的消息。本文还深入研究了在常用操作系统下(如UNIXWindowsDOS)利用ICMP协议实现的ping命令它是用来测试网络是否通畅主机是否可达以及用Visual C+制作模拟ping命令的小软件PingDemo它虽小但是简便面向一般用户。 关键词ICMPTCP/IPping 本科毕业论文 ICMP协议和应用研究 4 Abstract The paper searches the ICMP protocol in TCP/IP deeply.ICMP is Internet Control Message Protocolwhich plays a very important role. ICMP that works in the same degree as IP protocolis used to pass the control message between ip-host and rounters.The control message tells you that is the net linkedhas the host been arrivedor is the rounter working and so on.In additionthe paper also searches the ping command in the common OS with ICMP.The ping command is to check that the host exists or not.And moreusing Visual C+ to make a soft called PingDemo as similar as ping.It faces to everyone though it is small. Keywords: ICMPTCP/IPping 本科毕业论文 ICMP协议和应用研究 5 第一章 引言 随着科学技术的飞速发展21世纪的地球人已经生活在信息时代。20世纪人类两大科学技术成果-计算机技术和网络技术均已深入到人类社会的各个领域Internet把“地球村”的居民紧密联系在一起“天涯若比邻”已然成为现实。互联网之所以能这样迅速蔓延被世人接受是因为它具备特有的信息资源。近年来Internet的迅速发展给人们的日常生活带来了全新的感受“网络生存”已经成为时尚同时人类社会诸如政治、科研、经济、军事等各种活动对信息网络的依赖程度已经越来越强“网络经济”时代已初露端倪。 ping命令早已是耳熟能详的检查网络畅通的得力方法之一但是ping命令是来自于哪个网络层次的哪个协议就不是每个人能说得上的了。同样对于TCP/IP协议我们一定非常熟悉但是对于ICMP协议可能就一无所知了。ICMP协议是一个非常重要的协议它对于网络安全、网络的正常运作具有极其重要的意义。它被用于在IP主机、路由器之间传递控制消息如网络通不通、主机是否可达、路由是否可用等。这些控制消息虽然并不传输用户数据但是对于用户数据的传递起着重要的作用。而且ICMP协议本身的特点又决定了它非常容易被用于攻击网络上的路由器和主机造成CPU疲于奔命系统瘫痪主机死机。以上所言ICMP的研究将会带领我们进入一个丰富多彩的未知领域。 第二章 基于IPV4的ICMP的认识 2.1 OSI参考模型和TCP/IP参考模型的比较 尽管OSI模型在各种场合得到了广泛的应用但由于其建立时间过早各种网络的发展不断突破了OSI参考模型特别是互联网的发展对OSI模型是一个巨大的挑战。OSI参考模型的教训是首先引入时间过晚建立标准时TCP/IP已在大学使用而后来又被广泛使用其次在技术上不能完全适应网络发展现状如会话层在大多数应用中很少使用表述层几乎是空的。相反数据链路层和网络层内容过多有时不得不分成子层每一子层赋予不同的功能。OSI的另一个问题是有些功能在不同的层一再出现如编址、流量控制、纠错等等。有些功能放在那里很难达成一致意见如安全性、加密及网络管理层很难达成一致而干脆未包括在内。同时OSI完全忽略了无连接业务的相应的协议而这在LAN和演播室局域网中得到了广泛的应用只是后来才加以补充。另一个严重问题是OSI主要考虑通信而计算机世界有相当多的不同点。最后在OSI的实现和政策上都有一些问题。 我们再来看一下TCP/IP参考模型如图1。 本科毕业论文 ICMP协议和应用研究 6 可以看到其中不存在会晤层和表述层主要面向连接的网络层也被以包交接为基础的无连接互联网络层代替称为互联网层数据链路层和物理层也大大简化为主机到网络层Host-To-Network除了指出主机必须使用能发送IP包的协议外并不规定什么。在互联网层中定义了包结构和相应的协议称为互联网协议IPInternet Protocol主要作用是将IP包送到相应的地址。TCP/IP传送层的作用类似于OSI传送层的作用是使源和目标设备相互对话。 TCP/IP定义了两种端到端协议第一种是传输控制协议TCPTransmission Control Protocol是可靠的面向连接的协议能确保拜特流无误码从源设备传送到互联网中的其他设备。它将输入拜特流分割成较小的信息并将其每一个都放入互联网层在接收端接收TCP重组所接收的信息还原成原拜特流。TCP还进行流量控制确保较高速的发送端不会使较低速的接收设备过载。第二种协议是用户数据报协议UDPUser Datagram Protocol是一个非确保的无连接协议用于那些不需要TCP顺序和流量控制的应用广泛用于单项数据传输、服务器用户类型的应答应用。在这些应用中即时传送比精确传送更重要典型的应用就是语言和视频传输。 2.2 TCP/IP在网络中的地位和作用 TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型是一种通信协议的7层抽象的参考模型其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为应用层、传输层、互连网络层、网络接口层。 网际协议IP是TCP/IP的心脏也是网络层中最重要的协议。IP层接收由更低层网络接口层例如以太网设备驱动程序发来的数据包并把该数据包发送到更高层-TCP或UDP层相反IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址源地址和接收它的主机的地址目的地址。 图1 OSI参考模型和TCP/IP参考模型 本科毕业论文 ICMP协议和应用研究 7 面向连接的服务例如Telnet、FTP、rlogin、X Windows和SMTP需要高度的可靠性所以它们使用了TCP。 2.3 ICMP的介绍 ICMP是“Internet Control Message Protocol”Internet控制报文协议的缩写是一个非常重要的协议它对于网络安全具有极其重要的意义。ICMP消息是随IP数据包一起传输的但该消息本身也是一种与IP协议并行运行在网络层的协议。 它是TCP/IP协议族的一个子协议用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据但是对于用户数据的传递起着重要的作用。 我们在网络中经常会使用到ICMP协议只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令这个“ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。 2.3.1 ICMP协议报头 ICMP消息使用了一种简单的数据结构其报头部分由三个字段组成作为报头第一项的类型type字段占用了一个字节用来表示该协议消息所实现的功能而占用一个字节长度的代码code字段则用来进一步对消息内容进行分类。 ICMP协议报头最后一项是两个字节长度的校验和而其后的ICMP消息内容则与消息功能有关但所有消息内容中都必须带有引发错误消息和数据报的IP报头和前个字节而且这些信息足以使其上层协议对自己的报头进行检查并根据ICMP消息内容来执行适当的操作。最重要的是ICMP协议不支持数据纠错功能该协议只是通过向数据源回送错误消息来告诉路由错误。 类型 代码 名称 含义 0 * Echo replay 对ping的回应 3 * Destination Unreachable 主机或路由器返回信息一些包未达到目的地 0 Net Unreachable 路由器配置错误或错误指定IP地址 1 Host Unreachable 最后一个路由器无法与主机进行ARP通讯 4 * Source Quench Internet 阻塞 5 * Redirect 有人试图重定向你的默认路由器可能Hacker试图你 进行“man-in-middle”的攻击使你的机器通过他们的机器路由。 8 * Echo Request ping 9 * Router Advertisement hacker可能通过重定向你的默认的路由器DoS攻击你的Win9x 或Solaris。邻近的Hacker也可以发动man-in-the-middle的攻击 IP 报头 类型 代码 校验和 至少字节 字节字节 字节 ICMP消息内容长度和格式不定 本科毕业论文 ICMP协议和应用研究 8 11 * Time Exceeded In Transit 因为超时包未达到目的地 12 * Parameter Problem 发生某种不正常可能遇到了攻击 2.3.2 ICMP协议的消息 为了提前预防协议可能引发的问题ICMP协议技术规范中事先对消息进行了若干限制。比如说规定一个ICMP错误消息不能引发另一个ICMP错误消息。 1) 路由消息 ICMP路由消息大多用于请求得到可使用的路由器的清单或对请求的应答应答中包括可用路由器的清单清单中的每个路由都有优先级别。 一类路由是在路由器过载情况下产生的。如果一个主机向路由器发送过量数据或者多个主机同时向路由器发送大量数据都可以导致路由器瘫痪。但是这时路由器可以向发送方回送请求减速消息。每当路由器无法对接收的数据报进行处理时路由器就把该数据报丢弃并同时回送给数据源一个减速消息请求高速传输主机降低发送速率。收到减速消息的源主机将逐步降低速率直到错误消息消失为止然后再逐步提高发送速率直到错误消息出现为止。 另一类情况是发生在向一个录由器发送数据报时另一个路由器可借助ICMP消息广播一个更好的路由。称为路由重新定向。 2) 无法到达消息 ICMP无法到达的消息表示在对数据报进行寻址过程中寻址失败而引发的错误信息。举个简单的例子目标地址有误的数据报可以引发ICMP协议将无法到达的消息回送给该数据报的原始发送主机。该消息一般用来指出目标主机或网络不存在或没有应答。引发该类错误消息的主要原因包括主机处于关机状态网络链路故障以及无法使用特定的协议等。 2.3.3 ping命令 ICMP协议提供的网络工具之一就是网络管理员最常使用的ping命令。ping命令可以把一个ICMP回显请求发送给一个指定的主机接收该命令的主机通过回送一个ICMP回显应答来对收到的ICMP回显请求进行应答。ping命令的目的是测试主机是否存在。其实 ping命令是测试网络中两个主机是否可以实现最低级别的连通性。 2.3.4 路由跟踪traceroute 路由跟踪程序traceroute借助于ICMP TTL超时消息来巧妙地收集客户端与服务器之间的路右信息。该程序可输出所有参与转发数据包的路由器的名称以及消息从主机到该路由器的往返传输时间。 网络管理员可借助该工具来对响应速度较慢的连接进行诊断通过观察数据包从一个主机到另一个主机的传输路径有助于帮助管理员确定网络瓶颈的具体位置也就是应答速度最慢的路由器或不合理的传输路径。 与ping命令类似虽然路由跟踪程序不能为网络管理提供全面解决方案但该工具作为诊断工具来说还是非常有用的。 2.4 利用ICMP恶意攻击影响网络安全 当今世界上平均每20秒钟就有一起黑客事件发生仅在美国每年造成的经济损失就超过100亿美圆。ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。服务拒绝攻击DoS企图通过使服务计本科毕业论文 ICMP协议和应用研究 9 算机崩溃或把它压跨来阻止提供服务服务拒绝攻击是最容易实施的攻击行为。由于在早期的阶段路由器对包的最大尺寸都有限制许多操作系统对TCP/IP栈的实现在ICMP包上都是规定64KB并且在对包的标题头进行读取之后要根据该标题头里包含的信息来为有效载荷生成缓冲区当产生畸形的声称自己的尺寸超过ICMP上限的包也就是加载的尺寸超过64K上限时就会出现内存分配错误导致TCP/IP堆栈崩溃致使接受方当机。这就是所说的“ping of death”现在网络上很多号称能够致使系统死机的软件都是基于这个原理我们所熟悉的工具“Winnuke”就是一例。对路由器而言向Intel Express Switch或其后的主机发送一畸形的ICMP包可能导致系统崩。通过本地或远程发送的畸形包能蒙骗服务器。当服务器收到畸形的ICMP包时它将继续检查才对然而它将丢失所有的路由功能而且不将检查其它连接了。主要影响Intel Express Switch 500 系列。另外Windows也有拒绝服务漏洞对 Win98 NT4/SP56 Win2K都有影响当如上系统受到非法碎片包包含不合法碎片 ICMP ECHOs (pings)和UDP packets 攻击Windows 系统会拒绝服务。直至CPU占用率达到100%最后系统崩溃。ICMP重定向提供了一种相当有效的DoS。不象ARP入口这些特定主机路由入口永不过期。注意攻击没有要求必须从局域网内发起事实可以从广域网上发起。如果子网所用DNS位于网关外产生一个到该DNS的错误路由是很容易的通过在Pwin98 下测试由ICMP 重定向包产生的路由都是掩码为55的特定主机路由没有办法产生诸如这样掩码下的网络路由。此外由ICMP重定向包产生的路由还是会过期的会被删除但耗时很长。许多桌面操作系统线性搜索自己的路由表如果你利用ICMP重定向包加了太多特定主机路由到它们的路由表中极其容易造成系统的瘫痪。对于Unix系统虽然搜索路由表时不是线性搜索但过多的特定主机路由会消耗大量的内存空间。 于是就有了海信“设擂”50万其欲为何的报道8月21日海信集团在中关村当代商城举行新闻发布会海信“8341防火墙”悬赏“50万”接受全国及至全球的计算机、网络界高手检测。虽然结果是没有人能够拿到防火墙后面的密码但是防火墙遭到大量的ICMP攻击导致防火墙的IP地址ping不通造成大量攻擂者以为海信公司言而无信取消了测试转而怒牵于海信公司主页于是8月24日海信集团网站被“黑”。海信公司自己提供的防火墙遭攻击记录如下 攻击类型 攻击次数 1 ICMP攻击 334050 2 碎片攻击 25524 3 端口扫描 4365 4 WEB服务攻击 1227 5 UDP攻击 234 6 拒绝服务攻击 12 事实可以看到造成海信服务器“拒绝服务”的绝大多数攻击来自于ICMP攻击。 此外向目标主机长时间、连续、大量地发送ICMP数据包也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”使得目标主机耗费大量的CPU资源处理疲于奔命。 不过对于防止拒绝服务攻击有关部门也采取了一些相应的措施 对于信息淹没攻击我们应关掉可能产生无限序列的服务来防止这种攻击。比如我们可以在服务器端拒绝所有的ICMP包或者在该网段路由器上对ICMP包进行带宽限制控制其在一定的范围内。 第三章 ICMP部分功能的模拟实现 本科毕业论文 ICMP协议和应用研究 10 3.1 背景 3.1.1 ping命令的深入认识 ICMP协议提供的网络工具之一就是网络管理员最常使用的ping命令。ping命令可以把一个ICMP回显请求发送给一个指定的主机接收该命令的主机通过回送一个ICMP回显应答来对收到的ICMP回显请求进行应答。 ping命令的目的是测试主机是否存在。其实ping命令是测试网络中两个主机是否可以实现最低级别的连通性。 它的格式是 ping (注:若只用IP主机名的话则该命令不仅可用来校验两个主机之间的连通性而且还可以测试本地主机是否可以对主机名正确解析) 例如使用ICMP协议来进行主机探测 -1ICMP ECHO(Type 8) 和ECHO Reply (Type 0) 我们使用一个ICMP ECHO数据包来探测主机地址是否存活当然在主机没有被配置为过滤ICMP形式通过简单的发送一个ICMP ECHO(Type 8)数据包到目标主机如果ICMP ECHO Reply(ICMP type 0)数据包接受到说明主机是存活状态。 如果没有就可以初步判断主机没有在线或者使用了某些过滤设备过滤了ICMP 的REPLY。 - | | | - ICMP ECHO request -| | |HOST| - |HOST| | | | A | - | B | | | | | 如果存活或者没有过滤 | | | | - 将返回ICMP RCHO REPLY - | | | - 这种机制就是我们通常所用的ping命令来检测目标主机是否可以ping到。 下面是两个LINUX机器的演示 rootxundi /root# ping PING () from : 56(84) bytes of data. 64 bytes from : icmp_seq=0 ttl=255 time=4.4 ms 64 bytes from : icmp_seq=1 ttl=255 time=5.9 ms 64 bytes from : icmp_seq=2 ttl=255 time=5.8 ms - ping statistics - 3 packets transmitted 3 p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论