ICMP协议及应用研究Word下载.docx

上传人:b****4 文档编号:6333527 上传时间:2023-05-06 格式:DOCX 页数:26 大小:86.83KB
下载 相关 举报
ICMP协议及应用研究Word下载.docx_第1页
第1页 / 共26页
ICMP协议及应用研究Word下载.docx_第2页
第2页 / 共26页
ICMP协议及应用研究Word下载.docx_第3页
第3页 / 共26页
ICMP协议及应用研究Word下载.docx_第4页
第4页 / 共26页
ICMP协议及应用研究Word下载.docx_第5页
第5页 / 共26页
ICMP协议及应用研究Word下载.docx_第6页
第6页 / 共26页
ICMP协议及应用研究Word下载.docx_第7页
第7页 / 共26页
ICMP协议及应用研究Word下载.docx_第8页
第8页 / 共26页
ICMP协议及应用研究Word下载.docx_第9页
第9页 / 共26页
ICMP协议及应用研究Word下载.docx_第10页
第10页 / 共26页
ICMP协议及应用研究Word下载.docx_第11页
第11页 / 共26页
ICMP协议及应用研究Word下载.docx_第12页
第12页 / 共26页
ICMP协议及应用研究Word下载.docx_第13页
第13页 / 共26页
ICMP协议及应用研究Word下载.docx_第14页
第14页 / 共26页
ICMP协议及应用研究Word下载.docx_第15页
第15页 / 共26页
ICMP协议及应用研究Word下载.docx_第16页
第16页 / 共26页
ICMP协议及应用研究Word下载.docx_第17页
第17页 / 共26页
ICMP协议及应用研究Word下载.docx_第18页
第18页 / 共26页
ICMP协议及应用研究Word下载.docx_第19页
第19页 / 共26页
ICMP协议及应用研究Word下载.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ICMP协议及应用研究Word下载.docx

《ICMP协议及应用研究Word下载.docx》由会员分享,可在线阅读,更多相关《ICMP协议及应用研究Word下载.docx(26页珍藏版)》请在冰点文库上搜索。

ICMP协议及应用研究Word下载.docx

3.1背景………………………………………………………………………10

3.1.1ping命令的深入认识…………………………………………………………10

3.2存在的问题…………………………………………………………………………12

3.3CPing的功能特点…………………………………………………………………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的ICMP)……………………18

参考文献…………………………………………………………………………19

摘要

本文较深入地研究了TCP/IP协议组中的ICMP协议。

ICMP是“InternetControlMessageProtocol”(Internet控制报文协议)的缩写,是一个非常重要的协议。

ICMP是一种与IP协议并行运行在网络层的协议,用于在IP主机、路由器之间传递控制消息。

控制消息包含网络通不通、主机是否可达、路由是否可用等网络本身的消息。

本文还深入研究了在常用操作系统下(如UNIX,Windows,DOS)利用ICMP协议实现的ping命令,它是用来测试网络是否通畅,主机是否可达,以及用VisualC++制作模拟ping命令的小软件PingDemo,它虽小,但是简便,面向一般用户。

关键词:

ICMP,TCP/IP,ping

Abstract

ThepapersearchestheICMPprotocolinTCP/IPdeeply.ICMPisInternetControlMessageProtocol,whichplaysaveryimportantrole.ICMPthatworksinthesamedegreeasIPprotocol,isusedtopassthecontrolmessagebetweenip-hostandrounters.Thecontrolmessagetellsyouthatisthenetlinked,hasthehostbeenarrived,oristherounterworkingandsoon.Inaddition,thepaperalsosearchesthepingcommandinthecommonOSwithICMP.Thepingcommandistocheckthatthehostexistsornot.Andmore,usingVisualC++tomakeasoftcalledPingDemoassimilarasping.Itfacestoeveryonethoughitissmall.

Keywords:

ICMP,TCP/IP,ping

第一章引言

随着科学技术的飞速发展,21世纪的地球人已经生活在信息时代。

20世纪人类两大科学技术成果--计算机技术和网络技术,均已深入到人类社会的各个领域,Internet把“地球村”的居民紧密联系在一起,“天涯若比邻”已然成为现实。

互联网之所以能这样迅速蔓延,被世人接受,是因为它具备特有的信息资源。

近年来Internet的迅速发展,给人们的日常生活带来了全新的感受,“网络生存”已经成为时尚,同时人类社会诸如政治、科研、经济、军事等各种活动对信息网络的依赖程度已经越来越强,“网络经济”时代已初露端倪。

ping命令早已是耳熟能详的检查网络畅通的得力方法之一,但是ping命令是来自于哪个网络层次的哪个协议,就不是每个人能说得上的了。

同样,对于TCP/IP协议我们一定非常熟悉,但是对于ICMP协议可能就一无所知了。

ICMP协议是一个非常重要的协议,它对于网络安全、网络的正常运作具有极其重要的意义。

它被用于在IP主机、路由器之间传递控制消息,如网络通不通、主机是否可达、路由是否可用等。

这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

而且,ICMP协议本身的特点又决定了它非常容易被用于攻击网络上的路由器和主机,造成CPU疲于奔命,系统瘫痪,主机死机。

以上所言,ICMP的研究将会带领我们进入一个丰富多彩的未知领域。

第二章基于IPV4的ICMP的认识

2.1OSI参考模型和TCP/IP参考模型的比较

尽管OSI模型在各种场合得到了广泛的应用,但由于其建立时间过早,各种网络的发展不断突破了OSI参考模型,特别是互联网的发展,对OSI模型是一个巨大的挑战。

OSI参考模型的教训是:

首先,引入时间过晚,建立标准时TCP/IP已在大学使用,而后来又被广泛使用;

其次,在技术上不能完全适应网络发展现状,如会话层在大多数应用中很少使用,表述层几乎是空的。

相反数据链路层和网络层内容过多,有时不得不分成子层,每一子层赋予不同的功能。

OSI的另一个问题是有些功能在不同的层一再出现,如编址、流量控制、纠错等等。

有些功能放在那里很难达成一致意见,如安全性、加密及网络管理层很难达成一致而干脆未包括在内。

同时OSI完全忽略了无连接业务的相应的协议,而这在LAN和演播室局域网中得到了广泛的应用,只是后来才加以补充。

另一个严重问题是OSI主要考虑通信,而计算机世界有相当多的不同点。

最后在OSI的实现和政策上都有一些问题。

我们再来看一下TCP/IP参考模型,如图1。

图1OSI参考模型和TCP/IP参考模型

可以看到,其中不存在会晤层和表述层,主要面向连接的网络层也被以包交接为基础的无连接互联网络层代替,称为互联网层,数据链路层和物理层也大大简化为主机到网络层(Host-To-Network),除了指出主机必须使用能发送IP包的协议外并不规定什么。

在互联网层中定义了包结构和相应的协议,称为互联网协议(IP:

InternetProtocol),主要作用是将IP包送到相应的地址。

TCP/IP传送层的作用类似于OSI传送层的作用,是使源和目标设备相互对话。

TCP/IP定义了两种端到端协议,第一种是传输控制协议(TCP:

TransmissionControlProtocol),是可靠的面向连接的协议,能确保拜特流无误码从源设备传送到互联网中的其他设备。

它将输入拜特流分割成较小的信息并将其每一个都放入互联网层,在接收端,接收TCP重组所接收的信息还原成原拜特流。

TCP还进行流量控制,确保较高速的发送端不会使较低速的接收设备过载。

第二种协议是用户数据报协议(UDP:

UserDatagramProtocol),是一个非确保的无连接协议,用于那些不需要TCP顺序和流量控制的应用,广泛用于单项数据传输、服务器用户类型的应答应用。

在这些应用中,即时传送比精确传送更重要,典型的应用就是语言和视频传输。

2.2TCP/IP在网络中的地位和作用

TCP/IP协议并不完全符合OSI的七层参考模型。

传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。

该模型的目的是使各种硬件在相同的层次上相互通信。

这7层是:

物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。

而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

这4层分别为:

应用层、传输层、互连网络层、网络接口层。

网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。

IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;

相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。

IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。

IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

面向连接的服务(例如Telnet、FTP、rlogin、XWindows和SMTP)需要高度的可靠性,所以它们使用了TCP。

2.3ICMP的介绍

ICMP是“InternetControlMessageProtocol”(Internet控制报文协议)的缩写,是一个非常重要的协议,它对于网络安全具有极其重要的意义。

ICMP消息是随IP数据包一起传输的,但该消息本身也是一种与IP协议并行运行在网络层的协议。

它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。

比如我们经常使用的用于检查网络通不通的Ping命令,这个“ping”的过程实际上就是ICMP协议工作的过程。

还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。

2.3.1ICMP协议报头

ICMP消息使用了一种简单的数据结构,其报头部分由三个字段组成,作为报头第一项的类型(type)字段占用了一个字节,用来表示该协议消息所实现的功能,而占用一个字节长度的代码(code)字段则用来进一步对消息内容进行分类。

ICMP消息内容(长度和格式不定)

ICMP协议报头最后一项是两个字节长度的校验和,而其后的ICMP消息内容则与消息功能有关,但所有消息内容中都必须带有引发错误消息和数据报的IP报头和前8个字节,而且这些信息足以使其上层协议对自己的报头进行检查并根据ICMP消息内容来执行适当的操作。

最重要的是,ICMP协议不支持数据纠错功能,该协议只是通过向数据源回送错误消息来告诉路由错误。

类型代码名称含义

0*Echoreplay对ping的回应

3*DestinationUnreachable主机或路由器返回信息:

一些包未达到目的地

0NetUnreachable路由器配置错误或错误指定IP地址

1HostUnreachable最后一个路由器无法与主机进行ARP通讯

4*SourceQuenchInternet阻塞

5*Redirect有人试图重定向你的默认路由器,可能Hacker试图你进行“man-in-middle”的攻击,使你的机器通过他们的机器路由。

8*EchoRequestping

9*RouterAdvertisementhacker可能通过重定向你的默认的路由器DoS攻击你的Win9x或Solaris。

邻近的Hacker也可以发动man-in-the-middle的攻击

11*TimeExceededInTransit因为超时包未达到目的地

12*ParameterProblem发生某种不正常,可能遇到了攻击

2.3.2ICMP协议的消息

为了提前预防协议可能引发的问题,ICMP协议技术规范中事先对消息进行了若干限制。

比如说,规定一个ICMP错误消息不能引发另一个ICMP错误消息。

1)路由消息

ICMP路由消息大多用于请求得到可使用的路由器的清单或对请求的应答,应答中包括可用路由器的清单(清单中的每个路由都有优先级别)。

一类路由是在路由器过载情况下产生的。

如果一个主机向路由器发送过量数据,或者多个主机同时向路由器发送大量数据,都可以导致路由器瘫痪。

但是,这时,路由器可以向发送方回送请求减速消息。

每当路由器无法对接收的数据报进行处理时,路由器就把该数据报丢弃并同时回送给数据源一个减速消息,请求高速传输主机降低发送速率。

收到减速消息的源主机将逐步降低速率直到错误消息消失为止,然后再逐步提高发送速率直到错误消息出现为止。

另一类情况是发生在向一个录由器发送数据报时另一个路由器可借助ICMP消息广播一个更好的路由。

称为路由重新定向。

2)无法到达消息

ICMP无法到达的消息表示在对数据报进行寻址过程中寻址失败而引发的错误信息。

举个简单的例子,目标地址有误的数据报可以引发ICMP协议将无法到达的消息回送给该数据报的原始发送主机。

该消息一般用来指出目标主机或网络不存在或没有应答。

引发该类错误消息的主要原因包括主机处于关机状态,网络链路故障,以及无法使用特定的协议等。

2.3.3ping命令

ICMP协议提供的网络工具之一就是网络管理员最常使用的ping命令。

ping命令可以把一个ICMP回显请求发送给一个指定的主机,接收该命令的主机通过回送一个ICMP回显应答来对收到的ICMP回显请求进行应答。

ping命令的目的是测试主机是否存在。

其实,ping命令是测试网络中两个主机是否可以实现最低级别的连通性。

2.3.4路由跟踪traceroute

路由跟踪程序traceroute借助于ICMPTTL超时消息来巧妙地收集客户端与服务器之间的路右信息。

该程序可输出所有参与转发数据包的路由器的名称以及消息从主机到该路由器的往返传输时间。

网络管理员可借助该工具来对响应速度较慢的连接进行诊断,通过观察数据包从一个主机到另一个主机的传输路径有助于帮助管理员确定网络瓶颈的具体位置(也就是应答速度最慢的路由器)或不合理的传输路径。

与ping命令类似,虽然路由跟踪程序不能为网络管理提供全面解决方案,但该工具作为诊断工具来说还是非常有用的。

2.4利用ICMP恶意攻击影响网络安全

当今世界上,平均每20秒钟就有一起黑客事件发生,仅在美国每年造成的经济损失就超过100亿美圆。

ICMP协议对于网络安全具有极其重要的意义。

ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。

服务拒绝攻击(DoS)企图通过使服务计算机崩溃或把它压跨来阻止提供服务,服务拒绝攻击是最容易实施的攻击行为。

由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区,当产生畸形的,声称自己的尺寸超过ICMP上限的包也就是加载的尺寸超过64K上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方当机。

这就是所说的“ping 

of 

death”,现在网络上很多号称能够致使系统死机的软件都是基于这个原理,我们所熟悉的工具“Winnuke”就是一例。

对路由器而言,向Intel 

Express 

Switch或其后的主机发送一畸形的ICMP包可能导致系统崩。

通过本地或远程发送的畸形包能蒙骗服务器。

当服务器收到畸形的ICMP包时,它将继续检查才对,然而它将丢失所有的路由功能,而且不将检查其它连接了。

主要影响Intel 

Switch 

500 

系列。

另外,Windows也有拒绝服务漏洞,对 

Win98 

NT4/SP5,6 

Win2K都有影响,当如上系统受到非法碎片包包含不合法碎片 

ICMP 

ECHOs 

(pings)和UDP 

packets攻击,Windows系统会拒绝服务。

直至CPU占用率达到100%,最后系统崩溃。

ICMP重定向提供了一种相当有效的DoS。

不象ARP入口,这些特定主机路由入口永不过期。

注意,攻击没有要求必须从局域网内发起,事实可以从广域网上发起。

如果子网所用DNS位于网关外,产生一个到该DNS的错误路由是很容易的,通过在Pwin98下测试,由ICMP重定向包产生的路由都是掩码为255.255.255.255的特定主机路由,没有办法产生诸如255.255.0.0这样掩码下的网络路由。

此外,由ICMP重定向包产生的路由还是会过期的,会被删除,但耗时很长。

许多桌面操作系统线性搜索自己的路由表,如果你利用ICMP重定向包加了太多特定主机路由到它们的路由表中,极其容易造成系统的瘫痪。

对于Unix系统,虽然搜索路由表时不是线性搜索,但过多的特定主机路由会消耗大量的内存空间。

于是,就有了《海信“设擂”50万其欲为何》的报道:

8月21日海信集团在中关村当代商城,举行新闻发布会:

海信“8341防火墙”悬赏“50万”,接受全国及至全球的计算机、网络界高手检测。

虽然结果是没有人能够拿到防火墙后面的密码,但是防火墙遭到大量的ICMP攻击,导致防火墙的IP地址ping不通,造成大量攻擂者以为海信公司言而无信,取消了测试,转而怒牵于海信公司主页,于是8月24日海信集团网站被“黑”。

海信公司自己提供的防火墙遭攻击记录如下:

攻击类型 

攻击次数

ICMP攻击 

334050

碎片攻击 

25524

端口扫描 

4365

WEB服务攻击 

1227

UDP攻击 

234

拒绝服务攻击 

12

事实可以看到,造成海信服务器“拒绝服务”的绝大多数攻击来自于ICMP攻击。

此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。

大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。

不过,对于防止拒绝服务攻击,有关部门也采取了一些相应的措施:

对于信息淹没攻击,我们应关掉可能产生无限序列的服务来防止这种攻击。

比如我们可以在服务器端拒绝所有的ICMP包,或者在该网段路由器上对ICMP包进行带宽限制,控制其在一定的范围内。

第三章ICMP部分功能的模拟实现

3.1背景

3.1.1ping命令的深入认识

ping命令的目的是测试主机是否存在。

其实,ping命令是测试网络中两个主机是否可以实现最低级别的连通性。

它的格式是:

ping<

IP主机名|IP地址>

(注:

若只用IP主机名的话,则该命令不仅可用来校验两个主机之间的连通性,而且还可以测试本地主机是否可以对主机名正确解析)

例如:

使用ICMP协议来进行主机探测

--1,ICMPECHO(Type8)和ECHOReply(Type0)

我们使用一个ICMPECHO数据包来探测主机地址是否存活(当然在主机没有被配置为过滤ICMP形式),通过简单的发送一个ICMPECHO(Type8)数据包到目标主机,如果ICMPECHOReply(ICMPtype0)数据包接受到,说明主机是存活状态。

如果没有就可以初步判断主机没有在线或者使用了某些过滤设备过滤了ICMP的REPLY。

-------------------------------------------------------------

||

|--------------ICMPECHOrequest--------------|

||HOST|——————————--->

|HOST||

||A|-------------------------------------|B||

|||如果存活或者没有过滤|||

|------将返回ICMPRCHOREPLY------|

--------------------------------------------------------------

图2主机间通过ICMP交互的示意图

这种机制就是我们通常所用的ping命令来检测目标主机是否可以ping到。

下面是两个LINUX机器的演示:

[root@xundi/root]#ping192.168.5.5

PING192.168.5.5(192.168.5.5)from192.168.5.1:

56(84)bytesofdata.

64bytesfrom192.168.5.5:

icmp_seq=0ttl=255time=4.4ms

icmp_seq=1ttl=255time=5.9ms

icmp_seq=2ttl=255time=5.8ms

---192.168.5.5pingstatistics---

3packetstransmitted,3packetsreceived,0%packetloss

round-tripmin/avg/max=4.4/5.3/5.9ms

下面是snort所显示的信息包(ICMPECHOrequest&

replay报文):

01/26-13:

16:

25.746316192.168.5.1->

192.168.5.5

ICMPTTL:

64TOS:

0x0ID:

6059

ID:

5721Seq:

1ECHO

89D78E3827630B0008090A0B0C0D0E0F...8'

c..........

10

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2