网普技术论坛 网普科技  
» 游客:   网普主页 | 注册 | 登录 | 帮助
 

作者:
标题: 网络技术综合 上一主题 | 下一主题
??????
网普成员





积分 100
发贴 99
注册 2004-10-10
状态 离线
#1  网络技术综合

代理服务器(Proxy)

  随着因特网技术的迅速发展,越来越多的计算机连入了因特网。它促进了信息产业的发展,并改变了人们的生活、学习和工作方式,对很多人来说,因特网已成为不可缺少的工具。而随着因特网的发展也产生了诸如IP地址耗尽、网络资源争用和网络安全等问题。代理服务器就是为了解决这些问题而产生的一种有效的网络安全产品。

  如果一个单位有几百台微机连网,在上网访问时,将出现网络资源争用和增加上网费用的问题。一台主机访问了某个站点而另一台主机又访问同一个站点,如果是同时访问将出现网络资源争用的问题,如果是相继访问将出现增加本单位网络费用的问题。

  本单位或本单位的各部门的网络均有安全性要求高的数据,而因特网上经常会有一些不安全的行为出现。如果每台主机都直接连到因特网上,势必会对内部网(Intranet)的安全造成严重的危害。因此,使网络安全运行是网络发展的前提条件,也是人们日益关注的热点。

  如何快速地访问Internet站点,并提高网络的安全性,这已成为当今的热门话题。新一代的代理服务器使我们美梦成真。代理服务器(Proxy Server)可以缓解或解决上述问题,是因特网共享解决方案(Internet Sharing Solution)的关键。

  代理服务器软件安装在网络节点上,利用其高速缓存(Cache),可以极大地、极有效地缓存因特网上的资源。当内部网的一个客户机访问了因特网上的某一站点后,代理服务器便将访问过的内容存入它的高速缓存(Cache)中,如果内部网的其他客户机再访问同一个站点时,代理服务器便将它缓存中的内容传输给该客户机,这样就能使客户机共享任何一个客户机所访问过的资源,这样就可以大大地提高访问网站的速度和效率,尤其是对那些冗长、庞大的内容,更可起到立杆见影、事半功倍的作用;同时减少网络传输流量,提高网络传输速度,节约访问时间,降低访问费用。比如一家销售DELL产品的公司,假设有15台需要上网的PC,可能每一台每天都需要访问DELL的Web站点来了解最新产品信息,以便向顾客介绍最新的产品。假设每一个用户需要5分钟时间来获取这些信息,那么15个用户分别连接获取信息,则一共要花费75 分钟的上网时间,但在使用了代理服务器后只要有一个用户访问过DELL的Web站点,其他用户再访问该站点时Proxy Server就可以从Cache中直接提取一份缓存的页面,这样很快就获得了各自所需的信息,很明显,总的上网时间由过去的75分钟下降到5分钟多一点,网络费用自然也降低了接近15倍,如果用户更多则费用降低得更多。

  代理服务器只允许因特网的主机访问其本身,并有选择地将某些允许的访问传输给内部网,这是利用代理服务器软件的功能实现的。采用防火墙技术,易于实现内部网的管理,限制访问地址。代理可以保护局域网的安全,起到防火墙的作用:对于使用代理服务器的局域网来说,在外部看来只有代理服务器是可见的,其他局域网的用户对外是不可见的,代理服务器为局域网的安全起到了屏障的作用。因此,可以提高内部网的安全性。

  另外,代理服务器软件允许使用大量的伪IP地址,节约网上资源,即用代理服务器可以减少对IP地址的需求,对于使用局域网方式接入Internet,如果为局域网(LAN)内的每一个用户都申请一个IP地址,其费用可想而知。但使用代理服务器后,只需代理服务器上有一个合法的IP地址,LAN内其他用户可以使用10.*.*.*这样的内部网保留IP地址,这样可以节约大量的IP。这对缓解目前IP地址紧张问题很有用。还有,在几台PC想连接Interne t,却只有一根拨号线的情况下,代理服务器是一个很合适的解决方案。

  代理服务器的功能

  综上所述,代理服务器(Proxy Server)是一种服务器软件,它的主要功能有:

  1.设置用户验证和记帐功能,可按用户进行记帐,没有登记的用户无权通过代理服务器访问Internet网。并对用户的访问时间、访问地点、信息流量进行统计。

  2.对用户进行分级管理,设置不同用户的访问权限,对外界或内部的Internet地址进行过滤,设置不同的访问权限。

  3.增加缓冲器(Cache),提高访问速度,对经常访问的地址创建缓冲区,大大提高热门站点的访问效率。通常代理服务器都设置一个较大的硬盘缓冲区(可能高达几个GB或更大),当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度。

  4.连接Internet与Intranet充当FireWall(防火墙):因为所有内部网的用户通过代理服务器访问外界时,只映射为一个IP地址,所以外界不能直接访问到内部网;同时可以设置IP地址过滤,限制内部网对外部的访问权限。

  5.节省IP开销:如前面所讲,所有用户对外只占用一个IP,所以不必租用过多的IP地址,降低网络的维护成本。

  代理服务器的原理

  代理服务器(Proxy)的工作机制很象我们生活中常常提及的代理商,假设你的机器为A机,你想获得的数据由 B机提供,代理服务器为C机,那么具体的连接过程是这样的:

  首先,A机需要B机的数据,它与C机建立连接,C机接收到A机的数据请求后,与B机建立连接,下载A机所请求的B机上的数据到本地,再将此数据发送至A机,完成代理任务。

  这只是一个简单的描述,实际上代理服务器完成的任务比这要复杂,提供的功能也多得多。代理服务器犹如一个屏障,它容许向Internet发送请求并且接收信息,但禁止未授权用户的访问。目前通过代理方式可以支持绝大部分的In ternet应用,从一般的WWW浏览到RealAudio、NetMeeting等都可以通过代理方式实现,而且目前新型的代理服务器软件可以支持对Novell用户的代理服务。

  代理服务通常由两部分组成:服务器端程序和客户端程序,用户运行客户端程序,先登录至代理服务器(有的是透明处理的,就没有显式的登录),再通过代理服务器就可以访问相应的站点。

  客户端程序可以分为专用客户端及Internet应用内嵌的代理设置。例如WinGate有自己专用的客户端程序Internet Client,在客户机安装了以后,可透明地通过WinGate访问Internet;SocksCap也是一个专用的客户端程序,它是Socket代理的客户端,可以透明地通过Socks代理访问Internet。很多Internet应用都有设置代理的功能,例如IE、Netscape等浏览器都可以设置代理,CuteFTP等FTP软件也可以设置代理。

代理服务器的实现十分简单,只需在局域网的一台服务器上运行相应的服务器端软件,目前代理服务器软件产品十分成熟,功能也很强大,可供选择的服务器软件很多。主要的服务器软件有WinGate公司的WinGate Pro、微软公司的Microsoft Proxy、Netscape的Netscape Proxy、Ositis Soft ware公司的WinProxy、Tiny Software公司的WinRoute、Sybergen Netwo rks公司的SyGate等,这些代理软件不仅可以为局域网内的PC机提供代理服务,还可以为基于Novell网络的用户,甚至UNIX的用户提供代理服务,服务器和客户机之间可以用TCP/IP、IPX、NETBEUI等协议通信,可以提供WWW浏览、FTP文件上载下载、Telnet远程登录、邮件接收发送、TCP/UDP端口映射、SOCKS 代理等服务,可以说目前绝大部分Internet的应用都可以通过代理方式实现。

  下面我选择了几种流行的代理服务器软件进行介绍。

2004-10-10 10:53 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
??????
网普成员





积分 100
发贴 99
注册 2004-10-10
状态 离线
#2  

二、WinGate

  WinGate可以算是代理服务器软件中的“元老”了,性能十分成熟,能够提供大量的代理服务,功能十分强大。现在最新的版本是5.0.1。WinGate提供了十几种协议的代理,能够实现Internet上绝大部分应用,对服务器性能的要求不高,可以运行于Windows9x和Windows NT,2000平台上,能够为Windows3.1/3. 2/9x/NT/2000客户提供代理服务,还可以为Novell网络的用户提供代理服务。WinGate提供的功能主要有:

  * WWW缓存,支持HTTP、FTP和HTTPS等协议

  * Socks5代理服务

  * VDOLive/XDMA/POP3/FTP/RealAudio/Telnet代理服务

  * TCP/UDP端口映射连接

  * DHCP服务器(动态IP地址分配服务器)

  * DNS服务器(域名服务器)和远程配置服务

  *用户授权与帐号管理

  *高级登录

  *用户数据库和流量记录

  *客户端自动优化与配置

*防火墙,防病毒功能

*网站智能过滤

*远程管理,实时监控

  应该说这些功能基本上可以满足广大用户的需求。由于已经有专门的文章详细介绍了WinGate的安装、配置和使用,这里不再重复,具体请参照相应的文章及WinGate的文档。关于WinGate软件的最新信息,可以浏览网址:http://www.wingate.com.cn/

  三、Microsoft Proxy Server

  Microsoft Proxy Server是微软公司推出的代理服务器软件产品,是代理服务器产品中的“ 新军”,目前升级叫ISA,面向Windows NT平台,可以实现与Windows NT及Internet In formation Server的无缝连接。Microsoft Proxy Server2.0需要以下系统软件,否则无法安装:Windows NT4.0(中/英版)、Microsoft Internet Informat ion Server2.0或更高版本、Windows NT4.0 Service Pack3或更高,而且必须有一个格式为NTFS的硬盘作为缓存(Cache)。Microsoft Proxy Server2.0也可以装在W indows2000 Server上,但是还得从微软的Web站点下载一个补丁。

  由于Microsoft Proxy Server2.0需要有NTFS格式的硬盘空间做缓存,因此其无法运行在Windows9x平台上,应该说Microsoft Proxy Server2.0对系统的要求要比WinGate高,但是其代理连接(WinSock Proxy服务)的无缝性、透明性要更好,由于与Windows NT良好的结合使得其配置、管理、运行十分简便,客户机只须运行相应的客户端软件,此后用户通过代理上网时与直接上网基本相同,不须做任何特别的设置,在客户端根本无法感到代理服务器的存在。

  Microsoft Proxy Server2.0包括了Web Proxy、Socks Proxy、W insock Proxy:

  * Web Proxy,是标准的Proxy功能,所有的Proxy代理服务器软件都有这个功能。Micro soft Proxy Server2.0还提供了多个Proxy协同工作、级连的功能来合理分配流量,防止网络拥塞,从而提高效率。Microsoft Proxy Server2.0的Web Proxy还提供了Web服务器的反向代理功能,支持将本地的Web服务器放在内部局域网上,能将外部来的在代理服务器80端口上的Web连接请求转到内部相应的Web服务器上去。如果局域网里有多个Web服务器,则代理服务器根据所请求的URL的目录来决定转到哪台W eb服务器上。

  * Sock Proxy,支持Sock4.3a的Proxy,给支持Proxy的Telnet等客户端软件提供代理服务,基于UNIX的系统可以使用到这个代理服务。

  * Winsock Proxy, Microsoft Proxy Server2.0具有它的独到之处。以上的两个Proxy是基本上所有代理服务器都有的功能,只要客户机的Internet应用软件有支持Proxy的功能就可以使用,但是不能实现透明访问的功能,也不能实现除了Web服务器外的服务器(例如FTP服务器)的反向代理,即将除了Web服务器外的服务器放在局域网内部,还可以向外提供服务。而Winsock Proxy就能做到这些。但是Winsock Proxy要求在客户端安装Microsoft Proxy Client。

  由于已经有专门的文章详细介绍Microsoft Proxy Server的安装、配置和使用,这里不再重复,具体请参照相应的文章及文档。关于Microsoft Proxy Server软件的最新信息,可以与微软公司联系,或者浏览网址:http://www.microsoft.com/Proxy/

2004-10-10 10:54 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
??????
网普成员





积分 100
发贴 99
注册 2004-10-10
状态 离线
#3  

四、WinRoute

  Microsoft Proxy Server和WinGate是目前最流行的代理服务器软件,但是我要特别向你推荐的另一个功能强大、很不错的代理服务器软件-WinRoute。与Microsoft Proxy Serv er和WinGate相比,WinRoute又有那些优势呢?Microsoft Proxy Server需要Wi ndows NT与IIS的组合,而且要发挥它的优势(WinSock Proxy的透明性、无缝性)需要安装Mic rosoft Proxy Client程序,这也限制了客户机的平台。WinGate提供代理功能,但无法使用二级代理,而且最不方便的是很多协议(例如邮件等)的使用,尤其是Telnet还要分两步走:先Telnet到代理服务器上,再往外Telnet。

  WinRoute提供了众多而强大的功能,具有以下一些极其吸引人的特性:

  *提供NAT(Network Address Translation)功能:可以做路由器(Router ),让多台机器使用同一个IP地址访问Internet,还能自动保护内部网络不受到外部的攻击

  *端口映射:实现反向代理功能,让外部访问受NAT保护的内部网络所提供的一些服务

  *包过滤:根据您所定义的规则,对经过代理服务器的包进行过滤,以保证安全

  *与应用程序无关:各种基于TCP/IP的程序都能正常使用(所以可以同时使用HTTP Proxy和Soc ks Proxy,自然也可以使用二级代理啦!)

  *安装非常简便,对系统要求不高,Windows9x/NT/2000都可以,并且不需要安装任何专门的客户端软件

  *提供代理服务器,对HTTP代理提供缓存(Cache)

  *支持代理服务的身份验证

  *支持基于IP地址的过滤和限制,提供限制可访问的URL的安全功能

  * DHCP服务器:自动配置网络上的客户机的网络相关参数,例如IP地址、网络掩码

  *电子邮件服务器:接受和发送电子邮件

  *简单的域名服务器(DNS):作为本地局域网的一个简单的域名服务器,包含了一个DNS的缓存,还可以转发 DNS域名查询

  WinRoute的安装

  安装的系统要求:

  操作系统:Windows9x/NT4/2000,其中Windows NT4需要Service Pack 3。安装TCP/IP协议。

  硬件:486/66以上的PC或者服务器,足够的硬盘空间做代理缓存(Cache),双网卡或者网卡+猫(M odem)或者其他组合,至少有一个合法的IP。

  在各大著名的FTP站点均可下载WinRoute,目前的最新版本是4.2.5。下面的安装与设置以WinRoute3.0为例子,更高版本的WinRoute的安装与设置是类似的。

  
  WinRoute的Proxy Server还提供了访问控制的功能。你可以对不同的用户帐号或者组限制允许访问的站点(URL)。在Access设置下面,填写你的控制列表。例如对站点www.cnn.com,允许BOSS 组访问,那么选择Allow to [BOSS]组,则非BOSS组的成员均不可以访问www.cnn.com。目标的URL可以使用统配?..刑睢?”,Allow to下面什么都不填,则Pro xy对任何非Admin组成员都不开放。注意,Admin组成员是不受Proxy的任何访问限制的,设置帐号时应考虑到这一点。如果不想Proxy Server起作用,就不设任何帐号,并且利用统配符“*”限制访问任何站点。另外, Proxy Server是设于本机IP上的,而不是WinRoute占用的两个IP。

  注意!WinRoute的Proxy Server在缺省状态下是可以由任何人访问的,也就是说任何别的人都是可以使用这个Proxy的,这样会有安全问题。现在网上代理猎手Proxy Hunter满天飞,一旦你的Prox y Server没有设置权限而被盯上的话,那就危险啦!

  
  使用WinRoute的Proxy功能:以Netscape Communicator来做例子,选择菜单: Edit/Preferences/Advanced/Proxies,选择Manual Proxy Config uration,按[View...]按钮,在HTTP、FTP和GOPHER几项中输入WinRoute代理服务器的IP地址和端口号3128(缺省)就可以了。

  当然WinRoute还有许多其他功能,例如DNS服务器、DHCP服务器、电子邮件服务器等等(有关这些设置的介绍请参照WinRoute的帮助和文档),但是拥有以上功能已经可以做很多事情了。详细资料还请访问 //www.winroute.com.cn。

  五、SyGate

  与前面介绍的几个代理服务器软件相比,SyGate可以算是一个很容易使用的代理服务器软件了,基本上不用设置什么东西就可以使用。SyGate设计的时候就以“易于使用”为最高优先级,因为SyGate的作者觉得“易于使用 ”是一个很重要的因素。但在管理功能上略逊色于前几个代理服务器软件。

  SyGate的系统要求不高,只需要一台连接Internet的机器,操作系统是Windows9x/NT4 .0(其中Windows NT4.0需要Service Pack3以上),装有TCP/IP协议就可以了。

2004-10-10 10:55 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
??????
网普成员





积分 100
发贴 99
注册 2004-10-10
状态 离线
#4  

--------------------------------------------------------------------------------
NetBIOS 端口开放问题
天网安全在线推出全国首个在线安全检测系统--"天网医生",它可以初步检测计算机存在的一些安全隐患,并且根据检测结果判断你系统的级别,引导你进一步解决你系统中可能存在的安全隐患。不过有时,如果你安装并开启了有效的防火墙或进行了有效安全设置,天网会通常会出现一些令普通用户难以理解的结果,如下:
135端口开放!(NT,2000)
或 139端口开放!

关于天网端口扫描检测的说明:
在您电脑上,如果出现了一些标准的、容易受攻击的网络服务端口,端口扫描器会尝试建立标准的TCP/IP(网络)连接。当端口扫描器完成扫描后,那些端口是敞开着的,和从端口扫描器传送了什么连接请求都将一目了然。
检测系统在几个知名的服务端口进行,每个端口的扫描结果会分为开放、关闭和隐藏三种状态。主要是为了提醒联网的用户,在互联网上会有各种各样的端口扫描器在扫描接入互联网的各种系统的网络端口,以寻找系统的安全漏洞。


1、 如何理解并关闭135端口

135端口开放实际上是一个WINNT漏洞,开放的135的端口情况容易引起自外部的"Snork"攻击!!!

对于135端口开放的问题,可以在你的防火墙上,增加一条规则:拒绝所有的这类进入的UDP包,目的端口是135,源端口是7,19,或者135,这样可以保护内部的系统,防止来自外部的攻击。大多数防火墙或者包过滤器已经设置了很多严格的规则,已覆盖了这条过滤规则,但任需注意:有一些NT的应用程序,它们依靠UDP135端口进行合法的通讯,而打开你135的端口与NT的RPC服务进行通讯。如果真是这样,你一定要在那些原始地址的系统上(需要135口通讯),实施上述的规则,指定来自这些系统的通讯可以通过防火墙,或者,可以被攻击检测系统所忽略,以便维持那些应用程序的正常连接。

!!!为了保护你的信息安全,强烈建议你安装微软的最新NT补丁包。!!!

2、如何理解并关闭139端口(NetBIOS提供服务的tcp端口)

Netbios(NETwork Basic Input/Output System)网络基本输入输出系统。是1983年IBM开发的一套网络标准,微软在这基础上继续开发。微软的客户机/服务器网络系统都是基于NetBIOS的。在利用Windows NT4.0 构建的网络系统中,对每一台主机的唯一标识信息是它的NetBIOS名。系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,从而实现信息通讯。在这样的网络系统内部,利用NetBIOS名实现信息通讯是非常方便、快捷的。但是在Internet上,它就和一个后门程序差不多了。因此,我们很有必要堵上这个可怕的漏洞。

对于win9x :

在windows9x下如果你是个拨号用户。完全不需要登陆到nt局域网络环境的话。只需要在控制面板-网络-删除microsoft网络用户,使用microsoft友好登陆就可以了。但是如果你需要登陆到nt网络的话。那这一项就不能去处。因为nt网里需要使用netbios。

方法1:
1.检查NetBEUI是否出现在配置栏中。打开控制面版,双击“网络”选项,打开“网络”对话框。在“配置”标签页中检查己安装的网络组件中是否有NetBEUI。如果没有,点击列表下边的添加按钮,选中“网络协议”对话框,在制造商列表中选择微软,在网络协议列表中选择NetBEUI。点击确定,根据提示插入安装盘,安装NetBEUI。

2.回到“网络”对话框,选中“拨号网络适配器”,点击列表右下方“属性”按钮。在打开的“属性”对话框中选择“绑定”标签页,将除“TCP/IP->网络适配器”之外的其它项目前复选框中的对勾都取消!

3.回到“网络”对话框,选中“TCP/IP->拨号网络适配器”点击列表右下方“属性”按钮,不要怕弹出的警告对话框,点击“确定”。在“TCP/IP属性”对话框中选择“绑定”标签页,将列表中所有项目前复选框中的对勾都取消!点击“确定”,这时Windows会警告你“尚未选择绑定的驱动器。现在是否选择驱动器?”点击“否”。之后,系统会提示重新启动计算机,确认。

4.证实己取消绑定。重新进入“TCP/IP->拨号网络适配器”的“TCP/IP属性”对话框,选定“NetBIOS”标签页,看到“通过TCP/IP启用NetBIOS”项被清除了吧!连点两次“取消”退出“网络”对话框(不要点“确认”,免得出现什么意外)。

方法2:
运行RegEdit.exe 查找串“vnetbios”,找到后再选择“查找下一个”,将找到象“blahblah\\VxD\\VNETBIOS\\”的串,删除“VNETBIOS”项即可。 操作一定要谨慎,误操作可能导致系统崩溃,另关掉139端口后将无法共享文件和打印功能。


对于winNT :

在windowsNT下你可以取消netbios与TCP/IP协议的绑定。控制面板-网络-Netbios接口-WINS客户(tcp/ip)-禁用。确定。重启。这样nt的计算机名和工作组名也隐藏了,不过会造成基于netbios的一些命令无法使用。如net等。


对于WIN2000 :

选中网络邻居——》右键——》本地连接——》INTERNET协议(TCP/IP)——》属性——》高级——》选项——》TCP/IP筛选——》在“只允许”中填入除了137,138,139只外的端口。如果你在局域网中,会影响局域网的使用

当然还有最方便的方法:
选择一条天网的空规则,数据包方向选接收;对方IP地址选任何;协议TCP;本地端口139到139;对方端口0到0;标志位在SYN标志上打勾;动作拦截。
然后把这条规则勾上让它生效,保存即可。


最后谈谈这个后门的端口,137,138是udp端口。当通过网络邻居传输文件的时候就是通过这个2个端口.139端口是netbios提供服务的tcp端口。在windows9x下可以完全关闭这几个端口。完全禁止了netbios服务。方式是在控制面板-网络-只保留tcp/ip协议和拨号网络适配器。但是这样windows会提示你网络不完整。但是还可以继续使用。在tcp/ip协议里的netbios一项不要选择绑定到tcp/ip协议。这时候你的netbios服务完全停止了。你的机器也没有137,138和139端口了。这样追捕也搞不清你到底是9x还是unix了。windowsNT下可以封锁这些端口。封锁不必要的TCP和UDP端口可以通过在网络控制面板的IP地址对话框中进行配置来完成。 点击高级按钮激活高级IP地址对话框, 然后点击Enable Secury 对话框,然后点击配置按钮激活TCP/IP安全对话框, 那里列出了那些TCP和UDP端口被允许了。但是好像不能识别拨号网络适配器。

以上的方法都是给不需要连接入局域网的计算机的配置方法。如果你是一台拨号上网的单机那么完全可以禁止netbios服务。但是如果你需要接入局域网的话。那你只能注意加密你的共享资源了。否则全互联网的人都可以通过这个windows的“后门”到你的计算机里了:)

2004-10-10 10:56 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
??????
网普成员





积分 100
发贴 99
注册 2004-10-10
状态 离线
#5  

--------------------------------------------------------------------------------
路由器防火墙配置命令
一、access-list 用于创建访问规则。
(1)创建标准访问列表

access-list [ normal | special ] listnumber1 { permit | deny } source-addr [ source-mask ]

(2)创建扩展访问列表

access-list [ normal | special ] listnumber2 { permit | deny } protocol source-addr source-mask [ operator port1 [ port2 ] ] dest-addr dest-mask [ operator port1 [ port2 ] | icmp-type [ icmp-code ] ] [ log ]

(3)删除访问列表

no access-list { normal | special } { all | listnumber [ subitem ] }

【参数说明】

normal 指定规则加入普通时间段。

special 指定规则加入特殊时间段。

listnumber1 是1到99之间的一个数值,表示规则是标准访问列表规则。

listnumber2 是100到199之间的一个数值,表示规则是扩展访问列表规则。

permit 表明允许满足条件的报文通过。

deny 表明禁止满足条件的报文通过。

protocol 为协议类型,支持ICMP、TCP、UDP等,其它的协议也支持,此时没有端口比较的概念;为IP时有特殊含义,代表所有的IP协议。

source-addr 为源地址。

source-mask 为源地址通配位,在标准访问列表中是可选项,不输入则代表通配位为0.0.0.0。

dest-addr 为目的地址。

dest-mask 为目的地址通配位。

operator[可选] 端口操作符,在协议类型为TCP或UDP时支持端口比较,支持的比较操作有:等于(eq)、大于(gt)、小于(lt)、不等于(neq)或介于(range);如果操作符为range,则后面需要跟两个端口。

port1 在协议类型为TCP或UDP时出现,可以为关键字所设定的预设值(如telnet)或0~65535之间的一个数值。

port2 在协议类型为TCP或UDP且操作类型为range时出现;可以为关键字所设定的预设值(如telnet)或0~65535之间的一个数值。

icmp-type[可选] 在协议为ICMP时出现,代表ICMP报文类型;可以是关键字所设定的预设值(如echo-reply)或者是0~255之间的一个数值。

icmp-code在协议为ICMP且没有选择所设定的预设值时出现;代表ICMP码,是0~255之间的一个数值。

log [可选] 表示如果报文符合条件,需要做日志。

listnumber 为删除的规则序号,是1~199之间的一个数值。

subitem[可选] 指定删除序号为listnumber的访问列表中规则的序号。

【缺省情况】

系统缺省不配置任何访问规则。

【命令模式】

全局配置模式

【使用指南】

同一个序号的规则可以看作一类规则;所定义的规则不仅可以用来在接口上过滤报文,也可以被如DDR等用来判断一个报文是否是感兴趣的报文,此时,permit与deny表示是感兴趣的还是不感兴趣的。

使用协议域为IP的扩展访问列表来表示所有的IP协议。

同一个序号之间的规则按照一定的原则进行排列和选择,这个顺序可以通过 show access-list 命令看到。

【举例】

允许源地址为10.1.1.0 网络、目的地址为10.1.2.0网络的WWW访问,但不允许使用FTP。

Quidway(config)#access-list 100 permit tcp 10.1.1.0 0.0.0.255 10.1.2.0 0.0.0.255 eq www

Quidway(config)#access-list 100 deny tcp 10.1.1.0 0.0.0.255 10.1.2.0 0.0.0.255 eq ftp

【相关命令】

ip access-group

二、clear access-list counters 清除访问列表规则的统计信息。

clear access-list counters [ listnumber ]

【参数说明】

listnumber [可选] 要清除统计信息的规则的序号,如不指定,则清除所有的规则的统计信息。

【缺省情况】

任何时候都不清除统计信息。

【命令模式】

特权用户模式

【使用指南】

使用此命令来清除当前所用规则的统计信息,不指定规则编号则清除所有规则的统计信息。

【举例】

例1:清除当前所使用的序号为100的规则的统计信息。

Quidway#clear access-list counters 100

例2:清除当前所使用的所有规则的统计信息。

Quidway#clear access-list counters

【相关命令】

access-list

三、firewall 启用或禁止防火墙。

firewall { enable | disable }

【参数说明】

enable 表示启用防火墙。

disable 表示禁止防火墙。

【缺省情况】

系统缺省为禁止防火墙。

【命令模式】

全局配置模式

【使用指南】

使用此命令来启用或禁止防火墙,可以通过show firewall命令看到相应结果。如果采用了时间段包过滤,则在防火墙被关闭时也将被关闭;该命令控制防火墙的总开关。在使用 firewall disable 命令关闭防火墙时,防火墙本身的统计信息也将被清除。

【举例】

启用防火墙。

Quidway(config)#firewall enable

【相关命令】

access-list,ip access-group

四、firewall default 配置防火墙在没有相应的访问规则匹配时,缺省的过滤方式。

firewall default { permit | deny }

【参数说明】

permit 表示缺省过滤属性设置为“允许”。

deny 表示缺省过滤属性设置为“禁止”。

【缺省情况】

在防火墙开启的情况下,报文被缺省允许通过。

【命令模式】

全局配置模式

2004-10-10 10:58 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
??????
网普成员





积分 100
发贴 99
注册 2004-10-10
状态 离线
#6  

【使用指南】

当在接口应用的规则没有一个能够判断一个报文是否应该被允许还是禁止时,缺省的过滤属性将起作用;如果缺省过滤属性是“允许”,则报文可以通过,否则报文被丢弃。

【举例】

设置缺省过滤属性为“允许”。

Quidway(config)#firewall default permit

五、ip access-group 使用此命令将规则应用到接口上。使用此命令的no形式来删除相应的设置。

ip access-group listnumber { in | out }

[ no ] ip access-group listnumber { in | out }

【参数说明】

listnumber 为规则序号,是1~199之间的一个数值。

in 表示规则用于过滤从接口收上来的报文。

out 表示规则用于过滤从接口转发的报文。

【缺省情况】

没有规则应用于接口。

【命令模式】

接口配置模式。

【使用指南】

使用此命令来将规则应用到接口上;如果要过滤从接口收上来的报文,则使用 in 关键字;如果要过滤从接口转发的报文,使用out 关键字。一个接口的一个方向上最多可以应用20类不同的规则;这些规则之间按照规则序号的大小进行排列,序号大的排在前面,也就是优先级高。对报文进行过滤时,将采用发现符合的规则即得出过滤结果的方法来加快过滤速度。所以,建议在配置规则时,尽量将对同一个网络配置的规则放在同一个序号的访问列表中;在同一个序号的访问列表中,规则之间的排列和选择顺序可以用show access-list命令来查看。

【举例】

将规则101应用于过滤从以太网口收上来的报文。

Quidway(config-if-Ethernet0)#ip access-group 101 in

【相关命令】

access-list

六、settr 设定或取消特殊时间段。

settr begin-time end-time

no settr

【参数说明】

begin-time 为一个时间段的开始时间。

end-time 为一个时间段的结束时间,应该大于开始时间。

【缺省情况】

系统缺省没有设置时间段,即认为全部为普通时间段。

【命令模式】

全局配置模式

【使用指南】

使用此命令来设置时间段;可以最多同时设置6个时间段,通过show timerange 命令可以看到所设置的时间。如果在已经使用了一个时间段的情况下改变时间段,则此修改将在一分钟左右生效(系统查询时间段的时间间隔)。设置的时间应该是24小时制。如果要设置类似晚上9点到早上8点的时间段,可以设置成“settr 21:00 23:59 0:00 8:00”,因为所设置的时间段的两个端点属于时间段之内,故不会产生时间段内外的切换。另外这个设置也经过了2000问题的测试。

【举例】

例1:设置时间段为8:30 ~ 12:00,14:00 ~ 17:00。

Quidway(config)#settr 8:30 12:00 14:00 17:00

例2: 设置时间段为晚上9点到早上8点。

Quidway(config)#settr 21:00 23:59 0:00 8:0

【相关命令】

timerange,show timerange

七、show access-list 显示包过滤规则及在接口上的应用。

show access-list [ all | listnumber | interface interface-name ]

【参数说明】

all 表示所有的规则,包括普通时间段内及特殊时间段内的规则。

listnumber 为显示当前所使用的规则中序号为listnumber的规则。

interface 表示要显示在指定接口上应用的规则序号。

interface-name 为接口的名称。

【命令模式】

特权用户模式

【使用指南】

使用此命令来显示所指定的规则,同时查看规则过滤报文的情况。每个规则都有一个相应的计数器,如果用此规则过滤了一个报文,则计数器加1;通过对计数器的观察可以看出所配置的规则中,哪些规则是比较有效,而哪些基本无效。可以通过带interface关键字的show access-list命令来查看某个接口应用规则的情况。

【举例】

例1:显示当前所使用的序号为100的规则。

Quidway#show access-list 100

Using normal packet-filtering access rules now.

100 deny icmp 10.1.0.0 0.0.255.255 any host-redirect (3 matches,252 bytes -- rule 1)

100 permit icmp 10.1.0.0 0.0.255.255 any echo (no matches -- rule 2)

100 deny udp any any eq rip (no matches -- rule 3)

例2: 显示接口Serial0上应用规则的情况。

Quidway#show access-list interface serial 0

Serial0:

access-list filtering In-bound packets : 120

access-list filtering Out-bound packets: None

【相关命令】

access-list

八、show firewall 显示防火墙状态。

show firewall

【命令模式】

特权用户模式

【使用指南】

使用此命令来显示防火墙的状态,包括防火墙是否被启用,启用防火墙时是否采用了时间段包过滤及防火墙的一些统计信息。

【举例】

显示防火墙状态。

Quidway#show firewall

Firewall is enable, default filtering method is 'permit'.

TimeRange packet-filtering enable.

InBound packets: None;

OutBound packets: 0 packets, 0 bytes, 0% permitted,

0 packets, 0 bytes, 0% denied,

2 packets, 104 bytes, 100% permitted defaultly,

0 packets, 0 bytes, 100% denied defaultly.

From 00:13:02 to 06:13:21: 0 packets, 0 bytes, permitted.

【相关命令】

firewall

九、show isintr 显示当前时间是否在时间段之内。

show isintr

【命令模式】

特权用户模式

【使用指南】

使用此命令来显示当前时间是否在时间段之内。

【举例】

显示当前时间是否在时间段之内。

Quidway#show isintr

It is NOT in time ranges now.

【相关命令】

timerange,settr

十、show timerange 显示时间段包过滤的信息。

show timerange

【命令模式】

特权用户模式

【使用指南】

使用此命令来显示当前是否允许时间段包过滤及所设置的时间段。

【举例】

显示时间段包过滤的信息。

Quidway#show timerange

TimeRange packet-filtering enable.

beginning of time range:

01:00 - 02:00

03:00 - 04:00

end of time range.

【相关命令】

timerange,settr

十一、timerange 启用或禁止时间段包过滤功能。

timerange { enable | disable }

【参数说明】

enable 表示启用时间段包过滤。

disable 表示禁止采用时间段包过滤。

【缺省情况】

系统缺省为禁止时间段包过滤功能。

【命令模式】

全局配置模式

【使用指南】

使用此命令来启用或禁止时间段包过滤功能,可以通过show firewall命令看到,也可以通过show timerange命令看到配置结果。在时间段包过滤功能被启用后,系统将根据当前的时间和设置的时间段来确定使用时间段内(特殊)的规则还是时间段外(普通)的规则。系统查询时间段的精确度为1分钟。所设置的时间段的两个端点属于时间段之内。

【举例】

启用时间段包过滤功能。

Quidway(config)#timerange enable

【相关命令】

settr,show timerange

2004-10-10 10:59 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
??????
网普成员





积分 100
发贴 99
注册 2004-10-10
状态 离线
#7  

透析ICMP协议(一): 协议原理
篇文章原创自bugfree/CSDN
平台: VC6 Windows XP


ICMP简介:
--------

对于熟悉网络的人来说, ICMP是再熟悉不过了. 它同IP协议一样工作在ISO模型的网络层
, 它的全称是: Internet Control Message Protocal. 其在网络中的主要作用是:
- 主机探测
- 路由维护
- 路由选择
- 流量控制

我主要围绕主机探测来讲解如下的几篇文章:
- 透析ICMP协议(一): 基础知识
协议原理
- 透析ICMP协议(二): 函数简介
Windows Socket 简介
- 透析ICMP协议(三): 牛刀初试之一
应用篇ping(ICMP.dll)
- 透析ICMP协议(四): 牛刀初试之二
应用篇ping(RAW Socket)
- 透析ICMP协议(五):
应用篇路由追踪

对于主机探测来说有很多方法,主机某些服务的BANNER,一些使用的应用程序,或者使
用工具来检测主机,如NMAP,在WEB上有www.netcraft.com来简单的估测主机。下面所讲
的是使用ICMP协议来探测主机,主要也是可以了解ICMP这个协议,这里最主要的也是将
这个ICMP协议,

首先我来讲一下主机探测用到的ICMP报文我没有一一讲全部报文,详细请参见RFC792协
议)

1. 回送或回送响应

  我们使用一个ICMPECHO数据包来探测主机地址是否存活(当然在主机没有被配置为
过滤ICMP形式),通过简单的发送一个ICMPECHO(Type 8)数据包到目标主机,如果ICMPE
CHOReply(ICMPtype0)数据包接受到,说明主机是存活状态。  如果没有就可以初步判
断主机没有在线或者使用了某些过滤设备过滤了ICMP的REPLY。这种机制就是我们通常所
用的ping命令来检测目标主机是否可以ping到.

回送消息的源地址是回送响应消息的目的地址。若要形成一个回送响应消息,应该将源
和目的地址交换,将类型代码更改为0,重新计算机校验码。

下面是这个报文的格式:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+-

类型:
8代表回送消息;
0代表回送响应消息。
代码:0
校验码:
16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零
。这些零在 以后会被校验码取代。
标识符:如果代码=0,帮助匹配回送和回送响应的代码可以为0。
序列码:如果代码=0,帮助匹配回送和回送响应的序列码可以为0。
说明:
回送消息中接收到的消息应该在回送响应消息中返回。标识符和序列码由回送发送者使
用帮助匹配
回送请求的响应。代码: 从主机或网关接收0


2. 超时报文

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

类型:11
代码:
0 = 传送超时;
1 = 分段级装超时。
校验码:
16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零

这些零在以后会被校验码取代。
Internet包头+64位源数据报数据:
Internet包头加上源数据的头64位而得。此数据用于主机匹配信息到相应的进程。
如果高层协议使用端口号,应该假设其在源数据的头64个字节之中。
说明:
如果网关在处理数据报时发现生存周期域为零,此数据报必须抛弃。网关同时必须通过

时信息通知源主机。如果主机在组装分段的数据报时因为丢失段未能在规定时间内组装
数据,
此数据报必须抛弃。网关发送超时信息。
如果段零不可用则不用发送超时信息。
代码0由网关发送,代码1由主机发送

2004-10-10 10:59 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
??????
网普成员





积分 100
发贴 99
注册 2004-10-10
状态 离线
#8  

3. 目标主机不可达报文

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

类型:3
代码:
0 = 网络不可达;
1 = 主机不可达;
2 = 协议不可用;
3 = 端口不可达;
4 = 需要段和DF设置;
5 = 源路由失败;

校验码:
16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零

这些零在以后会被校验码取代。
Internet包头+源数据报:
Internet包头加上源数据的头64位而得。此数据用于主机匹配信息到相应的进程。
如果高层协议使用端口号,应该假设其在源数据的头64个字节之中。
说明:
相应于网关的路由表,如果在目的域中指定的网络不可达,如网络距离为无限远,网关
会向发送
源数据的主机发送目的不可达消息。而且,在一些网络中,网关有能力决定目的主机是
否可达。
如果目的地不可达,它将向发送源数据的主机发送不可达信息。
在目的主机,如果IP模块因为指定的协议模块和进程端口不可用而不能提交数据报,目
的主机将
向发送源数据的主机发送不可达信息。

另外一种情况是当数据报必须被分段传送,而“不可分段”位打开,在这种情况下,网
关必须抛弃
此数据报,并向向发送源数据的主机发送不可达信息。

代码0,1,4和5由网关发送,而代码2和3由主机发送。

链接:
-------
我的其它文章,<<透析ICMP协议>>, 和其它文章参见:
http://www.csdn.net/develop/author/netauthor/bugfree/

透析ICMP协议(五): 应用篇路由追踪
透析ICMP协议(四): 牛刀初试之二 应用篇ping(RAW Socket)
透析ICMP协议(三): 牛刀初试之一 应用篇ping(ICMP.dll)
透析ICMP协议(二): Windows Socket 简介
透析ICMP协议(一): 协议原理


__________________
QQ:85731095



向版主反映这个帖子 | IP: 已记录

10-19-2003 09:20           


  
yxq_njupt
正式会员

注册日期: Oct 2003
来自: 安徽
发帖数: 206
2
这篇文章出自bugfree/CSDN
平台: VC6 Windows XP

简介:
-------
Windows 的Socket函数有许多, 我没有做详细介绍, 这里的函数都是简要说明其用途,
详细用法请参考MSDN.
这里的主要目的是为了后面的三个应用服务.

函数说明:
---------

WSAStartup函数
初始化Winsock
[声明]
int WSAStarup(WORD wVersionRequested,LPWSADATA lpWSAData);
[参数]
wVersionRequested - 要求使用Winsock的最低版本号
lpWSAData - Winsock的详细资料
[返回值]
当函数成功调用时返回0
失败时返回非0的值
---

socket函数
用于生成socket(soket Descriptor)
[声明]
SOCKET socket(int af,int type,int protocol);
[参数]
af - 地址家族(通常使用:AF_INET)
type - socket的种类
SOCK_STREAM : 用于TCP协议
SOCK_DGRAM : 用于UDP协议
protocol - 所使用的协议
[返回值]
当函数成功调用时返回一个新的SOCKET(Socket Descriptor)
失败时返回INVALID_SOCKET.
---

inet_addr函数
地址转换, 把"A.B.C.D"的IP地址转换为32位长整数
[声明]
unsigned long inet_addr ( const char FAR *cp );
[参数]
cp - 指向IP地址字符串的指针
[返回值]
当函数成功调用时返回用32位整数表示的IP地址
失败时返回INADDR_NONE.
---

gethostbyname函数
从主机名获取主机信息.
[声明]
struct hostent FAR * gethostbyname ( const char FAR *name );
[参数]
name - 指向主机名字符串的指针
[返回值]
当函数成功调用时返回主机信息
失败时返回NULL(空值)

---

recv函数
利用Socket进行接受数据.
[声明]
int recv ( SOCKET s , char FAR *buf , int len , int flags );
[参数]
s - 指向用Socket函数生成的Socket Descriptor
buf - 接受数据的缓冲区(数组)的指针
len - 缓冲区的大小
flag - 调用方式(MSG_PEEK 或 MSG_OOB)
[返回值]
成功时返回收到的字节数.
如果连接被中断则返回0
失败时返回 SOCKET_ERROR

---

sendto函数
发送数据.
[声明]
int sendto ( SOCKET s , const char FAR *buf , int len , int flags , const
struct sockaddr FAR *to , int token );
[参数]
s - 指向用Socket函数生成的Socket Descriptor
buf - 接受数据的缓冲区(数组)的指针
len - 缓冲区的大小
flag - 调用方式(MSG_DONTROUTE , MSG_OOB)
to - 指向发送方SOCKET地址的指针
token - 发送方SOCKET地址的大小
[返回值]
成功时返回已经发送的字节数.
失败时返回SOCKET_ERROR


篇文章出自:http://tangentsoft.net/wskfaq/examples/dllping.html
翻译: bugfree/CSDN, 对原始代码加了些注释
平台: VC6 Windows XP

原理简介:
--------
这个例子演示了应用微软的ICMP.DLL怎样"ping"另一台机器. 这个DLL是没有文档话的发
送ICMP回送包API接口, 也称为"pings," 就像潜水员对声纳信号的术语一样. 这段代码
出自一个被一个名叫MarkG的家伙的GUI程序, 他的网页已经消失了.

ICMP.DLL API 现在在Windows平台上与微软的Winsocks工作的很好, 但是微软说更好的
产品一出来他们将替换它. 微软说这个自从Windows 95时代就在用, 这些功能在在Windo
ws 2000上仍然存在.

For more information on the ICMP.DLL API, check out sockets.com's ICMP API
page.
更详细的ICMP.DLL API的信息到sockets.com的ICMP API网页获取.


具体实现:
--------
// Borland C++ 5.0: bcc32.cpp ping.cpp
// Visual C++ 5.0: cl ping.cpp wsock32.lib
//
// This sample program is hereby placed in the public domain.

#include
#include
#include
#include "icmpdefs.h"

==================ping的实现部分==================
int doit(int argc, char* argv[])
{//[bugfree] 建议将这个argc和argv的处理拿到main函数中
// 检查命令行参数
if (argc < 2) {
cerr << "usage: ping " << endl;
return 1;
}

// 装载ICMP.DLL连接库
HINSTANCE hIcmp = LoadLibrary("ICMP.DLL");
if (hIcmp == 0) {
cerr << "Unable to locate ICMP.DLL!" << endl;
return 2;
}

// 查找给定机器的IP地址信息
struct hostent* phe;
if ((phe = gethostbyname(argv[1])) == 0) {
cerr << "Could not find IP address for " << argv[1] << endl;
return 3;
}

// 定义函数三个指针类型
typedef HANDLE (WINAPI* pfnHV)(VOID);
typedef BOOL (WINAPI* pfnBH)(HANDLE);
typedef DWORD (WINAPI* pfnDHDPWPipPDD)(HANDLE, DWORD, LPVOID, WORD,
PIP_OPTION_INFORMATION, LPVOID, DWORD, DWORD); // evil, no?
//定义三个指针函数
pfnHV pIcmpCreateFile;
pfnBH pIcmpCloseHandle;
pfnDHDPWPipPDD pIcmpSendEcho;

//从ICMP.DLL中得到函数入口地址
pIcmpCreateFile = (pfnHV)GetProcAddress(hIcmp, "IcmpCreateFile");
pIcmpCloseHandle = (pfnBH)GetProcAddress(hIcmp, "IcmpCloseHandle");
pIcmpSendEcho = (pfnDHDPWPipPDD)GetProcAddress(hIcmp, "IcmpSendEcho");
if ((pIcmpCreateFile == 0) || (pIcmpCloseHandle == 0) ||
(pIcmpSendEcho == 0)) {
cerr << "Failed to get proc addr for function." << endl;
return 4;
}

// 打开ping服务
HANDLE hIP = pIcmpCreateFile();
if (hIP == INVALID_HANDLE_VALUE) {
cerr << "Unable to open ping service." << endl;
return 5;
}

// 构造ping数据包
char acPingBuffer[64];
memset(acPingBuffer, '\xAA', sizeof(acPingBuffer));
PIP_ECHO_REPLY pIpe = (PIP_ECHO_REPLY)GlobalAlloc( GMEM_FIXED |
GMEM_ZEROINIT,
sizeof(IP_ECHO_REPLY) + sizeof(acPingBuffer));
if (pIpe == 0) {
cerr << "Failed to allocate global ping packet buffer." << endl;
return 6;
}
pIpe->Data = acPingBuffer;
pIpe->DataSize = sizeof(acPingBuffer);

// 发送ping数据包
DWORD dwStatus = pIcmpSendEcho(hIP, *((DWORD*)phe->h_addr_list[0]),
acPingBuffer, sizeof(acPingBuffer), NULL, pIpe,
sizeof(IP_ECHO_REPLY) + sizeof(acPingBuffer), 5000);
if (dwStatus != 0) {
cout << "Addr: " <<
int(LOBYTE(LOWORD(pIpe->Address))) << "." <<
int(HIBYTE(LOWORD(pIpe->Address))) << "." <<
int(LOBYTE(HIWORD(pIpe->Address))) << "." <<
int(HIBYTE(HIWORD(pIpe->Address))) << ", " <<
"RTT: " << int(pIpe->RoundTripTime) << "ms, " <<
"TTL: " << int(pIpe->Options.Ttl) << endl;
}
else {
cerr << "Error obtaining info from ping packet." << endl;
}

// 关闭,回收资源
GlobalFree(pIpe);
FreeLibrary(hIcmp);
return 0;
}
==================主函数==================
int main(int argc, char* argv[])
{
WSAData wsaData;
if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) {
return 255;
}

int retval = doit(argc, argv);

WSACleanup();
return retval;
}

==================头文件==================
icmpdefs.h
//ICMP.DLL 函数中需要的结构


typedef struct {
unsigned char Ttl; // Time To Live
unsigned char Tos; // Type Of Service
unsigned char Flags; // IP header flags
unsigned char OptionsSize; // Size in bytes of options
data
unsigned char *OptionsData; // Pointer to options data
} IP_OPTION_INFORMATION, * PIP_OPTION_INFORMATION;

typedef struct {
DWORD Address; // Replying address
unsigned long Status; // Reply status
unsigned long RoundTripTime; // RTT in milliseconds
unsigned short DataSize; // Echo data size
unsigned short Reserved; // Reserved for system use
void *Data; // Pointer to the echo data
IP_OPTION_INFORMATION Options; // Reply options
} IP_ECHO_REPLY, * PIP_ECHO_REPLY;

2004-10-10 11:00 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
茱莉娅
THE BODY SHOP美容顾问

茱莉娅美体小铺


积分 100
发贴 99
注册 2009-5-21
来自 茱莉娅美体小铺
状态 离线
#8  赞助商信息The body shop

茱莉娅美体小铺
茱莉娅美体小铺淘宝店
茱莉娅美体小铺
2004-10-10 11:00 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转:  




Powered by Discuz! 2.5 © 2001-2005 Comsenz Technology Ltd.
Processed in 0.011538 second(s), 7 queries, Gzip enabled
------------------------------------------------------------------------------
本论坛属网普科技交流与技术支持论坛!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
美国主机, 美国虚拟主机, cPanel+PHP+Mysql+Ftp+Email+Zend+GD2+国际域名支持
技术支持 QQ: 126818 EMail & MSN: support[AT]netpu.net
[ 联系我们 ] - [ 网普科技 ]