网络技术综合
[size=4]代理服务器(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的应用都可以通过代理方式实现。
下面我选择了几种流行的代理服务器软件进行介绍。
二、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软件的最新信息,可以浏览网址:[url]http://www.wingate.com.cn/[/url]。
三、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软件的最新信息,可以与微软公司联系,或者浏览网址:[url]http://www.microsoft.com/Proxy/[/url]。
四、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设置下面,填写你的控制列表。例如对站点[url]www.cnn.com[/url],允许BOSS 组访问,那么选择Allow to [BOSS]组,则非BOSS组的成员均不可以访问[url]www.cnn.com[/url]。目标的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协议就可以了。
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的“后门”到你的计算机里了:)
路由器防火墙配置命令
一、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 表示缺省过滤属性设置为“禁止”。
【缺省情况】
在防火墙开启的情况下,报文被缺省允许通过。
【命令模式】
全局配置模式
【使用指南】
当在接口应用的规则没有一个能够判断一个报文是否应该被允许还是禁止时,缺省的过滤属性将起作用;如果缺省过滤属性是“允许”,则报文可以通过,否则报文被丢弃。
【举例】
设置缺省过滤属性为“允许”。
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
透析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上有[url]www.netcraft.com[/url]来简单的估测主机。下面所讲
的是使用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由主机发送。
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协议>>, 和其它文章参见:
[url]http://www.csdn.net/develop/author/netauthor/bugfree/[/url]
透析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
篇文章出自:[url]http://tangentsoft.net/wskfaq/examples/dllping.html[/url]
翻译: 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;
win2000系统进程详解
最基本的系统进程
(也就是说,这些进程是系统运行的基本条件,有了这些进程,系统就能正常运行):
smss.exe Session Manager
csrss.exe 子系统服务器进程
winlogon.exe 管理用户登录
services.exe 包含很多系统服务
lsass.exe 管理 IP 安全策略以及启动 ISAKMP/Oakley (IKE) 和 IP 安全驱动程序。(系统服务)
产生会话密钥以及授予用于交互式客户/服务器验证的服务凭据(ticket)。(系统服务)
svchost.exe 包含很多系统服务
svchost.exe
SPOOLSV.EXE 将文件加载到内存中以便迟后打印。(系统服务)
explorer.exe 资源管理器
internat.exe 托盘区的拼音图标
附加的系统进程(这些进程不是必要的,你可以根据需要通过服务管理器来增加或减少):
mstask.exe 允许程序在指定时间运行。(系统服务)
regsvc.exe 允许远程注册表操作。(系统服务)
winmgmt.exe 提供系统管理信息(系统服务)。
inetinfo.exe 通过 Internet 信息服务的管理单元提供 FTP 连接和管理。(系统服务)
tlntsvr.exe 允许远程用户登录到系统并且使用命令行运行控制台程序。(系统服务)
允许通过 Internet 信息服务的管理单元管理 Web 和 FTP 服务。(系统服务)
tftpd.exe 实现 TFTP Internet 标准。该标准不要求用户名和密码。远程安装服务的一部分。(系统服务)
termsrv.exe 提供多会话环境允许客户端设备访问虚拟的 Windows 2000 Professional 桌面会话以及运行在服务器上的基
于 Windows 的程序。(系统服务)
dns.exe 应答对域名系统(DNS)名称的查询和更新请求。(系统服务)
以下服务很少会用到,上面的服务都对安全有害,如果不是必要的应该关掉
tcpsvcs.exe 提供在 PXE 可远程启动客户计算机上远程安装 Windows 2000 Professional 的能力。(系统服务)
支持以下 TCP/IP 服务:Character Generator, Daytime, Discard, Echo, 以及 Quote of the Day。(系统服务)
ismserv.exe 允许在 Windows Advanced Server 站点间发送和接收消息。(系统服务)
ups.exe 管理连接到计算机的不间断电源(UPS)。(系统服务)
wins.exe 为注册和解析 NetBIOS 型名称的 TCP/IP 客户提供 NetBIOS 名称服务。(系统服务)
llssrv.exe License Logging Service(system service)
ntfrs.exe 在多个服务器间维护文件目录内容的文件同步。(系统服务)
RsSub.exe 控制用来远程储存数据的媒体。(系统服务)
locator.exe 管理 RPC 名称服务数据库。(系统服务)
lserver.exe 注册客户端许可证。(系统服务)
dfssvc.exe 管理分布于局域网或广域网的逻辑卷。(系统服务)
clipsrv.exe 支持“剪贴簿查看器”,以便可以从远程剪贴簿查阅剪贴页面。(系统服务)
msdtc.exe 并列事务,是分布于两个以上的数据库,消息队列,文件系统,或其它事务保护资源管理器。(系统服务)
faxsvc.exe 帮助您发送和接收传真。(系统服务)
cisvc.exe Indexing Service(system service)
dmadmin.exe 磁盘管理请求的系统管理服务。(系统服务)
mnmsrvc.exe 允许有权限的用户使用 NetMeeting 远程访问 Windows 桌面。(系统服务)
netdde.exe 提供动态数据交换 (DDE) 的网络传输和安全特性。(系统服务)
smlogsvc.exe 配置性能日志和警报。(系统服务)
rsvp.exe 为依赖质量服务(QoS)的程序和控制应用程序提供网络信号和本地通信控制安装功能。(系统服务)
RsEng.exe 协调用来储存不常用数据的服务和管理工具。(系统服务)
RsFsa.exe 管理远程储存的文件的操作。(系统服务)
grovel.exe 扫描零备份存储(SIS)卷上的重复文件,并且将重复文件指向一个数据存储点,以节省磁盘空间。(系统服务)
SCardSvr.exe 对插入在计算机智能卡阅读器中的智能卡进行管理和访问控制。(系统服务)
snmp.exe 包含代理程序可以监视网络设备的活动并且向网络控制台工作站汇报。(系统服务)
snmptrap.exe 接收由本地或远程 SNMP 代理程序产生的陷阱消息,然后将消息传递到运行在这台计算机上 SNMP 管理程序
。(系统服务)
UtilMan.exe 从一个窗口中启动和配置辅助工具。(系统服务)
msiexec.exe 依据 .MSI 文件中包含的命令来安装、修复以及删除软件。(系统服务)
详细说明:
win2k运行进程
Svchost.exe
Svchost.exe文件对那些从动态连接库中运行的服务来说是一个普通的主机进程名。Svhost.exe文件定位
在系统的%systemroot%\system32文件夹下。在启动的时候,Svchost.exe检查注册表中的位置来构建需要
加载的服务列表。这就会使多个Svchost.exe在同一时间运行。每个Svchost.exe的回话期间都包含一组服务,
以至于单独的服务必须依靠Svchost.exe怎样和在那里启动。这样就更加容易控制和查找错误。
Svchost.exe 组是用下面的注册表值来识别。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost
每个在这个键下的值代表一个独立的Svchost组,并且当你正在看活动的进程时,它显示作为一个单独的
例子。每个键值都是REG_MULTI_SZ类型的值而且包括运行在Svchost组内的服务。每个Svchost组都包含一个
或多个从注册表值中选取的服务名,这个服务的参数值包含了一个ServiceDLL值。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Service
更多的信息
为了能看到正在运行在Svchost列表中的服务。
开始-运行-敲入cmd
然后在敲入 tlist -s (tlist 应该是win2k工具箱里的冬冬)
Tlist 显示一个活动进程的列表。开关 -s 显示在每个进程中的活动服务列表。如果想知道更多的关于
进程的信息,可以敲 tlist pid。
Tlist 显示Svchost.exe运行的两个例子。
0 System Process
8 System
132 smss.exe
160 csrss.exe Title:
180 winlogon.exe Title: NetDDE Agent
208services.exe
Svcs: AppMgmt,Browser,Dhcp,dmserver,Dnscache,Eventlog,lanmanserver,LanmanWorkstation,LmHosts,Messenger,PlugPlay,ProtectedStorage,seclogon,TrkWks,W32Time,Wmi
220 lsass.exe Svcs: Netlogon,PolicyAgent,SamSs
404 svchost.exe Svcs: RpcSs
452 spoolsv.exe Svcs: Spooler
544 cisvc.exe Svcs: cisvc
556 svchost.exe Svcs: EventSystem,Netman,NtmsSvc,RasMan,SENS,TapiSrv
580 regsvc.exe Svcs: RemoteRegistry
596 mstask.exe Svcs: Schedule
660 snmp.exe Svcs: SNMP
728 winmgmt.exe Svcs: WinMgmt
852 cidaemon.exe Title: OleMainThreadWndName
812 explorer.exe Title: Program Manager
1032 OSA.EXE Title: Reminder
1300 cmd.exe Title: D:\WINNT5\System32\cmd.exe - tlist -s
1080 MAPISP32.EXE Title: WMS Idle
1264 rundll32.exe Title:
1000 mmc.exe Title: Device Manager
1144 tlist.exe
在这个例子中注册表设置了两个组。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost:
netsvcs: Reg_Multi_SZ: EventSystem Ias Iprip Irmon Netman Nwsapagent Rasauto Rasman Remoteaccess SENS Sharedaccess Tapisrv Ntmssvc
rpcss :Reg_Multi_SZ: RpcSs
smss.exe
csrss.exe
这个是用户模式Win32子系统的一部分。csrss代表客户/服务器运行子系统而且是一个基本的子系统
必须一直运行。csrss 负责控制windows,创建或者删除线程和一些16位的虚拟MS-DOS环境。
explorer.exe
这是一个用户的shell(我实在是不知道怎么翻译shell),在我们看起来就像任务条,桌面等等。这个
进程并不是像你想象的那样是作为一个重要的进程运行在windows中,你可以从任务管理器中停掉它,或者重新启动。
通常不会对系统产生什么负面影响。
internat.exe
这个进程是可以从任务管理器中关掉的。
internat.exe在启动的时候开始运行。它加载由用户指定的不同的输入点。输入点是从注册表的这个位置
HKEY_USERS\.DEFAULT\Keyboard Layout\Preload 加载内容的。
internat.exe 加载“EN”图标进入系统的图标区,允许使用者可以很容易的转换不同的输入点。
当进程停掉的时候,图标就会消失,但是输入点仍然可以通过控制面板来改变。
lsass.exe
这个进程是不可以从任务管理器中关掉的。
这是一个本地的安全授权服务,并且它会为使用winlogon服务的授权用户生成一个进程。这个进程是
通过使用授权的包,例如默认的msgina.dll来执行的。如果授权是成功的,lsass就会产生用户的进入
令牌,令牌别使用启动初始的shell。其他的由用户初始化的进程会继承这个令牌的。
mstask.exe
这个进程是不可以从任务管理器中关掉的。
这是一个任务调度服务,负责用户事先决定在某一时间运行的任务的运行。
smss.exe
这个进程是不可以从任务管理器中关掉的。
这是一个会话管理子系统,负责启动用户会话。这个进程是通过系统进程初始化的并且对许多活动的,
包括已经正在运行的Winlogon,Win32(Csrss.exe)线程和设定的系统变量作出反映。在它启动这些
进程后,它等待Winlogon或者Csrss结束。如果这些过程时正常的,系统就关掉了。如果发生了什么
不可预料的事情,smss.exe就会让系统停止响应(就是挂起)。
spoolsv.exe
这个进程是不可以从任务管理器中关掉的。
缓冲(spooler)服务是管理缓冲池中的打印和传真作业。
service.exe
这个进程是不可以从任务管理器中关掉的。
大多数的系统核心模式进程是作为系统进程在运行。
System Idle Process
这个进程是不可以从任务管理器中关掉的。
这个进程是作为单线程运行在每个处理器上,并在系统不处理其他线程的时候分派处理器的时间。
winlogon.exe
这个进程是管理用户登录和推出的。而且winlogon在用户按下CTRL+ALT+DEL时就激活了,显示安全对话框。
winmgmt.exe
winmgmt是win2000客户端管理的核心组件。当客户端应用程序连接或当管理程序需要他本身的服务时这个进程初始化
taskmagr.exe
这个进程呀,哈哈,就是任务管理器了
子网掩码及其应用
在TCP/IP协议中,SUBNET MASKS(子网掩码)的作用是用来区分网络上的主机是否在同一网络取段内。在大型网络中,CLASS A的SUBNET MASKS为255.0.0.0, CLASS B的SUBNET MASKS为255.255.0.0,CLASS C的SUBNET MASKS为255.255.255.0。
假如某台主机的SUBNET MASKS为IP地址为202.119.115.78,它的SUBNET MASKS为255.255.255.0。将这两个数据作AND运算后,所得出的值中的非0的BYTE部分即为NETWORK ID 。运算步骤如下:
202.119.115.78的二进制值为:
11001010.01110111.01110011.01001110
255.255.255.0的二进制值为:
11111111.11111111.11111111.00000000
AND后的结果为:
11001010.01110111.01110011.00000000
转为二进制后即为:
202.119.115.0
它就是NETWORK ID,在IP地址中剩下的即为HOST ID,即为78,这样当有另一台主机 的IP 地址为202.119.115.83,它的SUBNET MASKS也是255.255.255.0,则其NETWORK ID 为202.119.115,HOST ID为83,因为这两台主机的NETWORK ID都是202.119.115,因此,这两台主机在同一网段内。
但是,在实际应用中,可能会有多个分布与各地的网络,而且,每个网络的主机数量并不很多,如果申请多个NETWORK ID,会造成IP资源的浪费,而且很不经济,如果我们在SUBNET MASKS上动一下手脚,可以在只申请一个NETWORK ID的基础上解决这个问题。
比如,我们有三个不同的子网,每个网络的HOST数量各为20、25和50,下面依次称为甲、乙和丙网,但只申请了一个NETWORK ID 就是202.119.115。首先我们把甲和乙网的SUBNET MASKS改为255.255.255.224,224的二进制为11100000,即它的SUBNET MASKS为:
11111111.11111111.11111111.11100000
这样,我们把HOST ID的高三位用来分割子网,这三位共有000、001、010、011、100、 101、110、111八种组合,除去000(代表本身)和111(代表广播),还有六个组合,也就是可提供六个子网,它们的IP地址分别为:(前三个字节还是202.119.115)
00100001~00111110 即33~62为第一个子网
01000001~01011110 即65~94为第二个子网
01100001~01111110 即97~126为第三个子网
10000001~10011110 即129~158为第四个子网
10100001~10111110 即161~190为第五个子网
11000001~11011110 即193~222为第六个子网
选用161~190段给甲网,193~222段给乙网,因为各个子网都支持30台主机,足以应付甲网和乙网20台和25台的需求。
再来看丙网,由于丙网有50台主机,按上述分割方法无法满足它的IP需求,我们 可以将它的SUBNET MASKS设为255.255.255.192, 由于192的二进制值为11000000,按上述方法,它可以划分为两个子网,IP地址为:
01000001~01111110 即65~126为第一个子网
10000001~10111110 即129~190为第二个子网
这样每个子网有62个IP可用,将65~126分配丙网,多个子网用一个NETWORK ID 即告实现。
如果将子网掩码设置过大,也就是说子网范围扩大。那么根据子网寻径规则,很可能发往和本地机不在同一子网内的目的机的数据,会因为错误的相与结果而认为是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃。数据不能正确到达目的机,导致网络传输错误。如果将子网掩码设置得过小,那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负担,造成网络效率下降。因此,任意设置子网掩码是不对的,应该根据网络管理部门的规定进行设置。
随着IP地址资源的日趋枯竭,可供分配的IP地址越来越少,往往一个拥 有几百台计算机规模的网络只能得到区区几个IP地址,于是,许多人开始采用其他技术来扩展IP空间。
1.子网掩码设置
如果你所分配的IP地址仅能满足对主机的需求,但远不能满足你欲在局 域网中再建若干子网的需要,设置子网掩码就是你不得不采取的措施了。
子网掩码同样也以四个字节来表示,用来区分IP地址的网络号和主机号, 默认子网掩码如下表所示:
子网掩码(以十进制表示)
A类 255.0.0.0
B类 255.255.0.0
C类 255.255.255.0
当IP地址与子网掩码相与时,非零部分即被确认为网络号。
假如我们将子网掩码中第四字节最高位起的某些位由0修改成1,使本来应当属于主机号的 部分改变成为网络号,这样就实现了我们划分子网的目的。例如你得到了一个C类网络地址198.189.98,按常规,你所有的设备从198.189.98.0到198.189.98.254都将处于同一网络之中,但如果你需要将自己 的网络划分成5个子网以便管理,那就必须修改子网掩码255.255.255.0,将此 掩码的第四个字节中的前三位再拿出来充当子网掩码,即将第四字节的00000000 修改成11100000(十进制数为224),故应当将子网掩码设置为255.255.255.224。这样我们有001、010、011、100、101、110六种方式与之相与得到不同的网络号(除去000和111作为保留地址不能使用),各子网的前三个字节仍然是198.189.98。可以知道:如子网掩码的位数越多,能划分的子网数也就越多,但 是每个子网的主机数就会越少。子网掩码的划分设置也有一个缺点:划分的子网越多,损失的IP地址也会越多。因为每个子网都会保留全0或全1的两个地址而不能使用。
2.动态IP地址设置
DHCP(DynamicHostConfigurationProtocol)动态主机配置协议是一种 多个工作站共享IP地址的方法。当我们分配到的IP地址数目远小于一个网络工作站的数目时,如果为每个设备都分配一个固定的IP地址,则显然有一部分计 算机将不能连入网络。DHCP为我们提供了一个较好的解决方法,其前提条件是其中每一个设备都不是随时都需要连接入网,并且同一时刻上网的设备不会很多。动态IP地址,顾名思义就是每一个设备所取得的IP地址是非固定的,即计算机连入网络时自动申请取得一个合法的IP地址,断开网络时自动归还,以便其他计算机使用。这样,我们可以用较少的IP地址构建较大的网络,也可以 增加网络工作站的可移性,如果一台主机从一个子网移动到另一个子网时,由于网络号的不同将修改该计算机的IP地址,否则无法与其他主机通信,而如果我 们采用动态IP地址,就会减少网络管理的复杂性。现在DHCP已非常流行,所支持的软件很多,且可以运行于不同机器和平台。目前拨号上Internet的用户就基本上采用这种方法。
3.非路由地址
在IP地址范围内,IANA(InternetAssignedNumbersAuthority)将一部 分地址保留作为私人IP地址空间,专门用于内部局域网使用,这些地址如下表:
类 IP地址范围 网络数
A 10.0.0.0---10.255.255.255 1
B 172.16.0.0---172.31.255.255 16
C 192.168.0.0---192.168.255.255 255
这些地址是不会被Internet分配的,因此它们在Internet上也从来不会被路由,虽然它们不能直接和Internet网连接,但仍旧可以被用来和Internet通讯,我们可以根据需要来选用适当的地址类,在内部局域网中大胆地将这些地址当作公用IP地址一样地使用。在Internet上,那些不需要与Internet通讯的设备,如打印机、可管理集线器等也可以使用这些地址,以节省IP地址资源。
4.代理服务器
代理服务器其实是Internet上的一台主机设备,它有一个固定的IP地址,当你需要上Internet时,就向该服务器提出请求,代理服务器接受请求并为你 建立连接,然后将你所需要的服务返回信息通知你,所有的数据信息和通讯处理 都是通过代理服务器的IP地址来完成。这种情况下,我们局域网内部的主机就应使用非路由地址,这样,即能保证内部主机之间的通讯,又能拒绝外来网络的 直接访问请求。
代理服务器具有以下两个优点:一是如果你请求的数据已被同一网段上的其他人请求过了,那么大多数代理服务器都能从Cache中调用这些数据直接传给你,避免重新连接的时间和带宽;二是代理服务器可以保护你的内部网络不受入侵,也可以设置对某些主机的访问能力进行必要限制,这实际上起着代理防火墙 的作用。
支持代理服务器的软件也非常多,WinGate、MsProxy等都是非常流行的代理服务器软件。在中国,代理服务器的使用也越来越广泛,中国公众多媒体通讯网(169)其实就是一个巨大的使用代理服务器的例子。
5.地址翻译
所谓地址翻译实际上是路由器中的一个数据包处理过程。当数据包通过路由器时,地址翻译过程将其中的内部私有IP地址解析出来,将其翻译为一个合法的IP地址。地址翻译过程可以按预先定义好的地址表一一映射翻译,也可以将多个内部私有地址翻译为一个外部合法IP地址。由于网络内每个设备都有一个内部稳定的IP地址,所以这种方法具有较 强的网络安全控制性能。
磁盘阵列技术
磁盘阵列(DiscArray)是由许多台磁盘机或光盘机按一定的规则,如分条(Striping)、分块(Declustering)、交叉存取(Interleaving)等组成一个快速,超大容量的外存储器子系统。它在阵列控制器的控制和管理下,实现快速,并行或交叉存取,并有较强的容错能力。从用户观点看,磁盘阵列虽然是由几个、几十个甚至上百个盘组成,但仍可认为是一个单一磁盘,其容量可以高达几百~上千千兆字节,因此这一技术广泛为多媒体系统所欢迎。
盘阵列的全称是:RedundanArrayofInexpensiveDisk,简称RAID技术。它是1988年由美国加州大学Berkeley分校的DavidPatterson教授等人提出来的磁盘冗余技术。从那时起,磁盘阵列技术发展得很快,并逐步走向成熟。现在已基本得到公认的有下面八种系列。
1.RAID0(0级盘阵列)
RAID0又称数据分块,即把数据分布在多个盘上,没有容错措施。其容量和数据传输率是单机容量的N倍,N为构成盘阵列的磁盘机的总数,I/O传输速率高,但平均无故障时间MTTF(MeanTimeToFailure)只有单台磁盘机的N分之一,因此零级盘阵列的可靠性最差。
2.RAID1(1级盘阵列)
RAID1又称镜像(Mirror)盘,采用镜像容错来提高可靠性。即每一个工作盘都有一个镜像盘,每次写数据时必须同时写入镜像盘,读数据时只从工作盘读出。一旦工作盘发生故障立即转入镜像盘,从镜像盘中读出数据,然后由系统再恢复工作盘正确数据。因此这种方式数据可以重构,但工作盘和镜像盘必须保持一一对应关系。这种盘阵列可靠性很高,但其有效容量减小到总容量一半以下。因此RAID1常用于对出错率要求极严的应用场合,如财政、金融等领域。
3.RAID2(2级盘阵列)
RAID2又称位交叉,它采用汉明码作盘错检验,无需在每个扇区之后进行CRC(CyclicReDundancycheck)检验。汉明码是一种(n,k)线性分组码,n为码字的长度,k为数据的位数,r为用于检验的位数,故有:n=2r-1r=n-k
因此按位交叉存取最有利于作汉明码检验。这种盘适于大数据的读写。但冗余信息开销还是太大,阻止了这类盘的广泛应用。
4.RAID3(3级盘阵列)
RAID3为单盘容错并行传输阵列盘。它的特点是将检验盘减小为一个(RAID2校验盘为多个,DAID1检验盘为1比1),数据以位或字节的方式存于各盘(分散记录在组内相同扇区号的各个磁盘机上)。它的优点是整个阵列的带宽可以充分利用,使批量数据传输时间减小;其缺点是每次读写要牵动整个组,每次只能完成一次I/O。
5.RAID4(4级盘阵列)
RAID4是一种可独立地对组内各盘进行读写的阵列。其校验盘也只有一个。
RAID4和RAID3的区别是:RAID3是按位或按字节交叉存取,而RAID4是按块(扇区)存取,可以单独地对某个盘进行操作,它无需象RAID3那样,那怕每一次小I/O操作也要涉及全组,只需涉及组中两台磁盘机(一台数据盘,一台检验盘)即可。从而提高了小量数据的I/O速率。
6.RAID5(5级盘阵列)
RAID5是一种旋转奇偶校验独立存取的阵列。它和RAID1、2、3、4各盘阵列的不同点,是它没有固定的校验盘,而是按某种规则把其冗余的奇偶校验信息均匀地分布在阵列所属的所有磁盘上。于是在同一台磁盘机上既有数据信息也有校验信息。这一改变解决了争用校验盘的问题,因此DAID5内允许在同一组内并发进行多个写操作。所以RAID5即适于大数据量的操作,也适于各种事务处理。它是一种快速,大容量和容错分布合理的磁盘阵列。
7.RAID6(6级盘阵列)
RAID6是一种双维奇偶校验独立存取的磁盘阵列。它的冗余的检、纠错信息均匀分布在所有磁盘上,而数据仍以大小可变的块以交叉方式存于各盘。这类盘阵列可容许双盘出错。
8.RAID7(7级盘阵列)
RAID7是在RAID6的基础上,采用了cache技术,它使得传输率和响应速度都有较大的提高。Cache是一种高速缓冲存储器,即数据在写入磁盘阵列以前,先写入cache中。一般采用cache分块大小和磁盘阵列中数据分块大小相同,即一块cache分块对应一块磁盘分块。在写入时将数据分别写入两个独立的cache,这样即使其中有一个cache出故障,数据也不会丢失。写操作将直接在cache级响应,然后再转到磁盘阵列。数据从cache写到磁盘阵列时,同一磁道的数据将在一次操作中完成,避免了不少块数据多次写的问题,提高了速度。在读出时,主机也是直接从cache中读出,而不是从阵列盘上读取,减少与磁盘读操作次数,这样比较充分地利用了磁盘带宽。
这样cache和磁盘阵列技术的结合,弥补了磁盘阵列的不足(如分块写请求响应差等缺陷),从而使整个系统以高效、快速、大容量、高可靠以及灵活、方便的存储系统提供给用户,从而满足了当前的技术发展的需要,尤其是多媒体系统的需要。
解析磁盘阵列的关键技术
存储技术在计算机技术中受到广泛关注,服务器存储技术更是业界关心的热点。一谈到服务器存储技术,人们几乎立刻与SCSI(Small Computer Systems Interface)技术联系在一起。尽管廉价的IDE硬盘在性能、容量等关键技术指标上已经大大地提高,可以满足甚至超过原有的服务器存储设备的需求。但由于Internet的普及与高速发展,网络服务器的规模也变得越来越大。同时,Internet不仅对网络服务器本身,也对服务器存储技术提出了苛刻要求。无止境的市场需求促使服务器存储技术飞速发展。而磁盘阵列是服务器存储技术中比较成熟的一种,也是在市场上比较多见的大容量外设之一。
在高端,传统的存储模式无论在规模上,还是安全上,或是性能上,都无法满足特殊应用日益膨胀的存储需求。诸如存储局域网(SAN)等新的技术或应用方案不断涌现,新的存储体系结构和解决方案层出不穷,服务器存储技术由直接连接存储(DAS)向存储网络技术(NAS)方面扩展。在中低端,随着硬件技术的不断发展,在强大市场需求的推动下,本地化的、基于直接连接的磁盘阵列存储技术,在速度、性能、存储能力等方面不断地迈上新台阶。并且,为了满足用户对存储数据的安全、存取速度和超大的存储容量的需求,磁盘阵列存储技术也从讲求技术创新、重视系统优化,以技术方案为主导的技术推动期逐渐进入了强调工业标准、着眼市场规模,以成熟产品为主导的产品普及期。
回顾磁盘阵列的发展历程,一直和SCSI技术的发展紧密关联,一些厂商推出的专有技术,如IBM的SSA(Serial Storage Architecture)技术等,由于兼容性和升级能力不尽如人意,在市场上的影响都远不及SCSI技术广泛。由于SCSI技术兼容性好,市场需求旺盛,使得SCSI技术发展很快。从最原始5MB/s传输速度的SCSI-1,一直发展到现在LVD接口的160MB/s传输速度的Ultra 160 SCSI,320MB/s传输速度的Ultra 320 SCSI接口也将在2001年出现(见表1)。从当前市场看,Ultra 3 SCSI技术和RAID(Redundant Array of Inexpensive Disks)技术还应是磁盘阵列存储的主流技术。
SCSI技术
SCSI本身是为小型机(区别于微机而言)定制的存储接口,SCSI协议的Version 1 版本也仅规定了5MB/s传输速度的SCSI-1的总线类型、接口定义、电缆规格等技术标准。随着技术的发展,SCSI协议的Version 2版本作了较大修订,遵循SCSI-2协议的16位数据带宽,高主频的SCSI存储设备陆续出现并成为市场的主流产品,也使得SCSI技术牢牢地占据了服务器的存储市场。SCSI-3协议则增加了能满足特殊设备协议所需要的命令集,使得SCSI协议既适应传统的并行传输设备,又能适应最新出现的一些串行设备的通讯需要,如光纤通道协议(FCP)、串行存储协议(SSP)、串行总线协议等。渐渐地,“小型机”的概念开始弱化,“高性能计算机”和“服务器”的概念在人们的心目中得到强化,SCSI一度成为用户从硬件上来区分“服务器”和PC机的一种标准。
通常情况下,用户对SCSI总线的关心放在硬件上,不同的SCSI的工作模式意味着有不同的最大传输速度。如40MB/s的Ultra SCSI、160MB/s的Ultra 3 SCSI等等。但最大传输速度并不代表设备正常工作时所能达到的平均访问速度,也不意味着不同SCSI工作模式之间的访问速度存在着必然的“倍数”关系。SCSI控制器的实际访问速度与SCSI硬盘型号、技术参数,以及传输电缆长度、抗干扰能力等因素关系密切。提高SCSI总线效率必须关注SCSI设备端的配置和传输线缆的规范和质量。可以看出,Ultra 3模式下获得的实际访问速度还不到Ultra Wide模式下实际访问速度的2倍。
一般说来,选用高速的SCSI硬盘、适当增加SCSI通道上连接硬盘数、优化应用对磁盘数据的访问方式等,可以大幅度提高SCSI总线的实际传输速度。尤其需要说明的是,在同样条件下,不同的磁盘访问方式下获得的SCSI总线实际传输速度可以相差几十倍,对应用的优化是获得高速存储访问时必须关注的重点,而这却常常被一些用户所忽视。按4KB数据块随机访问6块SCSI硬盘时,SCSI总线的实际访问速度为2.74MB/s,SCSI总线的工作效率仅为总线带宽的1.7%;在完全不变的条件下,按256KB的数据块对硬盘进行顺序读写,SCSI总线的实际访问速度为141.2MB/s,SCSI总线的工作效率高达总线带宽的88%。
随着传输速度的提高,信号传输过程中的信号衰减和干扰问题显得越来越突出,终结器在一定程度上可以起到降低信号波反射,改善信号质量的作用。同时,LVD(Low-Voltage Differential)技术的应用也越来越多。LVD工作模式是和SE(Single-Ended)模式相对应的,它可以很好地抵抗传输干扰,延长信号的传输距离。同时,Ultra 2 SCSI和Ultra 3 SCSI模式也通过采用专用的双绞型SCSI电缆来提高信号传输的质量。
在磁盘阵列的概念中,大容量硬盘并不是指单个硬盘容量大,而是指将单个硬盘通过RAID技术,按RAID 级别组合成更大容量的硬盘。所以在磁盘阵列技术中,RAID技术是比较关键的,同时,根据所选用的RAID级别的不同,得到的“大硬盘”的功能也有不同。
RAID是一项非常成熟的技术,但由于其价格比较昂贵,配置也不方便,缺少相对专业的技术人员,所以应用并不十分普及。据统计,全世界75%的服务器系统目前没有配置RAID。由于服务器存储需求对数据安全性、扩展性等方面的要求越来越高,RAID市场的开发潜力巨大。RAID技术是一种工业标准,各厂商对RAID级别的定义也不尽相同。目前对RAID级别的定义可以获得业界广泛认同的只有4种,RAID 0、RAID 1、RAID 0+1和RAID 5。
RAID 0是无数据冗余的存储空间条带化,具有低成本、极高读写性能、高存储空间利用率的RAID级别,适用于Video / Audio信号存储、临时文件的转储等对速度要求极其严格的特殊应用。但由于没有数据冗余,其安全性大大降低,构成阵列的任何一块硬盘损坏都将带来数据灾难性的损失。所以,在RAID 0中配置4块以上的硬盘,对于一般应用来说是不明智的。
RAID 1是两块硬盘数据完全镜像,安全性好,技术简单,管理方便,读写性能均好。但其无法扩展(单块硬盘容量),数据空间浪费大,严格意义上说,不应称之为“阵列”。
RAID 0+1综合了RAID 0和RAID 1的特点,独立磁盘配置成RAID 0,两套完整的RAID 0互相镜像。它的读写性能出色,安全性高,但构建阵列的成本投入大,数据空间利用率低,不能称之为经济高效的方案。
RAID 5是目前应用最广泛的RAID技术。各块独立硬盘进行条带化分割,相同的条带区进行奇偶校验(异或运算),校验数据平均分布在每块硬盘上。以n块硬盘构建的RAID 5阵列可以有n-1块硬盘的容量,存储空间利用率非常高(见图6)。任何一块硬盘上数据丢失,均可以通过校验数据推算出来。它和RAID 3最大的区别在于校验数据是否平均分布到各块硬盘上。RAID 5具有数据安全、读写速度快,空间利用率高等优点,应用非常广泛,但不足之处是1块硬盘出现故障以后,整个系统的性能大大降低。
对于RAID 1、RAID 0+1、RAID 5阵列,配合热插拔(也称热可替换)技术,可以实现数据的在线恢复,即当RAID阵列中的任何一块硬盘损坏时,不需要用户关机或停止应用服务,就可以更换故障硬盘,修复系统,恢复数据,对实现HA(High Availability)高可用系统具有重要意义。
各厂商还在不断推出各种RAID级别和标准。例如更高安全性的,从RAID控制器开始镜像的RAID;更快读写速度的,为构成RAID的每块硬盘配置CPU和Cache的RAID等等,但都不普及。用IDE硬盘构建RAID的技术是新出现的一个技术方向,对市场影响也较大,其突出优点就是构建RAID阵列非常廉价。目前IDE RAID可以支持RAID 0、RAID 1和RAID 0+1三个级别,最多支持4块IDE硬盘。由于受IDE设备扩展性的限制,同时,也由于IDE设备也缺乏热可替换的技术支持的原因,IDE RAID的应用还不多。
总之,发展是永恒的主题,在服务器存储技术领域也不例外。一方面,一些巨头厂商尝试推出新的概念或标准,来领导服务器及存储技术的发展方向,较有代表性的如Intel力推的IA-64架构及存储概念;另一方面,致力于存储的专业厂商以现有技术和工业标准为基础,推动SCSI、RAID、Fibre Channel等基于现有存储技术和方案快速更新和发展。在市场经济条件下,检验技术发展的唯一标准是市场的认同。市场呼唤好的技术,而新的技术必须起到推动市场向前发展作用时才能被广泛接受和承认。随着高性能计算机市场的发展,高性能比、高可靠性、高安全性的存储新技术也会不断涌现。
现在市场上的磁盘阵列产品有很多,用户在选择磁盘阵列产品的过程中,也要根据自己的需求来进行选择,现在列举几个磁盘阵列产品,同时也为需要磁盘阵列产品的用户提供一些选择。表2列出了几种磁盘阵列的主要技术指标。
--------------------------------------------------------------------------------
小知识:磁盘阵列的可靠性和可用性
可靠性,指的是硬盘在给定条件下发生故障的概率。可用性,指的是硬盘在某种用途中可能用的时间。磁盘阵列可以改善硬盘系统的可靠性。从表3中可以看到RAID硬盘子系统与单个硬盘子系统的可靠性比较。
此外,在系统的可用性方面,单一硬盘系统的可用性比没有数据冗余的磁盘阵列要好,而冗余磁盘阵列的可用性比单个硬盘要好得多。这是因为冗余磁盘阵列允许单个硬盘出错,而继续正常工作;一个硬盘故障后的系统恢复时间也大大缩短(与从磁带恢复数据相比);冗余磁盘阵列发生故障时,硬盘上的数据是故障当时的数据,替换后的硬盘也将包含故障时的数据。但是,要得到完全的容错性能,计算机硬盘子系统的其它部件也必须有冗余。
FTP服务器的专用术语
FTP服务器的专用术语 ftp服务器的专有术语
经常碰到的:
530 Not logged in.
连接失败
正在延迟 120 秒,在重新连接尝试第 1 次之前
这通常是密码错误。
421 Too many users - please try again later.
连接失败
正在延迟 120 秒,在重新连接尝试第 1 次之前
这个是显示人数过多
125
数据连接已打开,准备传送
150
文件状态良好,打开数据连接
200
命令成功
202
命令未实现
211
系统状态或系统帮助响应
212
目录状态
213
文件状态
214
帮助信息,信息仅对人类用户有用
215
名字系统类型
220
对新用户服务准备好
221
服务关闭控制连接,可以退出登录
225
数据连接打开,无传输正在进行
226
关闭数据连接,请求的文件xx作成功
227
进入被动模式
230
用户登录
250
请求的文件xx作完成
257
创建"PATHNAME"
331
用户名正确,需要口令
332
登录时需要帐户信息
350
请求的文件xx作需要进一步命令
421
不能提供服务,关闭控制连接
425
不能打开数据连接
426
关闭连接,中止传输
450
请求的文件xx作未执行
451
中止请求的xx作:有本地错误
452
未执行请求的xx作:系统存储空间不足
500
格式错误,命令不可识别
501
参数语法错误
502
命令未实现
503
命令顺序错误
504
此参数下的命令功能未实现
530
未登录
532
存储文件需要帐户信息
550
未执行请求的xx作
551
请求xx作中止:页类型未知
552
请求的文件xx作中止,存储分配溢出
553
未执行请求的xx作:文件名不合法 [/size]
[[i] 本帖最后由 ttl123 于 2007-4-16 01:43 PM 编辑 [/i]] 字太大了,眼睛花 [quote]原帖由 [i]akong[/i] 于 2007-4-16 01:16 PM 发表 [url=http://www.dreams8.com/redirect.php?goto=findpost&pid=4067&ptid=1408][img]http://www.dreams8.com/images/common/back.gif[/img][/url]
字太大了,眼睛花 [/quote]
谢谢提醒,编辑一下了
页:
[1]