公务员期刊网 精选范文 icmp协议范文

icmp协议精选(九篇)

icmp协议

第1篇:icmp协议范文

关键词:DELPHI;ICMP协议;监控

中图分类号:TP311.11 文献标识码:A 文章编号:1007-9599 (2012) 17-0000-02

1 DELPHI简介

Delphi,是Windows平台下著名的快速应用程序开发工具(Rapid Application Development,简称RAD)。它的前身,即是DOS时代盛行一时的“BorlandTurbo Pascal”,最早的版本由美国Borland(宝兰)公司于1995年开发。主创者为Anders Hejlsberg。经过数年的发展,此产品也转移至Embarcadero公司旗下。Delphi是一个集成开发环境(IDE),使用的核心是由传统Pascal语言发展而来的Object Pascal,以图形用户界面为开发环境,透过IDE、VCL工具与编译器,配合连结数据库的功能,构成一个以面向对象程序设计为中心的应用程序开发工具。

2 ICMP协议

2.1 ICMP简介

ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP在网络中的主要作用是:主机探测、路由维护、路由选择、流量控制。Ping的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。Windows 2000提供的icmp.dll模块,用于网络ICMP请求。

2.2 ICMP报文

ICMP报文分为两种,一是错误报告报文,二是查询报文。每个ICMP报头均包含类型、编码和校验和这三项内容,长度为8位,8位和16位,其余选项则随ICMP的功能不同而不同。在网络设备监测时主要用到是ICMP_ECHO和ICMP_ECHOREPLY,它们分别代表:请求回送和请求回应。

2.3 工作原理

简单来ICMP的工作原理是使用一个ICMPECHO数据包来探测主机地址是否存活,通过简单的发送一个ICMPECHO(Type 8)数据包到目标主机,如果ICMPECHOReply(ICMPtype0)数据包接受到,说明主机是存活状态。如果没有就可以初步判断主机没有在线或者使用了某些过滤设备过滤了ICMP的REPLY。这种机制就是我们通常所用的ping命令来检测目标主机是否可以ping到。回送消息的源地址是回送响应消息的目的地址。若要形成一个回送响应消息,应该将源和目的地址交换,将类型代码更改为0,重新计算机校验码。

下面结合一个编程语言对实现过程做一个详解。

3 实现方式

3.1 创建PING操作的一个类

为了调用方便,首先创建一个类,供程序中使用。源代码如下:

constructor Tping.create;

begin

inherited create;

hICMPdll := LoadLibrary('icmp.dll');

@ICMPCreateFile := GetProcAddress(hICMPdll, 'IcmpCreateFile');

@IcmpCloseHandle := GetProcAddress(hICMPdll,'IcmpCloseHandle');

@IcmpSendEcho := GetProcAddress(hICMPdll, 'IcmpSendEcho');

hICMP := IcmpCreateFile;

end;

3.2 主机活动判断

用IcmpSendEcho函数包含ICMP.DLL中,它是用于Internet控制报文协议测试的,可以直观地测试本地计算机的网络速度。利用这个函数,可以判断主机是否活动。它包含主机IP,数据包大小、延迟时间等8个参数。如果有返回值,返回值表示收到的回复的个数。如果为0表示没有回复,主机无法到达。通过IcmpSendEcho函数进行主机活动的判断。

3.3 主程序的实现

在主程序中放置一个Timer控件,设置扫描时间为10分钟。定义一个ttPing : TPing 变量,并进行初始化。在OnTimer事件中,加入ping操作的代码,根据返回值,显示该主机是否在线,当出现异常时,通过文字和声音进行提示。实现对网络及关键主机的监控。程序代码如下:

ttPing := tPing.create;

try

tStr := '';

ttPing.pinghost(tPingTask.Strings[1],tStr);

if pos('Can not find host',tStr) = 0 then

begin

AddMsg(self.CurentTaskLog,'正常');

end

else

begin

addmsg(self.TaskLog,tPingTask.Strings[0]+ tPingTask.Strings[1]+'出现异常,请查找原因');

Windows.Beep(480, 20000);

end

finally

tPingTask.Free;

ttPing.Free;

end;

3.4 广域网监控实现

以上程序可以实现对局域网内设备进行监控。但要监控外网地址入口就需要增加路由来实现。Windows下添加路由命令为“Route add 目的IP段 mask 子网掩码 路由器IP”,将外网入口地址加到Windows路由表中,通过以上程序就可直接针对外网地址进行PING测试,实现广域网的监控。

4 结束语

本文结合DELPHI编程工具,对icmp.dll实现PING功能做了说明。这只是简单的应用,通过深入开发,可以方便的实现局域网设备、关键主机、广域网入口等设备的监控,以最大程度地减少人工劳动强度,提高工作效率,提高自动化程度,为设备正常、高效的运转奠定良好的基础。

参考文献:

[1]杜新华,杜力耘,张蓓蓓.基于ICMP的Ping软件实现[J].上海交通大学学报,1997,05.

[2]黄跃青,崔智慧,崔炳俭等.MAS系统的二次开发[J].气象与环境科学,2010,33(B09),201-202.

[3]王新刚,柴乔林,李琳.基于Windows的综合网络性能监测系统[J].计算机应用研究,2002,10.

第2篇:icmp协议范文

关键词:网络攻击;ARP;MAC地址;ICMP

中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)18-31583-02

The Phenomenon of Network Attack

WANG Yu-ting

(Fujian Polytechnic of Information Technology, Fujian 350003, China)

Abstract: Network protocols aimed at making communication more convenient on internet. However the defects of protocols give those spiteful cyber citizens some chances to develop ways to attack websites. I would introduce some possible ways to destroy websites in my thesis and analyze briefly the working principles which realize the attacks on internet.

Key words: the network attacks; ARP; MAC address; ICMP

1 引言

现代的网络通信系统可以说已经遍布全世界的每个角落,尽管很多不同的用户使用着各种不同型号的计算机并且运行的是完全不同的操作系统,但他们仍然可以通过TCP/IP协议族做到互相通信。这就是网络协议所发挥的巨大作用,但同时它也可以说是网络中的一把双刃剑。人们可以通过它实现任意形式的互通,也可以利用它破坏网络中的通信。这就是指人们通过研究各种网络协议中的缺陷和它们的工作原理来找到其中的漏洞,然后对相应的主机或网络进行攻击,最终导致被攻击主机或网络被监听、破坏甚至瘫痪以达到攻击者的目的。下文当中介绍的几种攻击现象主要是利用ARP、ICMP等协议的工作原理来进行攻击的。

2 链路层攻击

链路层也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。该层中的协议主要有ARP(地址解析协议)和RARP(逆地址解析协议)两个用于某些网络接口(如以太网和令牌环网)的特殊协议,主要功能为用来转换IP层和网络接口层使用的地址。

ARP的工作原理简单概括为:在传输以太网数据包时必须知道目标主机的MAC地址。源主机在发送数据时首先检查自己的ARP列表中有没有该IP地址对应的MAC地址,有的话就直接传输。如果没有就向本地网段发起一个ARP请求的广播包,该请求数据包中包括源主机的IP地址、MAC地址以及目的主机的IP地址,网段中的所有主机收到该请求后都将目的IP与自己的IP进行比较,如果不相同就忽略此包;如果相同就将源主机的IP地址和MAC地址更新到自己的ARP表中,并发送应答数据包给源主机告诉对方自己的MAC地址,源主机接到应答包之后同样将对方的IP地址和MAC地址更新到自己的ARP表中,然后开始传输数据。

该层上的网络攻击就是利用ARP协议的工作原理来实现的,主要有以下两种类型:

2.1 ARP广播攻击

又称作ARP扫描攻击或ARP请求风暴。这种攻击表面上看起来是网络当中出现了大量ARP请求广播包,几乎是对网段内的所有主机进行扫描,最终大量的ARP请求广播可能占用掉许多网络带宽资源。实际上是由于黑客程序发送大量带假目标IP地址、假源MAC地址的ARP请求报文,产生大量广播包。这些新源MAC地址被各主机学习,造成ARP表溢出,挤掉原来合法的ARP表项,致使合法目标MAC成为新目标MAC,又使各主机产生大量ARP广播请求报文。

2.2 ARP欺骗攻击

ARP协议并不是只有发送了ARP请求才接收ARP应答,也可以直接接收ARP应答数据包。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中IP和MAC地址存储在ARP缓存中。因此在网络中,如果有人发送一个出错的或者是自己伪造的ARP应答,网络可能就会出问题。具体的实现过程可以描述为:黑客程序发送错误或者误导的ARP应答报文,使网络数据流重定向于黑客主机,使黑客主机成为网络数据流传输的中转站,导致窃取甚至篡改正常数据包。ARP欺骗攻击的核心就是向目标主机发送伪造的ARP应答,并使目标主机接收应答中伪造的IP和MAC间的映射对,并以此更新目标主机缓存。

具体的实现过程如下例所示:假设一个网络环境中,有三台主机共网段,分别为主机A、B、C。三台主机的详细信息描述如下:

A的IP地址:192.168.18.1MAC地址:AA-AA-AA-11-11-11

B的IP地址:192.168.18.2MAC地址:BB-BB-BB-22-22-22

C的IP地址:192.168.18.3MAC地址:CC-CC-CC-33-33-33

假设现在A和C之间在进行通讯,此时B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.18.3(C的IP地址),MAC地址是BB-BB-BB-22-22-22(C的MAC地址本来应该是CC-CC-CC-33-33-33,这里被伪造了)。由于大多数的操作系统在接收到ARP应答后不考虑是否发出真实的ARP请求,当A接收到B伪造的ARP应答,就会及时更新本地的ARP缓存(A被欺骗了),这时B就伪装成C了。同时,B同样向C发送一个ARP应答,应答包中发送方IP地址为192.168.18.1(A的IP地址),MAC地址是BB-BB-BB-22-22-22(A的MAC地址本来应该是AA-AA-AA-11-11-11),当C收到B伪造的ARP应答,也会更新本地ARP缓存(C也被欺骗了),这时B就伪装成了A。这样主机A和C都被主机B欺骗,A和C之间通讯的数据都经过了B。这样主机B就实现了对A和C的监听。这就是典型的ARP欺骗过程。一般情况下,ARP欺骗的某一方应该是网关,就如上面的A主机。

3 网络层攻击

一个MAC地址层范围(第二层)的攻击是最普通而且也是最不容易发现的安全威胁,它的目标是让网络失效或者通过获取诸如密码这样的敏感信息而危及网络用户的安全。这些攻击利用正常的协议过程来获取信息,比如通过交换机的功能来获取MAC(媒体接入控制)地址,通过ARP协议(地址解析协议)来获取终端工作站的MAC地址或者通过DHCP(动态主机配置协议)服务器来获取IP地址分配结果。

3.1 MAC地址溢出攻击(MAC/CAM攻击)

也称为DoS(拒绝服务攻击,Denial-of-service)攻击,它的意图是阻止一个网络接受合法使用者的数据,这种类型的攻击往往导致一个网络组件停止转发数据包或者不能正确的转发。正常情况下,在一个安全的或没有受到威胁的网络中,一个第二层的转发表的建立都是基于MAC地址的,而MAC地址就是一个设备的物理地址。

标准的交换机行为就是将去往未知的目标MAC地址的数据帧广播转发,并且将每个到达包的源地址和端口信息填入到CAM表(内容寻址内存表)中,交换机拥有一个大小固定的内存空间用于存放学习到的MAC地址信息,交换机或者桥连接就是依靠这张表来实施转发、过滤以及第二层的学习机制的。但转发表只有一个有限的地址空间,企图注满该表或者使该表溢出的攻击将剥夺交换机固有的MAC地址学习能力和转发行为。这种攻击会向交换机广播大量未知MAC地址的包,这些地址都将被交换机学习到,这样就可以利用该硬件的空间限制来实施其DoS攻击了。

具体实现的时候黑客通过发送大量带假源MAC地址的帧,这些新源MAC地址被交换机学习,很快充满CAM表,挤掉原有合法的CAM表项,致使合法目标MAC地址成为新目标MAC帧而广播到所有交换机,产生大量广播帧,这时黑客还可以利用嗅探工具获取各主机广播的帧信息。

另外,还有广播MAC地址攻击,基本的攻击原理与上述类似,只是目标地址设置为全1使之全网广播。

3.2 DHCP服务欺骗和中间人攻击

一个“不可靠”的DHCP服务器(动态主机配置服务器)通常被用来与攻击者协作,对网络实施“中间人”攻击。中间人攻击是一种攻击者利用正常的协议来更改两个终端之间的正常通信数据流而形成的一种攻击技术。首先,一个黑客会广播许多含有欺骗性MAC地址的DHCP请求(动态主机配置请求),从而耗尽合法DHCP服务器上的地址空间,当其空间地址被耗尽时,这个“不可靠”的DHCP服务器就开始向“用户”的DHCP请求进行应答了,这些应答信息中将包括DNA服务器和一个默认网关的信息,这些信息就被用来实施一个中间人攻击。 然后,通信数据开始通过攻击者的终端工作站进行流动,这就允许黑客开始捕获或者观察两个互相信任的目标终端之间的通信数据。

3.3 IP主机欺骗

IP地址欺骗一般通过发送来自第三方的数据包来对第二方实施拒绝服务(DoS)攻击,这样就可以掩盖攻击系统的真实身份。这种攻击的一个简单例子就是攻击者获得处于被攻击状态的第二方主机的IP地址后,将本地地址伪装成该地址,并将其做源地址Ping第三方的系统,这样来自第三方Ping应答信息就会直接从第三方系统发送往第二方系统。

TCP SYN洪泛(TCP,传输控制协议;SYN,同步序列号码)攻击来源于一个欺骗性的IP地址,它是利用TCP三次握手会话协议对服务器进行颠覆的又一种攻击方式。一个IP地址欺骗攻击者可以通过手动修改地址或者运行一个实施地址欺骗的程序来假冒一个合法地址。另外,互联网上的蠕虫病毒也往往利用欺骗技术来掩盖它们真实的源头主机。

4 ICMP攻击

ICMP攻击包含的类别较多,在这另做一个介绍。ICMP 被IP层用于向一台主机发送单向的告知性消息。由于在ICMP中没有验证机制,这就导致了使用ICMP可以造成服务拒绝的攻击,或者可以支持攻击者截取数据包。下面介绍几种与 ICMP 协议相关的攻击行为:

4.1 ICMP DOS攻击

攻击者使用ICMP“时间超出”或“目标地址无法连接”的消息,导致一台主机迅速放弃连接。攻击者只需伪造这两个ICMP消息中的一条,并发送给通信中的两台主机或其中的一台,就可以利用这种攻击了,接着通信连接就会被切断。当一台主机错误地认为信息的目标地址不在本地网络中的时候,网关通常会使用 ICMP“转向”消息。如果攻击者伪造出一条“转向”消息,它就可以导致另外一台主机经过攻击者主机向特定连接发送数据包。

4.2 ICMP 数据包放大(ICMP Smurf)

攻击者向安全薄弱网络所广播的地址发送伪造的ICMP响应数据包。那些安全薄弱网络上的所有系统都会向受害计算机系统发送ICMP响应的答复信息,这些信息占用了目标系统的可用带宽并导致合法通信的服务被拒绝(DoS)。

4.3 死Ping攻击

攻击者向受害计算机发送一条比容量最大的IP数据包容量还要大许多的ICMP响应请求数据包。由于所接收到的ICMP响应请求数据包的容量远远高于正常的IP数据包,受害计算机不能够将这些数据包重新组合起来,导致的结果是,操作系统要么瘫痪,要么重启。

4.4 ICMP PING淹没攻击

大量的PING信息广播淹没了目标系统,使得它不能够对合法的通信做出响应。

4.5 ICMP nuke攻击

Nuke发送出目标操作系统无法处理的信息数据包,从而导致该系统瘫痪。

在网络的关键部位使用防火墙技术对来源不明的有还数据进行拦截和过滤可以有效地减轻大多数的ICMP攻击。

5 结束语

最近的一个调查显示,信息失窃已经成为信息社会发展的趋势,在造成经济损失的所有攻击中,有75%来自于公司或单位内部攻击,剩下的25%来自于外部的攻击。为了防范这些内、外部攻击,网络管理员必须采用更多先进的方式来进行攻击防备。另外更需要网络管理员时刻保持高度警惕,熟悉网络中的各种攻击现象及其实现原理,以便在网络被攻击的情况下能进行一些紧急的处理将损失将到最低。

参考文献:

[1](美)W.Richard Stevens 著;范建华,胥光辉,张涛,等译. TCP/IP详解卷一:协议. 北京:机械工业出版社,2000.4.

[2](美)特南鲍姆(Tanenbaum,A.S.)著;潘爱民 译. 计算机网络(第4版). 北京:清华大学出版社,2004.8.

第3篇:icmp协议范文

 

关键词:网络管理协议(SNMP) 网络拓扑自动发现算法 网络管理

随着计算机网络的普及,人们对计算机网络的依赖性大大加强了。在现有的技术条件下,人们希望有一个更加稳定可靠的网络环境。计算机网络管理系统就是应这样的需求而产生的。它对网络上的各种设备进行管理,通过监视和控制这些设备。及时地向管理人员报告网络状态,并且简化网络故障的处理,减少故障造成的损失,提高网络的服务质量和效率。在我国,人们开始认识到网络管理的重要性。

一、网络管理中传统的网络拓扑发现算法

网络拓扑的发现,实际上就是根据网络上节点连接情况,构造出来一个反映这种连接关系的图。网络节点可以是网关,也可以是子网:网关节点是与子网和其它网关节点相邻的节点;子网节点可被认为只与网关节点相邻,至少与它的缺省网关相邻。各子网通过各目的网关与其他子网通信,这些子网可以是一个局域网,也可以是某个局域网的一部分,它们都连接到网关的一个端口上。网关的端口可以连接子网,也可以同其他路由器相连。

主拓扑指的是反映出关键设备包括路由器,它们的接口和子网的连接关系,即路由器一路由器、路由器一子网、接口的关系。这些信息需要对网络进行搜索而获得:一般只需要对连接设备进行遍历就可以得到主拓扑结构。当前的网管软件都是通过对网络设备的MIB库进行访问,所以这种方法又被称为基于SNMP的拓扑发现。经过上述的遍历过程,可以得到网络拓拓扑图的整体构成,知道了网络主干通道情况。但是子网内部的具体设备以及连接状态尚不可知。这就需要依靠子网发现来做进一步的工作。子网发现完成的任务是确定子网内各网络设备的状态、类型以及网络接口。

遍历的定义是:对于无向图,以图中某一点为出发点,沿着边依次访问图的其余节点,如果图是连通的,则从图的任一点出发按一定的顺序沿着某些边可以访问图中的所有节点,而且每个节点仅被访问一次,这一过程称为图的遍历。在网络上,一个节点可以和很多的节点连接,所以当进行网络拓扑结构发现的时候,有可能会访问已经被发现过的节点。因此,在遍历的时候,必须对每一个节点设置一个标志。当节点未被访问过时,相应的标志为0,否则,就置为1。

二、改进的网络拓扑算法

前面基于SNMP的拓扑算法在一定程度上是非常有效的,拓扑的速度也非常快。但它存在一个缺陷。那就是,在一个特定的域中,所有的子网的信息都依赖于设备具有SNMP的特性,如果系统不支持SNMP,则这种方法就无能为力了。还有对网络管理的不重视,或者考虑到安全方面的原因,人们往往把网络设备的SNMP功能关闭,这样就难于取得设备的MIB值,就出现了拓扑的不完整性,严重影响了网络管理系统的功能。针对这一的问题,下面讨论本文对上述算法的改进一基于ICMP协议的拓扑发现。

(一)ICMP报文的格式

ICMP被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。网际协议CIP没有出错报告或出错校正机制,它依靠网际控制报文协议(ICMP)模块来报告数据处理过程,井提供管理和状态信息。ICMP报文在传送时被封装在IP数据报中,使用IP协议发送,但ICEP不看作是高层协议的内容。

回应请求与应答均以IP数据报的形式在网间传输,假如成功地收到一个应答(应答中的数据拷贝与请求中的任选数据完全一致),不但说明信宿机可以到达,而且说明数据报传输系统的相应部分工作正常,至少信源机和信宿机的ICMP软件和IP软件工作正常,请求与应答经过中间网关也在正常工作。在许多TCP/IP实现中,用户命令Ping便是利用ICMP回应请求/应答报文测试信宿机的可到达性的。

(二)PING的实现

PING的主要操作是发送报文,并简单地等待回答。PING之所以如此命名,是因为它是一个简单的回显协议,使用ICMP响应请求与响应应答报文。PING主要由系统程序员用于诊断和调试。一般的,PING的功能有:

LOOP BACK PING用于验证TCP/IP软件的操作。

PIN G地址确定能否寻址物理网络设备。

PING远程IP地址验证能否寻址网络。

第4篇:icmp协议范文

 

关键词:简单网络管理协议(SNMP) 网络拓扑自动发现算法 网络管理

随着计算机网络的普及,人们对计算机网络的依赖性大大加强了。在现有的技术条件下,人们希望有一个更加稳定可靠的网络环境。计算机网络管理系统就是应这样的需求而产生的。它对网络上的各种设备进行管理,通过监视和控制这些设备。及时地向管理人员报告网络状态,并且简化网络故障的处理,减少故障造成的损失,提高网络的服务质量和效率。在我国,人们开始认识到网络管理的重要性。

一、网络管理中传统的网络拓扑发现算法

网络拓扑的发现,实际上就是根据网络上节点连接情况,构造出来一个反映这种连接关系的图。网络节点可以是网关,也可以是子网:网关节点是与子网和其它网关节点相邻的节点;子网节点可被认为只与网关节点相邻,至少与它的缺省网关相邻。各子网通过各目的网关与其他子网通信,这些子网可以是一个局域网,也可以是某个局域网的一部分,它们都连接到网关的一个端口上。网关的端口可以连接子网,也可以同其他路由器相连。

主拓扑指的是反映出关键设备包括路由器,它们的接口和子网的连接关系,即路由器一路由器、路由器一子网、接口的关系。这些信息需要对网络进行搜索而获得:一般只需要对连接设备进行遍历就可以得到主拓扑结构。当前的网管软件都是通过对网络设备的MIB库进行访问,所以这种方法又被称为基于SNMP的拓扑发现。经过上述的遍历过程,可以得到网络拓拓扑图的整体构成,知道了网络主干通道情况。但是子网内部的具体设备以及连接状态尚不可知。这就需要依靠子网发现来做进一步的工作。子网发现完成的任务是确定子网内各网络设备的状态、类型以及网络接口。

遍历的定义是:对于无向图,以图中某一点为出发点,沿着边依次访问图的其余节点,如果图是连通的,则从图的任一点出发按一定的顺序沿着某些边可以访问图中的所有节点,而且每个节点仅被访问一次,这一过程称为图的遍历。在网络上,一个节点可以和很多的节点连接,所以当进行网络拓扑结构发现的时候,有可能会访问已经被发现过的节点。因此,在遍历的时候,必须对每一个节点设置一个标志。当节点未被访问过时,相应的标志为0,否则,就置为1。

二、改进的网络拓扑算法

前面基于SNMP的拓扑算法在一定程度上是非常有效的,拓扑的速度也非常快。但它存在一个缺陷。那就是,在一个特定的域中,所有的子网的信息都依赖于设备具有SNMP的特性,如果系统不支持SNMP,则这种方法就无能为力了。还有对网络管理的不重视,或者考虑到安全方面的原因,人们往往把网络设备的SNMP功能关闭,这样就难于取得设备的MIB值,就出现了拓扑的不完整性,严重影响了网络管理系统的功能。针对这一的问题,下面讨论本文对上述算法的改进一基于ICMP协议的拓扑发现。

(一)ICMP报文的格式

ICMP被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。网际协议CIP没有出错报告或出错校正机制,它依靠网际控制报文协议(ICMP)模块来报告数据处理过程,井提供管理和状态信息。ICMP报文在传送时被封装在IP数据报中,使用IP协议发送,但ICEP不看作是高层协议的内容。

回应请求与应答均以IP数据报的形式在网间传输,假如成功地收到一个应答(应答中的数据拷贝与请求中的任选数据完全一致),不但说明信宿机可以到达,而且说明数据报传输系统的相应部分工作正常,至少信源机和信宿机的ICMP软件和IP软件工作正常,请求与应答经过中间网关也在正常工作。在许多TCP/IP实现中,用户命令Ping便是利用ICMP回应请求/应答报文测试信宿机的可到达性的。

(二)PING的实现

PING的主要操作是发送报文,并简单地等待回答。PING之所以如此命名,是因为它是一个简单的回显协议,使用ICMP响应请求与响应应答报文。PING主要由系统程序员用于诊断和调试。一般的,PING的功能有:

LOOP BACK PING用于验证TCP/IP软件的操作。

PIN G地址确定能否寻址物理网络设备。

PING远程IP地址验证能否寻址网络。

PING远程主机名验证主机上某个服务器的操作。

实现PING的过程主要是:首先向目的机器发送一个响应请求的ICMP报文,然后等待目的机器的应答,直到超时。如收到应答报文,贝以报告目的机器运行正常,程序退出。

(三)traceroute的实现

在IP头的结构中,存在一个ip_ttl域,即生存时间(time to_live,TTL)。TTL参数用于测量数据报在网际存在多长时间。网络中的每个路由器都检查该域,如果TTL值为0,路由器就抛弃该数据报。路由器还必须对它处理的每个数据报的该域进行减I操作。在实际执行中,TTL域是一个反映跳段的值。所以,当数据报穿过一个IP节点(网关)时。TTL域中的值就减1。

traceroute的功能就是利用IP头中的TTL域。开始时信源设置IP头的TTL值为0,发送报文给信宿,第一个网关收到此报文后,发现TTL值为0,它丢弃此报文,并发送一个类型为超时的ICMP报文给信源。信源接收到此报文后对它进行解析,这样就得到了路由中的第一个网关地址。然后信源发送TTL值为1的报文给信宿,第一个网关把它的TTL值减为0后转发给第二个网关,第二个网关发现报文TTL值为0,丢弃此报文并向信源发送超时ICMP报文。这样就得到了路由中和第二个网关地址。如此循环下去,直到报文正确到达信宿,这样就得到了通往信宿的路由。

(四)网络拓扑的发现算法

具体实现的步骤:

1、于给定的IP区间,利用PING依次检测每个IP地址,将检测到的IP地址记录到IP地址表中。

2、对第一步中查到的每个IP地址进行traceroute操作,记录到这些IP地址的路由。并把每条路由中的网关地址也加到IP表中。

3、对IP地址表中的每个IP地址,通过发送掩码请求报文与接收掩码应答报文,找到这些IP地址的子网掩码。

4、根据子网掩码,确定对应每个IP地址的子网地址,并确定各个子网的网络类型。把查到的各个子网加入地址表中。

第5篇:icmp协议范文

关键词:木马通信;隐藏通信

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)35-2481-03

Covert Technologies on Communications of Trojan Horse

ZHANG Chun-cheng, LU Gang, FENG Yuan

(PLA Artillery Academy Computer Center,Hefei 230031,China)

Abstracr:The communications between server and client is a kernel technology to research Trojan.This paper describes how to hide out inspect of firewall and system tools through network protocol, and successful implement on covert communications of Trojan. These sound codes are all debugged and passed.

Key words:communications of trojan horse;covert communications

1 引言

木马通常需要利用一定的通信方式进行信息交流(如接收控制者的指令、向控制端传递信息等)。系统和应用程序一般采用 TCP/UDP 通信端口的形式与控制端进行通信。木马一般也是利用 TCP/UDP 端口与控制端进行通信。通常情况下,木马进行通信时直接打开一个或几个属于自己的 TCP/UDP 端口。早期的木马在系统中运行后都是打开固定的端口,后来的木马在植入时可随机设定通信时打开的端口,具有了一定的随机性。可是通过端口扫描很容易发现这些可疑的通信端口。事实上,目前的许多木马检测软件正是通过扫描本地和远程主机系统中打开的已知木马端口进行木马检测的。木马通信端口成为暴露木马形踪一个很不安全的因素。为此采用新技术的木马对其通信形式进行了隐蔽和变通,使其很难被端口扫描发现。

2 木马通信形式的隐蔽技术

木马为隐蔽通信形式所采用的手段有:端口寄生、反弹端口、潜伏技术,嗅探技术。

2.1 端口寄生

端口寄生指木马寄生在系统中一个已经打开的通信端口,如 TCP 80 端口,木马平时只是监听此端口,遇到特殊的指令才进行解释执行。此时木马实际上是寄生在系统中已有的系统服务和应用程序之上的,因此,在扫描或查看系统中通信端口时是不会发现异常的。在 Windows 9X 系统中进行此类操作相对比较简单,但是在 Windows NT/2K 系统中实现端口寄生相对比较麻烦。在控制端与木马进行通信时,如木马所在目标系统有防火墙的保护,控制端向木马发起主动连接就有可能被过滤掉。

2.2 反弹端口

反弹端口就是木马针对防火墙所采用的技术[1]。防火墙对于向内的链接进行非常严格的过滤,对于向外的连接比较信任。与一般的木马相反,反弹端口木马使用主动端口,控制端使用被动端口。木马定时监测控制端的存在,发现控制端上线,立即主动连接控制端打开的被动端口。为了隐蔽起见,控制端的被动端口一般开在 TCP80。这样,即使用户使用端口扫描软件检查自己的端口,发现的也是类似 TCP USERIP:1026 CONTROLLERIP:80 ESTABLISHED 这种情况,用户可能误认为是自己在浏览网页。这种反弹端口的木马常常会采用固定 IP 的第三方存储空间来进行控制端 IP 地址的传递。

下面的代码演示了被控制端的客户套接字连接控制端的服务套接字。

CServerSocket *pMy; //CServerSocket是CAsyncSocket的派生类

……

//初始化是开始连接,同时建立定时器

BOOL CServiceDlg::OnInitDialog()

{

CDialog::OnInitDialog();

pMy=NULL;

SetTimer(199,30000,NULL);

pMy=new MySock;

pMy->Create();

pMy->Connect(m_ip,80); //连接目标的80端口,让人感觉在上网

}

//在定时器中检查是否有连接,否则试图重新连接

Void CServiceDlg::OnTimer(UINT nIDEvent)

{

If(nIDEvent=199){

If(pMy->Send(“test”,4)=SOCKET_ERROR){

pMy->Detach();

delete pMy;

pMy=NULL;

pMy=new MySock;

pMy->Create();

pMy->Connect(m_ip,80);

}

}

CDialog::OnTimer(nIDEvent);

}

2.3 潜伏技术

ICMP(互联网控制报文协议)是 IP 协议的附属协议,用来传递差错报文以及其他需要注意的消息报文。它是由内核或进程直接处理而不会打开通信端口。采用潜伏技术进行通信的木马一般都是使用 ICMP协议。由于不利用 TCP/UDP 协议,不会打开通信端口,所以不会被一些端口扫描软件和利用端口进行木马防范的软件检测到[2]。通常情况下,木马利用 ICMP 报文与控制端进行通信时将自己伪装成一个 Ping 的进程,这样系统就会将 ICMP_ECHOREPLY(Ping 的回包)的监听、处理权交给木马进程,一旦事先约定好的 ICMP_ECHOREPLY 包出现(可以判断包大小、ICMP_SEQ 等特征,这此包实为控制端发给木马的命令和数据),木马就会接受、分析并从报文中解码出命令和数据尽而采取相应的操作。

有的采用潜伏技术的木马不会完全采用 ICMP 协议进行通信,它们只是监听 ICMP 报文,当出现特殊的报文时,例如特殊大小的包,特殊的报文结构等,它会打开 TCP 端口等待控制端的连接。在本地可以看到状态为 ESTABLISHED 的木马连接(如果端口的最大连接数设为 1,在远程用 CONNECT 方法进行端口扫描时没有办法发现)。一个严格采用潜伏技术的木马会严格地使用 ICMP 协议来进行数据和控制命令的传递(数据放在 ICMP 的报文中)。

木马利用 ICMP 协议与控制端进行通信的基本过程如下:

为了实现发送/监听 ICMP 报文,都要首先建立 SOCK_RAW(原始套接口)。建立 SOCK_RAW 之前需要定义一个 IP 首部,然后定义一个 ICMP 首部:

typedef struct _ihdr {

BYTE i_type; //8 位类型

BYTE i_code; //8 位代码

USHORT i_cksum; //16 位校验和

USHORT i_id; //识别号(一般用进程号作为识别号)

USHORT i_seq; //报文序列号

ULONG timestamp; //时间戳

}IcmpHeader;

这时可以通过 WSASocket 建立一个原始套接口

SockRaw=WSASocket(

AF_INET, //协议族

SOCK_RAW, //协议类型,SOCK_R

IPPROTO_ICMP, //协议,IPPROT

NULL, //WSAPROTOCOL_INFO 置空

0, //保留字,永远置为 0

WSA_FLAG_OVERLAPPED //标志位

);

随后使用 fill_icmp_data 子程序填充 ICMP 报文段,调用 CheckSum 子程序计算 ICMP 校验和。然后通过 sendto 函数发送 ICMP_ECHOREPLY 报文:

sendto(sockRaw,icmp_data,datasize,0,(structsockaddr*)&dest,sizeof(dest));

木马控制端监听程序的基本操作与木马端相同,只是需要使用 recvfrm 函数接收ICMP_ECHOREPLY 报文并用 decoder 函数将接收来的报文解码为数据和命令:

recv_icmp=recvfrom(sockRaw,recvbuf,MAX_PACKET,0,(struct sockaddr*)&from,&fromlen);

decode_resp(recvbuf,recv_icmp,&from);

对于严格采用 ICMP 协议通信的木马,除非过滤分析网络链路层的信息或者监视 Windows 系统的 Socket API 调用,否则是很难发现其行踪的。

2.4 嗅探技术

2.4.1 共享环境下嗅探技术原理

嗅探技术即 sniffer 技术,指在网络上监听数据报文的方法[3]。一般来说,sniffer 技术应用环境为共享式以太网(Hub-based Ethernet)。在以太网中,所有的通讯都是广播的,通常在同一个网段的所有网络接口都可以访问在物理媒体上传输的所有数据。在实际系统中,数据的收发是由网卡来完成。当收到网络上传输来的数据时,首先由网卡对数据帧的目的 MAC 地址进行检查,如果目的 MAC 地址与本地的 MAC 地址相匹配,则认为应接收该数据并产生相应的中断信号通知 CPU,如果不匹配,则直接丢弃该数据帧,本地计算机将根本不知道有数据帧的到来。网卡一般有如下 4 种接收模式:

1) 广播方式,网卡能够接收网络中的广播信息。

2) 组播方式,网卡能够接收组播数据。

3) 直接方式,只有目的网卡才能接收该数据。

4) 混杂模式,网卡能够接收一切通过的数据。

由于所有的物理信号都能被连接在该网络上的计算机所接收,因此可以通过混杂模式(promiscuous mode)方式使网卡能够接收到一切通过它的数据,而不管实际上数据的目的地址是不是计算机。

2.4.2 Sniffer 技术的实现

假定攻击者事先知道被攻击主机所在网段的 IP 地址范围,因此黑客可以构造IP 报文,其目的地址为局域网内某台主机的地址(可以随便设定),源地址也可以随意设定,然后向此局域网内发送报文。被攻击主机中的木马程序使用 sniffer 技术监听网络数据报文,并且依据攻击者事先设定的通信协议来辨别和提取黑客的数据报文。

实现时利用了 WinSock 2 的特性,可以不使用驱动程序,因此程序核心部分代码如下。首先打开一个 socket,参数必须是 AF_INET、SOCK_RAW 和 IPP不能设置 SIO_RCVALL 属性:

m_s = socket( AF_INET , SOCK_RAW , IPPROTO_IP ) ;

然后设置该 socket 的超时参数等选项:

int rcvtimeo = 4000 ;

if( setsockopt( m_s,SOL_SOCKET,SO_RCVTIMEO, (const cha

sizeof(rcvtimeo))==SOCKET_ERROR)

{

//错误处理代码

};

再将该 socket 与本机的某个网络接口绑定。

接下来就可以设置 SIO_RCVALL 属性。

if( SOCKET_ERROR != WSAIoctl( m_s, SIO_RCVALL , &dwBuffer

sizeof(dwBufferInLen),&dwBufferLen, sizeof(dwBufferLen), &dwBytesRe

NULL ) )

{

// 错误处理代码

};

……

此后就可以利用这个 socket(m_s)来读取网络上的数据包了。

3 结束语

该文重点研究了木马系统中涉及到的隐蔽通信技术及实现。由于防火墙技术的不断改进和系统对网络协议漏洞的定期修补,木马的通信技术将会变得更为复杂和接近底层。

参考文献:

[1] 朱明,徐蓦,刘春明.木马病毒分析及其检测方法研究[J]计算机工程与应用,2003(28):176-179.

第6篇:icmp协议范文

【关键词】 嵌入式 TCP/IP协议 以太网

一、引言

嵌入式网络通信在各个方面都得到了非常广泛的运用。目前最常见的就是总线和USB数据传输方式,传输速度即使可以达到较快的水平,但是其并不能够满足长距离的数据传输。因此,以太网能够弥补其在数据传输方面的缺陷。以太网能够实现一百米距离点对点的数据传输,如果要实现更加远距离的数据传输,则需要使用路由器或者交换机来完成。此文基于对CP2200嵌入式TCP/IP协议进行探究,并实现以太网嵌入式系统设计。

二、嵌入式TCP/IP协议的探究与实现

TCP/IP协议栈从上到下分别是由应用层、运输层、网络层和网络接口层所组成的四层结构,每一层各司其职,都有着不同的网络协议。依据软件实际使用的情况,在嵌入式系统当中为了达到网络通信的目的,需要对TCP/IP协议族进行裁剪。在对软件进行初始化的时候,也对单片机同时进行了初始化,其中包括对系统时钟、定时器、端口和串口进行了初始化。当然还有CP2200进行初始化,其中包括对MAC层和物理层进行初始化,并且中断使能。

在TCP/IP协议栈当中,运用层包含HTTP协议,运输层包含TCP协议和UDP协议,网络层包含ARP协议、IP协议和ICMP协议。以下是嵌入式TCP/IP协议的每个模块的实现流程:

1、HTTP协议模块。HTTP协议的发送函数http_send()即是TCP协议的发送函数和数据信息的结合,但是http_ send()函数主要是实现设计网页内容,JPEG的图片和HTML(超文本标记语言)等信息的使用依靠其函数实现。

2、TCP协议模块。TCP协议的发送函数tcp_send()是需要发送一个不包含任何数据的TCP报文,其作用是能够对字节头和校验和进行处理。通过对时间功能的设定,TCP协议的重传函数tcp_retransmit()能够实现对数据最多为两次重传的传输功能,实现传输功能的应用程序是依靠传送页数据而实现的,即是HTTP服务程序。TCP协议的保活函数tcp_ inacivity()是没半秒运行一次,当连接正在建立的状态下,保活期满了的时候并且没能被再次使用,就会中断连接。TCP协议的接收函数tcp_rcve()实现对字节头和校验和的运算,进而对HTTP服务程序和其连接状态等情况进行断定,最后进行TCP有限的状态机判断数据包的程序。

3、UDP协议模块。UDP协议的发送函数udp_send()能够实现对字节头和校验和进行处理,其接收函数udp_rcve()是对所接收的UDP报文进行处理,如果没有受到UDP报文数据,就需要发送ICMP终点不可到达报文。

4、ARP协议模块。ARP协议的发送函数arp_send(),在发送请求报文的时候,对于不清楚目的物理地址的,则是广播报文;在发送应答报文的时候,接收的一方的目的物理地址需要添加物理地址。ARP协议的重传函数arp_retransmit()能够实现当其发出ARP请求之后的半秒时间内没有任何响应,则进行再一次发送的功能,但是当两次发送没有得到响应就会对报文进行删除。ARP协议的缓存更新函数age_ arp_cache()能够每一分钟更新一次。ARP的解析函数arp_ resolve()能够对所发送的IP报文目的IP地址进行解析,如果发送IP地址和目的IP地址都不在相同的一个网络当中,那么此IP地址是网关IP地址,然后在缓存表当中对其进行查找,如果找不到就需要发送ARP请求报文。ARP协议的接收函数arp_rcve()能够实现对报文进行接收或者应答,对缓存表需要进行更新和重新定时,如果所接受的报文是应答报文,则需要发送等候地址解析的IP报文,但是所接收到的报文是请求报文 ,则需要发送ARP应答报文。

5、IP协议模块。IP协议的发送函数ip_send9()能够实现对发送IP报文的20字节头和校验和进行处理,进而使用网络接口层进行发送。IP协议接收函数ip_rcve()能够根据版本情况和所接收报文的种类转移到相应的接收函数来处理。

6、ICMP协议模块。ICMP协议模块的接收函数icmp_ rcve()是实现对ping请求的接收进行处理,并且处理ICMP不同种类的报文。其中Ping命令请求信息函数ping_send()是用来检测发送接收两方的接收情况。

三、结言

综上所述,此文对TCP/IP的网络结构中的各层协议模块进行探究,基于网络控制芯片CP2200的以太网接口和单片机C8051F340,并用编程语言来实现嵌入式以太网通信,同时进一步通过对各个层协议的裁剪,实现嵌入式以太网的数据通信。根据现阶段来看,嵌入式网络通信基本上都是依靠TCP/IP协议来实现的,嵌入式设备和网络两者相结合是嵌入式系统今后发展的主要方向。因此,我们要更加深入地对嵌入式TCP/IP协议进行探究以及更深层次的功能实现。

参 考 文 献

第7篇:icmp协议范文

引言

S1C33209是EPSON公司推出的RISC结构的32位高性能CMOS微处理器,具有高速、低功耗、低电压操作、精简指令集等特点,提供乘与累加功能,既可用于办公设备,也特别适用于需要高级数据处理的便携设备,可以进行高速运算、灵活的I/O口控制和高效的数据操作。S1C33209具有8KB的内部RAM,其运算速率可达60MHz,加上优化的多数为单时钟周期的指令集,使S1C33209吞吐量大为提高。S1C33209比常规MCU有更快的运算速度及可靠的性能、可重复编程的结构,使得精简的TCP/IP能够在其中可靠运行。

1 硬件平台结构及设计

信息家电远程访问时,通信数据量不大,10M以太网的通信速率即可满足要求;其次信息家电对实时性的要求不高,可定位在秒级。

在这种情况下,构造了家电网络硬件平台服务器S1C-WebServer,其结构如图1所示。S1C33-WebServer主要由三部分组成,即S1C33209微处理器、RTL8019AS全双工以太网控制器(RealTek公司出品,100脚的TQFP封装,最大速率10Mbps,自带16KB的SRAM,工作在Ethernet II和IEEE802.3、10Base5、10Base2、10BasetT下,全双工,支持8位与16位数据总线,与NE2000兼容)、可擦写Flash(采用Intel的E28F320,容量为4MB)。考虑到Flash的擦写在程序调试中不太方便,所以为S1C33209扩展512KB的SDRAM。在S1C33209中,运行用户程序和S1C33-Stack。在Flash中,存放S1C-WebServer的各种Web资源信息,综可处理Web页面、图像文件等,与PC机上WebServer中的硬盘可以存储大量的不同页面。Flash的容量决定了WebServer的资源文件的大小。RTL9019AS是Ethernet控制器,负责S1C33209与Ethernet的数据传递。在信息家电已具备RS232或相关标准接口的条件下,使用家庭自动化总线HAB(Home Automation Bus)作为S1C33-WebServer与家庭网络协议SHNP(Simple Home Networks Protocol)。家电通过RS232接口与S1C33-WebServer连接,经由EEthernet接入Internet。

经过分析,S1C33209与RTL8019AS读写时序是兼容的,而且MCU的读写时延比RTL8019AS小得多。MCU与RTL8019AS的连接如图2所示。RTL8019AS的工作电压为5V,而S1C33209的工作电压为3.3V,所以RTL8019AS的数据线输出需要电平的转换。选用2个8位(采用16位数据总线)的具有双向数据传输功能的74HC245来完成,由于S1C33209的输出电平符合RTL8019AS输入电平的要求,所以地址线可以直接相连,而不需电平转换,RTL8019AD中断信号(INT0)为高电平有效,在S1C33209中选用端口中断输入的K60端口与之相连。由于S1C33209的中断有效方式(高、低电平或脉冲)可以根据对寄存器的设置调节),所以不用对INT0作反向或电平转换。

2 精简TCP/IP协议栈的实现

构建的S1C33-Stack运行在以S1C33209嵌入式CPU为基础的硬件平台上,是一组可配置的多种Internet协议的组成。这些协议按照分层协议栈的方式组织,包括应用层的HTTP、DHCP、SMTP,传输层的TCP、UDP,网络层的IP/ICMP、ARP,通过链路层和物理层(如Ethernet)进行数据的交互。S1C33-Stack的结构模型如图3所示。S1C33-Stack利用S1C33的高速处理能力处理TCP/IP数据包,避免了在有限容量的RAM中缓存大量数据,使得控制器可以处理比内部RAM总线更多的数据包。利用嵌入的S1C33-Stack,Webserver能通过Hypertext Transfer Protocol(HTTP)与任何浏览器通信,能够提供各种类型的资源,如HTML、图片文件等。这些资源可以使用一种特殊的文件系统URI,被存放在容量为4MB的Flash中。这种文件系统可包含任意多的目录,对URL的长度也没有限制。

考虑到嵌入式系统的可用资源有限,在此采用经过裁减的TCP/IP协议栈—uIP。uIP协议主要包括TCP/IP协议组中的四个基本的协议:ARP、IP、ICMP、TCP。链路层协议,如PPP,则作为设备驱动在uIP底层实现。应用层协议,如HTTP、FTP、SMTP则作为应用程序在uIP上层实现。

(1)地址解析协议ARP

该协议将IP地址映射成以太网MAC地址。在uIP中,ARP的执行依靠维持一张表来完成IP地址和MAC的地址的映射。当有一个IP数据包要发送到以太网上时,从ARP表中查询相应的MAC地址。如果在ARP表中找不到IP地址则送出相应的ARP请求。当目的主机收到ARP请求报文后,发送ARP REPLY报文将请求的MAC地址送出。当收到ARP REPLY后,ARP表被更新。每隔10s,ARP表就被新新一次,旧的ARP表项将被删除。每个ARP表项的生存周期是20min。

(2)网间协议IP

在uIP中,IP层的代码有两个功能:验证到来的IP报文报头的正确性,并且对TCP和ICMP报文实行分流。因为不考虑IP的分片和重组,uIP中IP层的代码非常的精简。

(3)网间报文控制协议ICMP

在uIP中,仅有一种类型的ICMP信息被实现:ICMP ECHO主要用于应用程序ping,检查网络是否连通。在uIP中,ICMP ECHO通常以一种很简单的方式进行处理;将ICMP类型由“ECHO”改为“REPLY”,同时调整ICMP校验,交换发送方和接收方的IP地址。

(4)传送控制协议TCP

为了减少对内存的使用,在uIP中,TCP并不使用滑动窗口来接收和发送数据,到达的TCP报文并不进行缓冲而是立刻交给应用程序处理。但是应用程序本身可以对要发送的程序本身可以对要发送的数据进行缓冲,因为每次连接中通常有若干的TCP报文要发送。uIP网络通信模块结构如图4所示。

网络通信需要要底层RTL8019AS驱动程序的支持,参考RTL8019AS与S1C33209的资料说明文档,编写出针对此系统的RTL8019AS驱动。

uIP并不缓存到达的数据包,当网络上有数据包(在这里专指出太帧)到达网卡时,网卡驱动程序将暂存在网卡缓存中的数据包,一次一个的以DMA形式传送到目标板上的RAM中。这时将会有一段代码将到达目标板RAM中的数据包复制到全局数组uip_

buf[]中,uIP协议栈程序随后对uip_buf[]中的数据进行操作。当上层应用程序或协议栈程序产生了向网络上发送的数据包时,也将数据包放入uip_buf[]。然后调用网卡驱动程序,将uip_buf[]中的数据读到网卡的缓存中,随后发送到网络中。

在此要说明一下协议栈与网卡驱动程序、应用程序之间的同步机制问题。在系统初始化的时候,通过操作系统提供的系统调用vcre_tsk()创建三个任务:任务一(task1),uIP协议栈;任务二(task2),家电监控程序;任务三(idle_task),空闲任务。而网卡驱动程序则作为硬件中断,由“检测到网络上传过来数据包”事件激发。

整个协议栈程序流程图如图5所示。

任务一的优先级最高,任务二次之,任务三的优先级最低。当系统开始运行时,任务一首先进入RUN状态,在任务一中加入系统调用wai_flg(),由于没有网络请求,任务一随后进入WAIT状态。此时任务二进入RUN状态。当网络上有数据包到达,网卡驱动程序作为硬件中断开始执行。在退出中断前,通过系统调用set_flg(),将任务一期望的标志位置位。当中断返回后,由于任务一的等待条件已经满足,任务一的优先级又高于任务二,因此任务一进入RUN状态,即uIP协议开始处理数据。如果网络上一直有数据包到达,则任务一和中断程序不断的切换。当网络任务完成,返回到任务二的断点处继续向下执行。

由于uIP不缓存网络数据,因此在任务一执行的过程中,即uip_buf[]正在作时,将关闭所有中断。这样可以避免数据包被破坏,缺点是实时性差了一些,但是满足本系统要求。

3 操作系统

本系统使用的操作系统是由EPSON公司提供的ROS33V31。ROS33是为S1C33系列MCU提供的一种嵌入式实时操作系统,符合uITRON 3.0标准。使用ROS33可以迅速、有效地开发针对打印机、PDA以及各类控制设备的嵌入式应用程序。

ROS33具有以下特点:

*支持uITRON 3.0标准——符合该标准的S级*最大任务数为255,采用优先级调度机制,支持9种不同的优先级,提供信号灯、邮箱、消息缓冲等多种通信机制:

*内核优先并紧凑——最小可为1.7K;

*响应快——最快调度响应时间为7.8μS(CPU主频为33MHz,下同),最大中断屏蔽时间为4.3μs ;

*高级语言支持——除汇编语言外,还支持基于ANSI标准的C语言编程。

注释:μITRON将系统功能分成四级。R级(必要级)只提供包括实时、多任务OS所需的基本系统调用;S级(标准级)提供所有标准的系统调用;E级(扩展级)包括附加的和扩展的系统功能;C级(CPU依赖级)的系统功能依赖于具体的CPU和系统实现方式。

ROS33基本内核按功能划分为6大部分:

*任务管理——负责系统中任务状态的变迁;

*任务相关的同步管理——通过睡眠/唤醒、挂起/解挂等操作,处理相关任务及任务之间的同步关系;

*同步与通信——通过信号灯、事件、邮箱等通信机制,实现独立任务之间的同步与通信;

*系统管理——对系统环境的管理;

*时钟管理——日历时钟、定时器、定时任务等的管理;

*中断管理——开/关中断。

图6给出了ROS33内核的概念模型。

4 Web服务器及上层应用程序框架

WEB服务器所采用的方式称为uip_connect,比通常在设计中所使用的Socket套接字更适合于嵌入式系统下面即是WEB服务器的大体框架。

#include

void http_listen_init(void){

uip_listen(80);

} //http listen初始化

void listen_init(void){

http_listen_init();

}

void application(void){

if(uip_connected()) //如果当前的连接状态为connected

switch (uip_conn->lport){

case htons(80):

httpd; //如果80 PORT有数据到达,则调用HTTP处理HTML文件的传送

}

}

首先,服务器与客户机建立连接,再通过侦听端口80,判断是否有客户请求到达,若有则将调用应用程序httpd进行相应处理,否则,继续侦听。Httpd是用于处理HTTP请求的应用程序,具体设计在协议栈uIP中有描述。uip.h是协议uIP的一个头文件。

在应用软件上实现简单WEB服务器功能,其主要由两个模块构成:一是用户登陆模块;二是家电监控模块。用户登陆模块需要解决用户的合法性检查,即接收用户输入的用户名和密码,进行校验,合法则进入家单监控页面,非法则发出警告页面。家电监控模块针对各家电的硬件情况,收集信息家电的状态码,并通过网页形式显示。

在两个模块中,有一部分相似的处理,即对输入的数据进行解析。现在定义数组htmlinputs来存放解析后的信息。对表单输入的数据进行解析后,将其name值和value值分别存放在htmlinput_struct.name和htmlinput_struct.value里,便于以后的处理。变量htmlinputcount存放表单里输入变量的个数。定义如下:

struct htmlinput_struct htmlinputs[100];

int htmlinputcount=0;

除此外,定义函数get_inputs()和translate()对输入的数据进行处理。

Int get_inputs();//将从表单输入的数据分别装到对应的name/value数据队中

Void translate(char*sourcestr);//解读编码URL字符

具体程序代码在此就不再多述。

整个上层应用程序的流程图如图7所示。

第8篇:icmp协议范文

【关键词】拓扑发现;SNMP;地址转发表;端口信息表

0.引言

随着网络规模的不断增大,网络设备逐渐多样化,其结构也呈现了复杂化的趋势,要实现对网络的有效管理,其前提是要了解网络的状态,通常网络管理系统首先要实现网络的拓扑发现,在正确、完整的网络拓扑基础上可以通过SNMP(简单网络管理协议)等网络管理协议实现对网络的有效管理,因此研究网络拓扑发现对于计算机网络的有效管理具有重要作用。

当前的网络拓扑发现主要集中在两个层次上,即网络层的拓扑发现以及数据链路层的拓扑发现。网络层拓扑发现相对比较成熟,发现过程中一般不会出现设备和链路的遗漏,基于SNMP协议的MIB-2信息库查询是其主要方法,文献[1,2]中采用该方法,这也是当前商业网络管理软件所广泛采用的一种方法;数据链路层的拓扑发现机制主要用来发现网桥类设备,当前主要是用来发现交换机在网络上的拓扑状况,文献[3,4,5]提出了基于地址转发表(AFT)的数据链路层拓扑发现算法,但算法要求所有交换机的地址转发表是完整的,如果地址转发表不完整将会出现拓扑部分链路遗漏的情况。

1.网络层拓扑发现方法

根据网络结构的不同,网络拓扑发现方法也有所区别,当前商业网络管理软件广泛采用的拓扑发现机制是利用ICMP配合SNMP协议的综合网络拓扑发现方法,ICMP协议可以发现网络中存在的设备,SNMP协议可以通过MIB-2功能组读取的方法获得网络中相关节点的重要控制信息,比如路由表,进而完成网络拓扑发现的功能。以下对拓扑发现领域的常见方法进行总结。

1.1 ICMP协议发现设备

ICMP协议的设备发现类似Ping命令完成的功能,ICMP协议通过发送请求报文ICMP_ECHO和应答报文ICMP_ECHOREPLY可以达到判断目标主机连接是否正常的目的。请求和应答报文是相互配合工作的。当源主机向目标主机发送了ICMP_ECHO数据包后,它等候目标主机的应答,目标主机在收到一个ICMP_ECHO数据包后,将交换源主机IP地址和目的主机IP地址后将收到的ICMP_ECHO数据包中的数据部分原封不动地封装在自己的ICMP_ECHOREPLY数据包中,然后将该数据包反馈给发送ICMP_ECHO数据报的主机。接收方收到ICMP_ECHOREPLY数据包后进行校验,如果校验正确,发送主机认为目标主机连通正常,很显然ICMP是设备发现的一种高效方法?

1.2 SNMP协议发现设备间的连接关系

在大部分商业软件中都通过SNMP协议进行拓扑的发现,比如SNMPc管理站软件、HP OpenView等软件。在SNMP管理架构下,每一个被管理设备都关联一个MIB-2数据库,其存储着的网络对象信息,管理站是通过对MIB-2库中相关对象的读取和写入来实现有效的网络监视和网络控制功能。要实现拓扑发现,可以通过读取MIB-2中记录拓扑信息的相关对象(比如路由表、接口表、地址表等)构建网络拓扑结构,不但能发现设备的存在状态,还能发现网络层以上设备的互联关系。

1.3 ARP协议发现局域网内部设备

ARP协议能够在局域网中对IP地址和物理地址进行解析,依靠的是计算机维护的一张ARP表,记录了IP地址和物理地址的对应关系。因为ARP表中记录的都是最近活动的主机IP地址和物理地址的对应关系,因此,能够及时发现局域网的设备情况。但该发现设备的方法依赖局域网内部的ARP表,所以应用范围有限,一般仅仅作为网络拓扑发现局域网的一个辅助方法使用。

2.数据链路层的拓扑发现方法

定理1:如果:SA(s1,i1)USA(s2,i2)=SaII并且SA(s1,i1)∩SA(s2,i2)=?,则 IF(s1,i1)和IF(s2,i2)中间是直接相连接的关系。

在定理1中,交换机s的第i号端口为IF(s,i);交换机s的地址转发表中通过其i号端口IF(s,i)数据帧的源物理地址的集合表示为SA(s1,i1);子网中所有交换机的集合为SaII。

证明:这里使用反证法,假如,IF(s1,i1)和IF(s2,i2)中间不是直接相连接的关系,则在IF(s1,i1)和IF(s2,i2)之间必然还存在其它设备m,假设该设备的物理地址为Am,根据地址转发表的生成规则可知:Am∈SA(s1,i1)并且Am∈SA(s2,i2),很显然此时:SA(s1,i1)∩SA(s2,i2)=Am,这与SA(s1,i1)∩SA(s2,i2)=?矛盾,因此可以判断定理一成立。

定理2:如果路由器r和交换机s之间直接互相连接,当且仅当其互联端口IF(s,i)没有出现其它交换机的物理地址并且SA(s,i)中包含路由器r的物理地址。

证明:首先进行充分性证明,如果路由器r和交换机s之间直接互相连接,则路由器r的物理地址必然出现在SA(s,i),另外,因为路由器将子网阻隔,其它的交换机的物理地址不可能经过互联端口IF(s,i),得证。

然后进行必要性证明,SA(s,i)中包含路由器r的物理地址说明路由器r位于端口IF(s,i)的子网中,但IF(s,i)端口所连接的子网中未出现其它交换机物理地址,因此路由器r和端口IF(s,i)直接互联,得证。

要根据定理1和定理2判断数据链路层的链接关系首先必须获得交换机的地址端口表,也就是说,要对以太网中端口的物理地址进行统计,这可以通过交换机的地址转发表获取相关信息,并进一步得到网络数据链路层的拓扑状况。交换机MIB对应的标准是Bridge-MIB。在Bridge-MIB中定义了dot1dTpFdbAddress(OID:1.3.6.1.2.1.17.4.3.1.1)来存放地址交换机的地址转发表,其对应的端口存放在端口信息表dot1dTpFdbPort(OID:1.3.6.1.2.1.17.4.3.1.2)上。通过查询dot1dTpFdbAddress和dot1dTpFdbPort便可以找到发现交换机MAC的端口。

3.总结

要对计算机网络实现有效管理,首先必须知道网络的拓扑情况,要发现网络的拓扑可以从网络层协议发现,也可以从数据链路层发现,网络层能够有效的发现网络的逻辑拓扑,但不能发现数据链路层设备的链接关系,文中所采用的网络拓扑发现方法综合了网络层和数据链路层的拓扑发现方法,能够发现常见的三种拓扑关系:其一,网络中路由器之间的链路关系;其二,网络中路由器和交换机的连接关系;其三,网络中交换机和交换机的链接关系。这三种关系基本包含了当前常见网络的设备互联关系。

【参考文献】

[1]邓泽林,张立芳,刘翌南,等.基于SNMP协议的网络拓扑发现算法[J].长沙理工大学学报:自然科学版,2007,4(4):68-72.

[2]杨安义,朱华清,王继龙.一种改进的基于 SNMP 的网络拓扑发现算法及实现[J].计算机应用,2009,27(10):2412-2419.

[3]郑海,张国清.物理网络拓扑发现算法的研究[J]. 计算机研究与发展,2002,39(3):264-268.

第9篇:icmp协议范文

关键词:拒绝服务攻击;信息窃取;数据破坏 ; 修改系统配置;

在实现恶意代码的过程中,主要涉及到攻击渗透技术、自动升级技术、随机启动技术、隐藏技术、远程控制技术、破坏技术等六大技术体系。实际存在的恶意代码总是这几个方面的组合。经典的蠕虫主要涉及攻击渗透技术、自动升级技术、随机启动技术和破坏技术;经典的木马主意涉及随机启动技术、远程控制技术、隐藏技术和破坏技术。经典的 botnet 控制器主要涉及网络攻击渗透技术、自动升级技术、随机启动技术、远程控制技术和破坏技术,经典的病毒主要涉及攻击渗透技术、隐蔽技术和破坏技术等。

这些技术,在各类恶意代码中,破坏技术肯定会出现;而远程控制技术在网络中的恶意代码也会出现,故对这两类技术进行详细简述。

一、破坏技术

破坏技术是指一切试图跨越系统安全边界危害受害主机的可用性、可靠性、数据完整性、或者消耗受害主机的系统资源以及利用受害主机危害他人的所有行为。归纳起来,主要包括拒绝服务攻击、信息窃取、数据破坏、修改系统配置等四个方面。

(一)拒绝服务攻击

拒绝服务攻击的目的是使攻击对象超过它的服务负荷或停止服务,受攻击的目标经常包括 WEB 服务器和文件服务器等。拒绝服务攻击的唯一目的是使特定服务在一段时间内不可用,并不对服务系统造成其他程度的破坏。如果攻击者利用多个受害对象同时对目标发起拒绝服务攻击就形成了所谓的分布式拒绝服务 (DDoS),这种攻击的影响很可能会大于使用单个攻击计算机造成的影响。常见的拒绝服务攻击方式包括 syn flood、dear drop 等。

(二)信息获取

恶意代码在植入到受害主机系统后,可以搜集受害主机和受害主机所在网络的信息,并把收集到的信息通过前面提到的远处控制技术回传给控制者。最常用的信息搜集手段有网络侦听、网络拓扑探测、键盘记录、桌面截取、文件查找、系统配置、用户名探测等。

(三)修改系统配置

修改系统配置的目的主要是留下后门或者隐蔽恶意代码的网络通讯特征。现在的网络用户大部分都安装了个人防火墙系统,这些个人防火墙可能会发现或者阻止恶意代码的网络通讯,恶意代码为了保证自己的通讯正确进行,可能会修改防火墙的规则设置,或者直接中止防火墙的运行。很多恶意代码通过 IE控制本地主机,或者通过 IE 进行网络通讯,IE 本身具有安全级别限制,不同的安全级别设置可能会影响到恶意代码的功能的完成,恶意代码为了保证控制通道的畅通,可能会修改 IE 的安全设置。远程控制者习惯于通过 TELNET 或者 3389 端口进行远程网络管理,而本地计算机可能没有开启这两个服务,恶意代码可以通过一定的方式开启本地的网络服务,为下一步进行网络控制做准备。

另外,恶意代码为了控制本地计算机,可能会在受害主机上添加新的用户甚至是不可见用户,通过新添加的用户控制网络。恶意代码也有可能修改系统安全审计规则,逃避系统安全检查达到隐蔽自身的目的。

二、远程控制技术

恶意代码远程控制的实质就是在恶意代码控制的主机和控制端之间传送控制命令和命令执行结果。远程控制技术的任务是负责在恶意代码的服务端和客户端之间建立起一条数交换的通道,从而使得控制端可以向服务端发送指令,操纵服务端完成某些特定的工作。实现远程控制技术需要一定的条件,也就是要求控制主机和被控主机之间存在一条实际的物理通讯通路,这个要求比较高。

远程控制技术总是通过客户服务器模式来实现的,一个控制系统可以分成两个部分:一部分是客户端程序(Client),另一部分是服务器端程序(Server)。这里的服务端和客户端是一个逻辑概念,并非 socket 定义的服务端和客户端,服务端是按照一定的请求提供服务的部分,客户端是发送请求,接收服务返回结果的部分。服务端总是安装在受害主机上,它接收客户端传送来的命令,执行完命令后把执行结果回传给客户端。远程控制技术包括以下几种方式:

(一)直接使用套接字(socket)进行通讯控制socket 通讯是建立在 TCP 协议基础上,通讯的可靠性可以得到保证,Windows 操作系统提供了完善的 socket 通讯支持,只需要简单的几个操作就可以建立网络连接并收发数据。因此,直接使用套接字(socket)进行通讯控制的方法也是最早、最广泛使用的通讯控制方案。

使用 socket 通讯具有两种方式,一种方式是服务端侦听客户端连接,另一种方式是客户端侦听,服务端连接。第一种方式和 socket 本身的概念相吻合,也最早被恶意代码使用,比如木马“冰河”就是使用的这种技术,但是,这种远程控制方案有很多缺点。首先,受害者使用像 FPort,TcpView 这样的工具可以很容易的发现在某一端口上侦听的进程,以及进程对应的可执行文件。

(二)用协议隧道技术通讯

构建在 IP 协议基础上的除了 TCP、UDP 外还有 ICMP 协议,由于 ICMP协议具有一些特别的功能,所有的防火墙都必须允许部分 ICMP 协议通过网络传输,恶意代码完全可以在 ICMP 基础上建立一个自己的可靠数据报通讯协议,甚至可以建立一个 TCP over ICMP。除了 ICMP 隧道外,恶意代码还可以使用HTML 隧道技术,也就是通过 HTTP 协议传送命令和执行结果。使用协议隧道的通讯控制技术的好处是可以穿透大部分防火墙,并且在服务端没有全局 IP 的情况下很容易找到,因为只要上网的计算机,都会使用浏览器来访问 WEB站点获取信息。如果没有全局 IP 必然会使用 HTTP 来访问网络,恶意代码可以直接获取 WEB 浏览器的 HTTP 作为自己的服务器,穿透防火墙。

三、总结

本文深入分析恶意代码的远程控制技术及破坏技术几种方式,只有采取极具针对性的防范策略,才能为我们构建一个安全、实用的远程控制服务器。

参考文献: