icmp协议十篇

时间:2023-04-07 23:38:15

icmp协议

icmp协议篇1

ICMP是(InternetControlMessageProtocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

(来源:文章屋网 http://www.wzu.com)

icmp协议篇2

关键词:配置 瑞星个人防火墙 安全策略

瑞星个人防火墙能保护网络安全,免受黑客攻击。采用增强型指纹技术,能有效的监控网络连接。采用内置细化的规则设置,使网络保护更加智能。合理配置瑞星个人防火墙的安全策略,通过过滤不安全的网络访问服务,彻底阻挡黑客攻击、木马程序等网络危险,保护上网帐号、密码等信息不被窃取,从而保证了用户电脑的上网安全。以下部分从首页状态、网络安全设置策略、网络防护设置、IP规则设置等方面,对如何配置好瑞星个人防火墙的安全策略,作了研究和探讨。

1 首页状态

首页状态显示防火墙实施防护状态,可以实时监控查看当日拦截的钓鱼、挂马网站以及拦截的网络攻击情况,包括攻击次数,拦截次数等数据。还可以选择安全级别和工作模式,安全级别越高,网络防火墙对用户计算机的防护性能越好,防护级别也就越高,更能有效的保护用户计算机的私人信息和数据。同时,在流量图中还可以显示出接收和发送的数据速度、活动程序以及攻击信息,用户通过流通数据的大小可以发现是否存在异常数据上传下载,从活动程序中也可以很轻松的发现是否存在异常的程序在运行,从而及时的保护用户计算机的数据安全,提高用户警惕性。如图1所示。

2 网络安全设置策略

该策略用于用于开启实时监控功能。网络安全设置中包括应用程序网络访问监控、IP规则设置、网络攻击拦截、恶意网址拦截、ARP欺骗防御以及对外攻击拦截和网络数据保护。在网络监控列表中可以对以上功能进行设置,开启后可以有效地防护用户计算机。如图2所示。

3 网络防护设置

网络防护中有一项程序网络控制,在程序联网规则中可以对应用程序进行网络访问权限设置,有允许,拒绝和自定义三种选择,如用户不需要某种程序对网络有访问权限,可设置成拒绝即可,也可以自己添加一些应用程序,想要对某些应用程序放开网络访问权限的话,在状态栏里设置成允许就可以了。当然,用户自己也可以自定义一些自己想要的设置。如图3所示。

网络攻击拦截中有很多网络攻击类型的选项,一般默认情况下都是选择的,用户可以不用进行设置。

恶意网址拦截一项是对一些带有恶意木马,病毒的网站进行拦截,用户如需要对一些网站进行拦截的话,只需要把该网址添加到黑名单里即可。当然也可以设置一些白名单,就是不用拦截的网址可以添加进去。同时还可以添加保护程序,如“c:\program files\internet explorer\iexplore.exe”。

ARP欺骗防御系统,一般建议在局域网里需要开启保护,可以有效的防止其他用户客户端进行恶意的ARP攻击。

4 IP规则设置

该设置用于设置各项例外规则。在IP规则设置中,包含了很多设置项,包括域名解析,各种协议等,进行正确的设置可以保障用户终端计算机的网络安全和数据安全。如图4所示。

例如,ICMP协议是一种面向无连接的协议,用于传输出错报告控制消息,它是一个非常重要的协议,对于网络安全具有极其重要的意义。它是Internet控制报文协议,它是TCP/IP协议族里的一个子协议,用于在IP主机和路由器之间传递控制信息。所谓控制消息是指,网络通不通、主机是否可达、路由是否可用等本身的消息。

ICMP协议本身的特点决定了它非常容易被用于网络上的路由器和主机。例如,在1999年8月海信集团悬赏50万人民币测试防火墙的过程中,其防火墙遭受到的ICMP攻击达334050次之多,占整个攻击总数90%以上!可见ICMP协议的重要性不容忽视。所以正确的配置防火墙的策略是非常重要的。那么,我们应该如何设置ICMP协议呢?怎样才能让自己的计算机遭受到最少的攻击和伤害呢?下面讲述几种常见的方法以供参考。

第一种,在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽限制在一定的范围内,这样就保证的即使有ICMP攻击,它所占用的带宽也是非常有限的,不会对整个网络造成重大的影响。

第二种方法是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。

当然,如果你想选择放行ICMP数据包的话也是可以的,但要进行一些其他的设置才能有效的防止ICMP的攻击。如你可以在防火墙里设置“防御ICMP攻击”和“防止别人用ping探测”就可以了。建议广大计算机用户设置成默认强制拒绝所有ICMP数据包,除了出站的ICMP Echo Repuest、出站的ICMP Source Quench、进站的TTL Exceeded和进站的ICMP Destination Unreachble之外,所有的ICMP类型都应该被阻止。

5 端口设置

计算机用户可以在端口设置项中设置自己的端口需求,需要哪些端口就可以放开哪些端口,不需要的可以进行禁止操作。这样即可以方便自己需要的端口访问,有可以关闭不必要的端口,可以很好的防止网络攻击者利用多余的端口号对用户计算机进行攻击。用户可以从本地和远程两个方面进行设置。如图5所示。

根据提供服务类型的不同,端口分为两种。一种是TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式,一种是发送信息后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议。一种是发送以后就不管了,不去确认信息是否送达,这种方式大多采用UDP协议。所以对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。

如果攻击者使用软件扫描目标计算机,得到目标计算机打开的端口,也就了解了目标计算机提供了哪些服务,而提供服务就可能有服务软件的漏洞。如果计算机的端口打开太多,而管理者不知道的话,那么有两种情况:一种是提供了服务而管理者没有注意,比如安装IIS的时候,软件就会自动增加很多服务,而管理员可能没有注意到。一种是服务器被攻击者安装木马,通过特殊的端口进行通信。这两种情况都很危险,说到底,就是管理员不了解服务器提供的服务,减少了安全系数。

因此,一定要正确的设置端口的开放,避免攻击者对计算机信息进行非法窃取。建议一般在局域网内部时,可以在防火墙上把所有的端口都默认关闭,然后在IP白名单里把需要访问的目标计算机的IP地址添加进去,这样就能有效的保证了需要的端口打开,而不需要的多余端口都关闭,很好的阻止了非法份子的入侵。

icmp协议篇3

关键词 网络连通性检测 ICMP PING

中图分类号:TN915.06 文献标识码:A

0引言

“PING” 这个命令是检查网络运行情况最简单实用的方法,但一般情况下,需要在命令行手动执行并在命令后跟上对侧设备的IP地址。其实,我们只要巧妙利用“PING”这个命令,就可以设计一个软件,能每分钟替您“PING”一遍您的设备,并自动将结果告知您。如果您的企业有短信平台,那您就只需要拿出手机看一下短信就能回答这个问题了。

网络连通性自动告警软件,或者我们可以称为“自动PING软件”,能让您在老板或用户打电话责怪您网络不通之时,自信地报告已经发现故障并正在做相应处理;也许在用户使用网络前您就提前解决了,那就减少您接到类似烦人的电话的次数。这个软件还能帮助您在受到网络攻击后(希望永远不要发生),向网警提交攻击的发生时间,持续时间和整个攻击过程网络掉包数据等,或者在您编写年度技术总结时,为您提供分析设备运行率、网络异常事件次数等统计数据。

1 功能需求及设计要点制

1.1 自动“PING”功能技术要点

软件最重要的功能就是能够自动的“PING”设备,我们可以使用一个批处理文件来实现自动“PING”,但获取返回的数据是很头疼的一件事,但我们从更底层的角度来考虑,分析一下“PING”这个命令是如何实现的,就可以通过直接调用ICMP协议来解决问题。

ICMP协议是一种面向连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。

ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。

我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其它的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。编程实现上通过微软已经提供了开放性的接口――ICMP.DLL动态链接库实现。

1.2 设计实现的功能

芴峁觳馍璞傅淖远ㄒ褰缑妫煞奖闾砑印⑸境⑿薷男杞凶远馐缘纳璞浮?

芗觳饴盅奔淇勺远ㄒ?秒级、分钟级)。

芴峁觳饫肥菪慈牍叵敌褪菘獗4婀δ堋?

芴峁┒绦鸥婢δ埽⒖杀嗉邮杖嗽焙褪只怕搿?

茉诮缑嫔鲜凳毕允驹谙呱璞负屠胂呱璞竿臣菩畔?

芴峁┒绦牌帘喂δ埽谏璞肝ぁ⒌魇允笨墒侄衅帘巍?

1.3 开发环境

懿僮飨低常icrosoft Windows XP

鼙喑逃镅裕icrosoft Visual Basic 6.0

苁菘饫嘈停icrosoft sqlserver 2000

2 软件的流程与结构

2.1 软件流程

(1)读取数据库,设备参数表,获取检测设备IP地址清单和检测结果表中上次测试结果。

(2)通过核心模块FUNCTION PING,调用系统icmp.dll动态链接库,顺序进行PING测试并获取返回结果。

(3)通过比较返回结果与上次存储的结果,如一致则流程结束。不一致则继续进行下一步4。

(4)将测试结果写入数据库,并调用短信告警功能。

2.2软件运行界面

界面中,参数设置按钮可进行设备添加、删除、修改和轮询时间定义,如图: (下转第134页)(上接第131页)

3短信告警功能联动及代码设计

本软件根据天生桥水力发电总厂短信平台实际情况,采用数据库触发器实现告警短信实时写入短信平台待发短信表中,告警短信接口通过SQL结构化代码如下:

declare @votetime datetime

declare @content nvarchar (4000)

declare @phone nvarchar (20)

declare @devid int

declare @message nvarchar(100)

declare @mess_time datetime

declare @mess_type int

select @devid=dev_id,@message=message,@mess_time=mess_time,@mess_type=mess_type from inserted

select @content=devname from monitor_dev where devid=@devid

set @content='网络监视系统告警:'+@content+'在'+CONVERT(varchar, @mess_time, 120 )

if @mess_type=0 set @content=@content+'通讯恢复'

if @mess_type=1 set @content=@content+'发生通讯中断'

set @votetime=@mess_time

insert into sms.dbo.smscontent (smscontent,votetime,sendman) values (@content,@votetime,'PING')

select @contentid=contentid from sms.dbo.smscontent where smscontent=@content and votetime=@votetime and sendman='PING'

insert into sms.dbo.smssend (phonenumber,contentid,sendtype) VALUES ('139xxxxxx',@contentid,0)

insert into sms.dbo.smssend (phonenumber,contentid,sendtype) VALUES ('151xxxxxxx',@contentid,0)。

4结束语

icmp协议篇4

[论文摘要]主要论述网管系统中一个重要的功能网络拓扑的自动发现。阐述相关的理论知识,并具体讨论基于SNMP和基于ICMP的拓扑发现,最后对算法所适用范围加以说明。虽然这种方法能够较好的发现网络拓扑,但是它需要占用大量的带宽资源。

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

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

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

主拓扑指的是反映出关键设备包括路由器,它们的接口和子网的连接关系,即路由器一路由器、路由器一子网、接口的关系。这些信息需要对网络进行搜索而获得:一般只需要对连接设备进行遍历就可以得到主拓扑结构。当前的网管软件都是通过对网络设备的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地址的子网地址,并确定各个子网的网络类型。把查到的各个子网加入地址表中。

icmp协议篇5

关键词:拓扑发现;ICMP;SNMP

中图分类号:TP393.02 文献标识码:A文章编号:1007-9599 (2011) 20-0000-01

Network Topology Auto-discovery System Design and Implementation

Tan Jian

(Guilin University of Electronic Science and Technology Hechi College,Yizhou546300,China)

Abstract:The design is based on SNMP and other protocols of the network topology discovery algorithm,three switches and routers as gateways rapid discovery of network topology,as much as possible to find a complete network,and network overhead of the extra load and as much as possible small.

Keywords:Topology discovery;ICMP;SNMP

一、系统功能模块

从功能上看,网络拓扑自动发现系统由4个模块构成:一)主干网拓扑发现模块主要功能为获取主干网中路由器、子网之间的连接信息,将路由器地址放入路由队列,将子网地址放入子网队列,将连接信息放入连接队列;二)子网拓扑发现模块主要功能是获取所有的子网内的所有主机地址、掩码和子网地址;三)主干网拓扑生成模块主要功能是在主干网拓扑并获得了已装有了所有路由器地址的路由队列、装有所有子网地址的子网队列和装有连接信息的连接队列后,将信息进一步进行处理,使网络设备及其连接关系以图像的形式展示在屏幕上;四)子网拓扑生成模块的功能是在获得了已装有了所有路由器地址的路由队列、装有所有连接信息的连接队列和装有所有主机地址的主机队列后,将信息进一步处理,将指定子网内的主机及其连接关系以图像的形式展示在屏幕上。

二、研究解决途径

本算法采用异步的方式发送和接收ICMP回应应答包,提高了算法的性能和效率。图4.19表示了SNMP和ICMP的层次位置关系。

图1:网络管理的层次结构

三、网络拓扑自动发现算法

(一)子网与路由器发现算法描述

1.与网管所在子网直连的路由器检测算法。确定主机地址。以子网地址+1为第一个主机地址,依次加1,增加N台机器为止,这样得到了N个主机地址IP。

检查该IP是否在子网内。若IP&MASK=Net,在子网中该地址可能是子网中一台主机的地址。

回应的ICMP包如果包含在输入的IP中,该IP地址是一台活动的主机。

对于已检测出来的主机,用异步方式向每台主机的161号端口发送SNMP报文,如果有回应则表示该主机运行了SNMP。

对于已经检测出的SNMP主机,检查其MIB值sysServices,这是一个整型变量,假设其值为m。设L是ISO七层模型中的某一层,如果该主机在第i层提供了服务,则Li被赋予相应的层数(Li取值范围为1,2,3,4,7)

i=1为物理层,如中继器;i=2为链路层;i=3为网络层,如路由器;i=4为传输层,如主机;i=7为应用层,如应用程序。由于路由器提供链路层和网络层,因此m=2(2-1)+2(3-1)=6。如果某台SNMP主机的值为6,则它是要找的路由器。

2.子网和路由器的连接检测算法。通过SNMP GetNext操作获取路由表,表中有两项极为重要的MIB变量ipRouteType和ipRouteDest,它们分别表示路由类型和所要到达的目的网络地址,如果ipRouteType的值为3,则表示目的网络与路由器直接相连。因而只需找出对应的ipRouteType的值为3的目的网络地址即可。同时可利用ipAdEnt If Index作为索引,与In2terface组的If Index和If Type相结合来确定子网的网络拓扑类型。

(二)主机发现算法描述

本算法中用到两种报文:回应(echo)请求或回应应答;信宿机发回响应的回应应答。下图所示的“标识符”和“序号”用于匹配请求与应答。

算法如下:

把子网内所有主机加入链表,设置一次发送和接收间的最大延迟、链表循环次数最大值和检查接收栈的时间。遍历链表,链表空则转至a。若检查接收栈的时间到,则转至d。依次检查节点;若此时时间与发包时间差值大于延迟便转c,不然检查下一节点。若循环次数超过最大值,从链表中删除,加入不可到达主机链表。不然发送ICMP包,设置当前时间为发包时间,循环计数加1。检查接收栈是否为空,若空就返回b。否则检查回应包,从链表中删除相应节点,加入可达主机链表。

四、算法的实现

(一)ICMP包的发送和接收。(1)构造ICMP包,填充ICMP包头中某些域,如序号、标识等;(2)用SOCK-RAW类型创建套接字,调用函数为socket();(3)采取异步方式,用WSAAsyncSelect()函数注册FD-READ事件;(4)分别用sentto()和recvfrom()发送和接收ICMP包,在接收到ICMP包时还要进行检验和匹配操作。

(二)用SNMP++技术实现SNMP编程。SNMP++把复杂的WinSNMP的APl函数封装成一个个相关的C++类,从而大大简化了SNMP网络管理软件开发的复杂性。它把SNMP编程中的核心部分都面向对象化封装起来,因此程序员无需了解SNMP底层的机制,只需了解SNMP编程的流程即可快速开发出高效的SNMP程序。

参考文献:

[1]胡谷雨,张巍等.简单网络管理协议教程[M].电子工业出版社,2000

icmp协议篇6

关键词:DHCP、IP地址分配冲突

1 DHCP简单回顾

1.1 什么是DHCP

DHCP (Dynamic Host Configuration Protocol)是一种动态的向终端提供IP地址、网关、DNS等配置参数的协议。DHCP协议由BOOTP(Bootstrap Protocol)协议发展而来,旨在降低大规模网络中人为配置工作量大、容易出现地址冲突等问题。达到简化IP地址配置,实现IP地址集中管理的目的。DHCP基于UDP协议,Client端口号是68,DHCP Server端口号是67。

1.2 IP地址的分配顺序

DHCP Server向Client分配IP地址的先后顺序如下:1、分配管理员配置了与Client mac地址静态绑定的IP地址;2、分配Client曾经使用过的IP地址;3在地址池中顺序查找可供分配的IP地址,找到之后分配给Client。

无论是管理员手工分配IP地址,还是通过DHCP自动分配,非常重要的一个原则就是不能出现地址分配冲突的情况。本文接下来详细介绍DHCP Server与Client之间是如何避免IP地址分配冲突的。关于DHCP协议的其他内容,可参考相关资料。

2 IP地址分配冲突避免

2.1 IP地址申请及分配案例

下面通过一个实验给出DHCP协议在动态分配IP地址时是如何保证不出现地址冲突的。

2.1.1 试验拓扑

试验拓扑如上图所示,R1、R2、R3共处于一个广播网络中,其中R1作为DHCP Server,R2配置静态IP地址100.1.1.2,R3为Client,通过DHCP动态获取IP地址。下面通过详细分析DHCP Server与Client之间是如何保证分配出去的地址不产生冲突的,试验不考虑静态IP地址绑定的场景。

2.1.2 DHCP Server的实现

按照协议规定,Client在申请IP地址时,会在它的本地物理子网上广播一个DHCPDISCOVER报文,用以寻找一个可用的DHCP Server。DHCP Server会通过DHCPOFFER报文回应Client,并携带一个可用的IP地址。

在发送DHCPOFFER报文之前,DHCP Server有义务保证这个IP地址没有被网络上其他的设备占用,从而出现IP地址冲突。DHCP Server会向该IP地址发送ICMP echo request报文来检验该IP是否被占用(即发起一个ping的过程)。如果被占用,按照前文提及的IP地址分配顺序重新分配,并且再次重复IP地址冲突检测。

DHCP Server(R1:100.1.1.1)在发送DHCPOFFER报文之前,先向100.1.1.2发送了ICMP echo request报文,因为这个地址已经被配置在R2上了,因此R2向DHCP Server回复了ICMP Echo reply报文。之后DHCP Server继续向100.1.1.3发送ICMP echo request,连续两个ICMP echo request报文未收到对端回复,其认为这个地址没有被占用,于是通过DHCPOFFER向Client(R3)提供100.1.1.3供其选择使用。

2.1.3 Client的实现

现实网络往往比试验环境复杂很多,在上一个过程中,如果R2配置了ACL,禁止ICMP echo request访问,则不会响应DHCP Server的ping请求。这样DHCP Server就无法判断100.1.1.2是否在网络中被占用。那么按照协议流程,DHCP Server会在DHCPOFFER报文中向Client提供100.1.1.2供其选择。

在DHCP Server发送DHCPOFFER之后,Client会广播一个REQUEST报文,通知它选中的Server,并在报文中携带上DHCP Server为其提供的IP地址。而DHCP Server会以DHCPACK报文作为对Client发送的REQUEST的确认,以完成本次IP地址申请及分配的交互。然而在这个过程中,因为DHCP Server没有检查出100.1.1.2这个地址已经被网络中的R2占用,如果Client最终选择使用100.1.1.2这个IP地址,就会同R2出现地址冲突,这显然是无法满足需求的。

实际在最后的确认阶段,当Client收到DHCP Server发送的DHCPACK报文之后,并不会马上使用Server分配的这个地址,而是会发送目的地址为Server分配地址的ARP请求报文作最后的确认(即免费ARP)。如果没有检测到冲突,则将此地址与自己绑定。如果检测到冲突,就向DHCP Server发送DHCPDECLINE报文,在Request IP Address(option 50)字段填入Server提供的发生冲突的IP地址。发送完成后,等待一段时间再开始重新申请IP地址,直至申请到一个可用的IP地址。

icmp协议篇7

嵌入式Web服务器(Embedded Web Server,EWS)是指将Web服务器嵌入到现场测试和控制设备中,在相应的硬件平台和软件系统的支持下,使传统的测试和控制设备转变为具备了以TCP/IP为底层通信协议,Web技术为核心的基于互联网的网络测试和控制设备。嵌入式Web服务器简化了传统服务器的系统结构,在嵌入式设备上它同时实现信息传输和网络接口的功能。嵌入式Web服务器基于HTTP协议运作,有标准的接口形式和通信协议。它可以向任何接入它所在网络的合法用户提供统一的基于浏览器方式的操作和控制界面。Web技术的开放性和平台独立特性能够降低开发难度,减少软件系统和通信系统的设计维护工作量,提高了现场测试和控制设备的管理水平。

二、嵌入式WEB服务器总体设计方案

接入Internet有很多种接入方式:电话拨号接入、ISDN, ADSL、以太网接入等,其中以太网作为一种廉价、高效的Internet接入方式,已经得到了非常广泛的应用,本文的Internet接入采用以太网方式。

将TCP/IP协议栈嵌入到单片机中,使用网络控制芯片实现单片机的上网和数据传输。利用网络单片机(嵌入了TCP/IP协议栈的单片机)可以实现很多功能,嵌入式Web服务器就是其中的一种。通过Web服务器,客户端浏览器可以浏览这些设备的动态信息,并且还可以实现与系统的交互功能。

(一)嵌入式Web服务器的一般结构

嵌入式Web服务器的设计通常以通用Web服务器系统结构为蓝本,根据嵌入式系统的特性进行优化。嵌入式Web服务器的硬件系统包含了Web通信功能的微处理器或者微控制器系统,它可以和前端的应用系统直接集成在一起,也可以通过现场总线与应用系统相连。

一个完整的硬件系统由微型处理器、FLASH存储器、DRAM存储器、网络接口和前端应用系统硬件所组成。微型处理器负责全局的运行和管理,FLASH存储器用来存储实时操作系统的系统内核、TCP/IP协议栈、各种Web文档;DRAM存储器在系统运行时使用;网络接口实现与Internet的连接;前端应用系统的硬件完成传统意义上的应用功能。

由于嵌入式系统硬件资源有限,嵌入式Web服务器的硬件结构不能很复杂,实时操作系统的系统内核、TCP/IP协议栈、各种Web文档都必须存储在FLASH中,这对软件系统设计提出了较高的要求。嵌入式Web服务器应用系统的硬件结构如图1所示:

网络接口

微处理器

SDRAM

FLASH

前端应用系统硬件

图1嵌入式W比服务器应用系统的硬件结构

(二)系统的硬件设计方案

LPC2132微控制器是所设计的嵌入式Web服务器的核心,一方面LPC2132微控制器内部要实现TCP/IP协议栈,并驱动网络接口控制器ENC28J60,经耦合隔离变压器H1102和以太网以实现Internet接入;另一方面,LPC2132微控制器又是相应控制系统的控制单元。

由于以太网的广泛使用,本文选择了最为常用的Internet接入方式,即通过以太网接入Internet。由美国Microchip公司生产的以太网控制芯片ENC28J60是本设计所选择的网络接口控制器,它集成了介质访问控制子层和物理层的功能,主要完成网络接口层中数据帧的发送和接收。

H1102是一款耦合隔离变压器,用来对网络上的脉冲进行转换和滤波。H1102联接RJ45接头,可以直接接入以太网。

串行电平转换模块选用了Maxim公司出品的MAXSP3232E芯片。该芯片内部含有倍增电路和转换电路,只需+5V电源供电即可实现TTL电平到RS232C电平的转换。RS232串口一方面是作为开发调试用的,一方面可以作为相应的通信应用。

I/O口扩展包括系统的LED显示电路、JTAG调试电路以及其他测试电路等。

(三)系统的软件设计方案

Web服务器是在嵌入式TCP/IP协议栈的基础上实现的一种应用程序。从系统软件工作过程来看,可将系统分三部分:第一部分,以太网控制器驱动程序的实现;第二部分:嵌入式TCP/IP协议的实现,这部分内容在第一部分的基础上,结合系统具体环境,对标准TCP/IP协议进行简化并在ARM7单片机上进行移植;第三部分:应用层部分,通过嵌入式TCP/IP协议对用户数据进行收发处理。这里是在应用层实现HTTP协议来完成Web服务器功能的。

所以系统软件设计部分主要包括了以太网控制器的驱动程序、嵌入式TCP/IP协议栈以及动态web网页的实现等几个模块:

(1)以太网控制器驱动程序是指LPC2132微控制器对ENC28J60芯片的驱动、控制过程。

(2)在LPC2132微控制器内部嵌入TCP/IP协议栈是系统实现的关键,它主要包括了ARP, ICMP, IP, TCP和HTTP协议的设计与实现。

(3)动态网页的实现。使用CGI技术,可以实现动态信息的交换,从而达到远程监视、控制的目的。

软件设计中的另一任务是确定开发语言。对于嵌入式系统来说,掌握汇编语言的编程是至关重要的,即使使用高级语言来进行编程,通过阅读编译出来的汇编代码,也可以发现高级语言编程时需要优化的地方,从而提高高级语言所编写代码的执行效率。同时嵌入式系统的资源紧张,要合理利用资源,提高运行效率,关键部分、时间要求严格的部分还是需要使用汇编语言来完成。但汇编语言在代码编写和维护上效率较低,通用性不强,在复杂的项目上还是选用高级语言比较合理。在本设计中,采用汇编语言编写ARM7内核的启动代码(boot loader),其它的程序采用C语言作为设计语言。它有很明显的优势:C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,有丰富的库函数、运算速度快,而且可以直接实现对系统硬件的控制,较汇编语言有更好的可读性。

三、嵌入式Web服务器的实现 (一)主程序流程

在主程序流程中,主要设计实现包括两大部分:第一是对接收到的以太网数据帧进行解包:第二则是对要发送的数据进行封装并发送。

系统初始化模块主要包括了LPC2I32微控制器的初始化、网络接口芯片ENC28J60的初始化、TCP/IP协议栈中各标志的初始化等:

ARP处理模块主要完成接收ARP请求并发送ARP响应;

ICMP处理模块主要完成接收ICMP回显请求并发送ICMP回显响应;

TCP数据处理模块主要完成对TCP数据报及HTTP数据的处理。

当程序运行时,首先对系统初始化,这时系统处于等待状态,直到有数据帧到达。ENC28J60接收完数据帧以后,首先去除帧头,然后判断该数据帧的报文是否为ARP包,若是,则进行ARP数据包处理,若不是,则检查数据报头,看IP数据包的报文是否为ICMP数据包,若是ICMP数据包,则转到ICMP数据处理子程序。若不是ICMP数据包,就继续进行判断,看是否为TCP数据包,若为TCP数据包则转入TCP数据处理子程序,若此时即不是ICMP数据包也不是TCP数据包,则将该包丢弃。

子程序的设计是为了完成TCP/IP协议体系的每一层的功能的,TCP/IP协议的每一层都是相互联系的,但也是相对独立的,具体由下面7个部分实现:以太网驱动程序、以太网层程序、ARP协议处理程序、IP协议处理程序、ICMP协议处理程序、TCP协议处理程序、HTTP协议处理程序。

(二)嵌入式Web服务器的实现

1、网络接口的实现

网络接口是Web服务器与外界交流的接口。操作系统提供网络协议栈的支持,最主要是TCP/IP以及socket套接字系统函数库。网络接口使用操作系统提供的socket函数族建立可远程通信的套接字。它分两部分,一部分在系统初始化的时候建立,另一部分在HTTP引擎模块里面实现。网络接口模块的功能描述为:首先建立socket。socket是BSO Unix提出的进程间通信(IPC)机制,它是一种双向的通信接口,使得可以在两个不同进程(通常是网络上的不同节点的进程)之间可以直接通信。

2、中心处理模块

中心处理模块是嵌入式Web服务器的核心。它进行全局的控制和管理。它通过accept()接收HTTP请求,调用read将请求接收到本地,然后进行请求解析。根据请求的内容,判断是属于动态内容还是静态内容,如果是动态内容则调用相应的动态处理函数,如果是静态内容则访问VFS获得相应的内容。然后将获得的内容包装成为HTTP响应,返回给客户端。中心处理模块还实现控制管理信息和容错机制。

3、动态文件预处理器

Web服务器必须有交互能力才是有实际意义的服务器程序。目前大多数的Web服务器都是利用CGI (Common Gateway Interface,通用网关接口)来实现应用程序的接口。本论文从嵌入式系统的角度出发,实现了一种内部的应用程序接口。

动态文件预处理器所实现的功能是将普通的Web动态资源转变成为可编译的函数代码。设动态文档为f.dtm,它包含内容{x, f(a)}。其中x为静态的内容,F()为应用程序,a为通过解析HTTP请求得出的参数。动态文件预处理器将f.dtm转变成为f_dtm.c。它的内容为(f_dtm ( )},它是一个函数,实现功能为输出{x', f(a)}.其中f(a)是f(a)的实际输出,而x'是输出静态内容的动作。

四、嵌入式Web服务器的主要应用

嵌入式Web服务器是应用在嵌入式系统上的Web服务器架构。它的主要应用是设备管理和应用程序的网络扩展。

嵌入式Web服务器作为一个后台程序直接在嵌入式设备上运行,用户通过网络对设备配置、控制、监测,保证设备安全、有效地运作。

Web接口使得用户可以在任何一台有互联网接入能力的带有Web浏览器的设备访问到该嵌入式设备。Web服务器提供应用程序接口可以扩展Web的应用。这种设备管理方式不仅起到监测、控制的功能,而且根据设备的特点可以更加入性化和智能化。它使对远程设备的操作从监控(Monitor)变成为管理(Manage )。其中基于嵌入式WEB服务器的视频监控系统现已成为视频监控系统的主流技术,在嵌入式系统中集成嵌入式 Web视频服务器,采用嵌入式实时多任务操作系统;内置一个嵌入式Web服务器。摄像头送来的视频信号数字化后由高效压缩芯片压缩,通过内部总线送到内置的Web服务器,网络上用户可以直接用浏览器观看Web服务器上的摄像机图像,授权用户还可以控制摄像机、云台、镜头的动作或对系统配置进行操作。

另一个应用是应用程序网络扩展。Web服务已成为支撑现代应用程序技术和系统核心组件,现今约87%的企业用户都希望为他们的程序添加上基于Web的用户接口。嵌入式Web服务器很好地提供了Internet网络的接口,将应用程序和Web接口结合起来,是应用程序网络扩展的解决方案。

参考文献

1嵌入式Web服务器的设计与实现宋凯 计算机工程与设计 2009/04

icmp协议篇8

引言

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<uip.h>

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所示。

icmp协议篇9

关键词:网络管理 ;ICMP ;WBM

Abstract: This paper introduces the WBM (network management system management mode based on WEB) three layers system structure, as well as the network management system structure, focusing on the automatic topology discovery algorithm, according to the actual application to carry on the automatic discovery system, enhance the ability of the network topology.

Keywords: network management; ICMP; WBM

中图分类号:TN711文献标识码:A文章编号:2095-2104(2013)

网络管理的目的就是确保一定范围内的网络及其网络设备能够稳定、可靠、高效地运行,使所有的网络资源处于良好的运行状态,达到用户预期的要求。过去有一些简单的工具用来帮助网管人员管理网络资源,但随着网络规模的扩大和复杂度的增加,对强大易用的管理工具的需求也日益显得迫切,管理人员需要依赖强大的工具完成各种各样的网络管理任务,而网络管理系统就是能够实现上述目的系统。

1 WBM 技术介绍

随着应用Intranet的企业的增多,同时Internet技术逐渐向Intranet的迁移,一些主要的网络厂商正试图以一种新的形式去应用MIS 。因此就促使了Web(Web-Base Management)网管技术的产生[2]。它作为一种全新的网络管理模式——基于Web的网络管理模式,从出现伊始就表现出强大的生命力,以其特有的灵活性、易操作性等特点赢得了许多技术专家和用户的青睐,被誉为是“将改变用户网络管理方式的革命性网络管理解决方案”。

WBM融合了Web功能与网管技术,从而为网管人员提供了比传统工具更强有力的能力。WBM可以允许网络管理人员使用任何一种Web浏览器,在网络任何节点上方便迅速地配置、控制以及存取网络和它的各个部分。因此,他们不再只拘泥于网管工作站上了,并且由此能够解决很多由于多平台结构产生的互操作性问题。WBM提供比传统的命令驱动的远程登录屏幕更直接、更易用的图形界面,浏览器操作和W e b页面对W W W用户来讲是非常熟悉的,所以WBM的结果必然是既降低了MIS全体培训的费用又促进了更多的用户去利用网络运行状态信息。所以说,WBM是网络管理方案的一次革命。

2 基于WBM 技术的网管系统设计

2.1 系统的设计目标

在本系统设计阶段,就定下以开发基于园区网、Web模式的具有自主版权的中文网络管理系统软件为目标,采用先进的WBM技术和高效的算法,力求在性能上可以达到国外同类产品的水平。

本网络管理系统提供基于WEB的整套网管解决方案。它针对分布式IP网络进行有效资源管理,使用户可以从任何地方通过WEB浏览器对网络和设备,以及相关系统和服务实施应变式管理和控制,从而保证网络上的资源处于最佳运行状态,并保持网络的可用性和可靠性。

2.2 系统的体系结构

在系统设计的时候,以国外同类的先进产品作为参照物,同时考虑到技术发展的趋势,在当前的技术条件下进行设计。我们采用三层结构的设计,融合了先进的WBM技术,使系统能够提供给管理员灵活简便的管理途径。

三层结构的特点[2]:1)完成管理任务的软件作为中间层以后台进程方式实现,实施网络设备的轮询和故障信息的收集;2)管理中间件驻留在网络设备和浏览器之间,用户仅需通过管理中间层的主页存取被管设备;3)管理中间件中继转发管理信息并进行SNMP和HTTP之间的协议转换三层结构无需对设备作任何改变。

3 网络拓扑发现算法的设计为了实施对网络的管理,网管系统必须有一个直观的、友好的用户界面来帮助管理员。其中最基本的一个帮助就是把网络设备的拓扑关系以图形的方式展现在用户面前,即拓扑发现。目前广泛采用的拓扑发现算法是基于SNMP的拓扑发现算法。基于SNMP的拓扑算法在一定程度上是非常有效的,拓扑的速度也非常快。但它存在一个缺陷[3]。那就是,在一个特定的域中,所有的子网的信息都依赖于设备具有SNMP的特性,如果系统不支持SNMP,则这种方法就无能为力了。还有对网络管理的不重视,或者考虑到安全方面的原因,人们往往把网络设备的SNMP功能关闭,这样就难于取得设备的M I B值,就出现了拓扑的不完整性,严重影响了网络管理系统的功能。针对这一的问题,下面讨论本系统对上述算法的改进—基于ICMP协议的拓扑发现。

3.1 PING和路由建立

PING的主要操作是发送报文,并简单地等待回答。PING之所以如此命名,是因为它是一个简单的回显协议,使用ICMP响应请求与响应应答报文。PING主要由系统程序员用于诊断和调试实现PING的过程主要是:首先向目的机器发送一个响应请求的ICMP报文,然后等待目的机器的应答,直到超时。如收到应答报文,则报告目的机器运行正常,程序退出。

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

3.2 网络拓扑的发现算法具体实现的步骤:

(1)对于给定的IP区间,利用PING依次检测每个IP地址,将检测到的IP地址记录到IP地址表中。(2)对第一步中查到的每个IP地址进行traceroute操作,记录到这些IP地址的路由。并把每条路由中的网关地址也加到IP表中。

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

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

(5)试图得到与IP地址表中每个IP地址对应的域名(Domain Name),如具有相同域名,则说明同一个网络设备具有多个IP地址,即具有多个网络接口。

(6)根据第二步中的路由与第四步中得到的子网,产生连接情况表。

4 结语

本文提出的ICMP协议的拓扑发现方法能够较好的发现网络拓扑,但是它需要占用大量的带宽资源。本系统进行设计时,主要考虑的是对园区网络的网络管理,所有的被管理设备和网管系统处于同一段网络上,也就是说,系统可以直接到达被管理的网络,所以对远程的局域网就无能为力了。在做下一步工作的时候,可以添加系统对远程局域网络的管理功能。

参考文献

[1] 晏蒲柳.大规模智能网络管理模型方法[J].计算机应用研究.2005,03.

icmp协议篇10

最近几年随着Internet应用的迅猛发展,Internet的通信协议,特别是TCP/IP协议,已成为嵌入式Internet的主体构架;然而,仅仅使用嵌入TCP/IP协议对许我应用来说远远不够,它们要求更高层次的信息传输和交换方式。在原有嵌入TCP/IP协议基于上加入HTTP/1.1将构成一个功能较为简单的嵌入式Web Server,它可以接收和发送一些简单的数据和命令。如果再将这些嵌入通信协议和Web功能用VHDL来实现的话,将大大降低嵌入成本,满足嵌入式产品对Web功能的要求。

1 嵌入式Web Server中的协议裁减

嵌入式Web Server中用到的通信协议较多,若全部采用,将导致整个嵌入式Web Server异常复杂,而且费用显著增加。因此,为保证嵌入式Web Server最简化,必须对一些主要的通信协议进行相关的裁减,减小整个硬件设计的复杂性。

1.1 IP协议

IP在网络中主要实现2个基本功能:寻址和分段。IP可以根据数据报头中包括的目的地址将数据报传送到目的地。在此过程中,IP负责选择传送的通道。如果有些网络内只能传送小的数据报,IP可以将数据报重新组装并在报头域内说明。

    在嵌入式Web Server中,由于只需传送一些简单的数据和命令,数据报的长度很小,足以适合在任何网络中传送,因此对于分段的功能可以裁减不要。

IP数据包头如图1所示。

在IP数据包头中,服务类型是指一些服务质量的参数,这些参数用于在特定网络指示所需要的服务。而选项包括时间戳,安全和特殊路由,在数据包中可以没有。因此,为简化嵌入Web Server的复杂程度,这2个字段都可以忽略,而且不用作任何处理。标识是发送时用于帮助重组分段包的,段偏移量是指示这个段在数据报中什么位置。由于不采用分段功能,因此这些字段都无须考虑也不用作任何处理,而且标记字段第2位必须为1,表示是不可分段的。

1.2 ICMP协议裁减

ICMP协议用于报告在数据报过程中的错误,它在以下几种情况下发送ICMP消息:未达目的地、超时、参数总是、源拥塞、重定向、回送或回送响应、时间戳和时间戳响应、信息请求或信息响应。

由于嵌入式Web Server只是一个具有简单Web功能的模块,并且它对外部传感器和网络之间只是简单的数据传输和命令的;因此跟成本相比较而言,许多可靠性措施可以忽略不计,只考虑一些必要。在ICMP消息报告中,回送或回送响应消息、信息请求或信息响应消息在网络信息处理中至关重要,因此予以采用;其它消息报告可以忽略,保证嵌入式Web Server最简化。

1.3 TCP协议裁减

TCP,即传输控制协议,是一种面向连接的传输层协议。通过使用序列号和确认信息,TCP协议能够向发送方提供到达接收方的数据包的传送信息。当传送过程中出现数据包丢失情况时,TCP协议可以重新发送丢失的数据包,直到数据成功到达接收方或者出现网络超时为止。TCP协议还可以识别重复信息,丢弃不需要的多余信息。使网络环境得到优化。如果发送方传送数据的速度大大快于接收方接收数据的速度,TCP协议可以发送和接收的数据响应。TCP协议能够把数据传送信息传递给所支持的更高层次的协议或应用使用。

但在嵌入式Web Server中,考虑到实现的情况和复杂性,对于TCP协议,除了采用数据包传送机外,重新发送和数据流控制机制都可以忽略不计。因此在嵌入式Web Server中,只传送一些简单的数据和命令,而且数据量很少,因此,在系统中不会产生网络拥塞,只需在其它客户端或访问端上用流量控制机制就可以了。同时由于嵌入式Web Server功能简单,重新发送的可靠性不大;如果真的要求重发的话,可以与嵌入式Web Server重新进行连接,来完成传送任务。

2 硬件结构

由于TCP协议、IP协议和ICMP协议被简化,整个协议的处理只需由协议状态机来完成。它须负责接收IP数据报、做相应的检验和消息处理、协议解释、根据接收到的信息进行TCP状态的转换、构造IP发送数据报。

整个嵌入式Web Server的硬件结构如图2所示。嵌入式Web Server由本地网络协议处理器、TCP处理器、IP数据包接收和发送处理及存储器、嵌入式Web Server IP的地址寄存器、传感器数据采集接口组成。在嵌入式Web Server的传感器数据采集接口的数据直接传送到主页存储器中。

IP数据报处理检查数据报是否发送给嵌入式Web Server以及是否有效。

TCP状态机是一个简化的TCP连接过程,只有6个状态,不包括错误情况和错误处理。

HTTP的存储器包含了接收到的HTTP的报头。如果接收到的IP包体有一个有效HTTP载荷,那么HTTP/1.0协议解释器会搜索存储器寻找相应的回答。IP数据报构造器根据HTTP/1.0协议解释器搜索结果构造发送的包体。其中地址、端口号、确认号、序列号是根据接收到的数据包体产生的,而校验码是根据发送的数据产生。其它信息则是从数据接口和主页内存中形成的。

整个硬件设计采用了VHDL语言,采用Xilinx的FPGA进行仿真。

3 VHDL设计

整个嵌入式Web Server的具体的VHDL设计在这里不多说明,只介绍其核心的TCP状态机的状态转移顺序和转移条件的设计。整个协议状态机有6种状态,还可以分离出6种事件,这些事件的发生可以引起状态间相互转换,如图3所示。

SYN表示连接请求;ACK(SYN)表示连接确认;RST表示拒绝建立连接;FIN(CLOSE)主动关闭连接请求;ACK(FIN)关闭连接确认;TIME OUT计时等待结束。

TCP状态机的VHDL的设计代码省略。