在众多的网络故障中,最令人头痛的是网络是通的,但网速变慢。初次面对这类“软”故障时,往往有的人会束手无策,本文为大家介绍引起此类“软”故障常见的原因及排除方法,提高大家对实际问题的处理能力。
★网线问题
我们知道,双绞线是由4对线严格而合理地紧密度绞和在一起,减少串扰和背景噪音的影响。同时,在T568A标准和T568B标准中仅使用了双绞线的1、2和3、6四条线。其中,1、2用于发送,3、6用于接收,而且1、2必须来自一个绕对,3、6必须来自一个绕对。只有这样,才能最大限度的避免串扰,保证数据传输。本人在实践中发现不按正确标准(T586A、T586B)制作的网线,存在很大的隐患。有的开始一段时间使用正常,但过一段时间后,性能下降,网速变慢。因此,我们现在要求一律按T586A、T586B标准来压制网线。
★回路问题
一般当网络较小涉及的节点数不是很多、结构不是很复杂时,这种现象很少发生。但在一些比较复杂的网络中,由于一些原因经常有多余的备用线路,则会构成回路,数据包会不断发送和校验数据,从而影响整体网速,并且查找比较困难。为避免这种情况发生,要求我们在铺设网线时一定要养成良好的习惯,网线打上明显的标签,有备用线路的地方要做好记载。
★广播风暴
作为发现未知设备的主要手段,广播在网络中起着非常重要的作用。然而,随着网络计算机数量的增多,广播包的数量会急剧增加。当广播包的数量达到30%时,网络传输效率将会明显下降。当网卡或网络设备损坏后,会不停地发送广播包,从而导致广播风暴,使网络通信陷于瘫痪。因此,当网络设备硬件有故障时也会引起网速变慢。当怀疑有此类故障时,首先可采用置换法替换集线器或交换机来排除集线设备故障。然后关掉集线器的电源后用ping命令对所涉及计算机逐一测试,找到有故障网卡的计算机,更换新的网卡可恢复网速正常。
★端口瓶颈
实际上路由器的广域网端口和局域网端口、交换机端口、集线器端口和服务器网卡等都有可能成为网络瓶颈。我们可在网络使用高峰时段,利用网管软件查看路由器、交换机、服务器端口的数据流量(用netstat命令也可统计各个端口的数据流量),确认网络数据流通瓶颈的位置,设法增加其带宽。如更换服务器网卡为100M或1000M、安装多个网卡、通过改变路由器上配置来增加带宽等方法都可以有效地缓解网络瓶颈,最大限度地提高数据传输速度。
★蠕虫病毒
蠕虫病毒对网络速度的影响越来越严重。这种病毒导致被感染的用户只要一连上网就不停地往外发邮件,病毒选择用户个人电脑中的随机文档附加在用户机子上的通讯簿的随机地址进行邮件发送。成百上千的这种垃圾邮件有的排着队往外发送,有的又成批成批地被退回来堆在服务器上。造成个别骨干互联网出现明显拥塞,个别局域网近于瘫痪。因此,我们应时常注意各种新病毒通告,了解各种病毒特征;及时升级所用杀毒软件。计算机也要及时升级、安装系统补丁程序;同时卸载不必要的服务,关闭不必要的端口,以提高系统的安全性和可靠性。
总之,计算机网络的应用越来越广泛,如何提高计算机网络的管理水平,不断学习,注重理论知识和实践经验积累相当重要。
IP地址的含义、格式及申请
国际IP地址和国际化域名是使用Internet网及其相联的网络系统,运行Internet网必然涉及的十分重要的概念,不掌握它用户无法进行通信。在In-ternet网的发展基础上,人们于1982年提出了一种IP协议,此协议要求参加Internet网的网节点要有一个统一规定格式的地址,这个地址称为符合IP协议的地址,缩称为IP地址。
什么是IP地址的物理含义?
1.它是人们在环球网上的通信地址
IP地址是人们在全世界环球网和中国教育与科研计算机网上使用的唯一、明确、供全世界识别的通邮地址。
2.它是Internet网运行的通用地址
在Internet网上,每个网络和每一台计算机都被唯一分配一个IP地址,这个IP地址在整个网络(Internet网)中是唯一的。
3.它是全球认可有的通用地址格式
在Internet上通信必须有一个32位的二进制地址,采用这种32位(bit)的通用地址格式,才能保证Internet网成为向全世界开放的、可互操作的通信系统。它是全球认可的计算机网络标识方法,通过这种方法,才能正确标识信息的收与发。
4.它是微机、服务器和路由器的端口地址
在Internet网上,任何一台服务器和路由器的每一个端口必须有一个IP地址。
5.它是运行TCP/IP协议的唯一标识符
TCP/IP协议与Novell的网络协议的区别就在于它是上层协议,这是在Internet发展中形成的。不管下层是什么拓扑结构,以太网、TokenRing、passing令牌传递网、FDDI网上的地址,全要统一在这上层IP地址上。任何网要与Internet网挂联上,只要用IP地址就可以了。
一句话,您的微机上网后,IP地址是唯一的。
IP地址的格式和分类
1.IP地址的格式IP地址有二进制格式和十进制格式;十进制格式是由二进制翻译过去的。用十进制表示,是为了使用户和网管人员便于使用和掌握。
二进制的IP地址共有32位,例如:10000011,01101011,00000011,00011000。
每八位组用一个十进制数表示,并以点分隔称为点分法。上例变为131.107.3.24
2.IP地址的分类
IP地址分为五类等级:A、B、C、D、E。
通用格式为
M:类的等级号;NET:网络号;HOST:主机号(在Internet上的计算机都称为主机)。
等级号标志为A、B、C。M、NET和HOST号随不同等级在32位中所占的位数不同。A、B、C类的区别见下表。
·A类IP地址:一般用于大型网络,结构如下:
前一个八位代表网络号,后三个八位代表主机号。32位的第1、2、3位为000;十进制的第一组为000~127。只要见为000~126,就知为A类地址,十进制可写成001.x.y.z~126.x.y.z。
·B类IP地址:一般用于Cernet网的各地区网管中心。
前2个八位代表网络号,后2个八位代表主机号。32位第1、2、3位为100;十进制的第一组为128~191,由此值用户可知为B类IP地址。十进制写成(128~191).x.y.z。一个B类IP地址共有214=16384个C类IP地址,所以华中地区网只能联16384个主机或子网络。
·C类地址:一般用于校园网。
C类IP地址的32位前三位为110,十进制第一组为192~223,见到(192~223).x.y.z,由此可知为C类地址。武汉工业大学的IP地址为202.114.28.(1~254)。一个C类地址共可联上28=256个主机。Chinanet申请了32个C类地址。武汉工业大学申请了16个C地址(待驻日本亚太地区组织批复)。一个C类IP地址可用屏蔽码技术改为128个子网段,每个子网段可联上相应的主机数。C类地址间只有通过路由器才能工作。
IP地址的屏蔽码
屏蔽码是IP地址的特殊标注法。
1.无子网的表示法
对无子网的IP地址,可写成主机号为0的屏蔽码。如
IP地址202.114.80.5
屏蔽码255.255.255.0
也可以缺省屏蔽码,只写IP地址,如,202.114.80.5。
2.有子网的表示法
有子网时,一定要二者配对出现。以C类地址为例。
(1)IP地址表示网络号(前3个八位),后一个八位既表明子网号,又说明主机号,还说明两个IP地址是否属于一个网段。如果属于同一网段,这两个地址间的信息交换就不通过路由器或网桥。如果不属同一网段,也就是子网号不同,两个地址的通讯就要通过路由器。
例如:
202.114.80.1主机号为00000001
202.114.80.16主机号为00010000
以上前面三位全是000,说明属同一网段,网段交换信息可不通过路由器。
例如:
202.114.80.1主机号为00000001
202.114.80.130主机号为01000010
前面三位000与010不同,说明二者属不同网段,要交换信息需要通过路由器。其子网上主机号各为1和2。
(2)屏蔽码的功用是说明有子网和有几个子网(2个、3~4个、5~8个),但子网数只能表示为一个范围,不能确切讲具体几个子网。屏蔽码不说明具体子网号。
有子网的屏蔽码格式(对C类地址):
主机号前几位为子网号,后面不写主机,全写0。
·在IP地址中子网及主机号的表示法:有2个子网,前面第一位为0和1,故只占一位。表示为:
00000000和10000000
有3~4个子网,则需要前面两位,可表示为00、01、11、10。
·在屏蔽码中子网和主机号的表示法:主机号不写了,全写0,而子网号只写1(对2个子网)、11(对3~4个子网)、111(对5~8个子网),以21、22、23来描述子网数,其几次方值用来描述占主机号位的位数。
21:2个子网,占1位;
22:4个子网,占2位(3~4个子网);
23:8个子网,占3位(5~8个子网)。
总之,屏蔽码的格式是前三个八位全为1(即255.255.255),后一个八位的前几位为1、11或111,其余全为0。
例如,255.255.255.224最后八位为11100000,表示8个子网,32台主机。
IP地址的申请组织及获取方法
IP地址必须由国际组织统一分配。
1.建立与刷新IP地址的组织
IP组织分A:B、C、D、E五类,A类为最高级IP地址。
(1)分配最高一级IP地址的国际组织———NIC
NetworkInformationCenter国际网络信息中心负责:分配A类IP地址、授权分配B类IP地址的组织———自治区系统、有权重新刷新IP地址。
(2)分配B类IP地址的国际组织———InterNIC、APNIC和ENIC目前全世界有三个自治区系统组织:ENIC负责欧洲地区的分配工作,InterNIC负责北美地区,APNIC负责亚太地区,设在日本东京大学。我国属APNIC,被分配B类地址。CERNET网的的华中地区网管中心设在华中理工大学,获得一个B类地址。中国的管理自治区号AS=4134。APNIC总共给中国CERNET网10个B类地址。
在该例中,我用ping检查www.mattmarg.com ,即,我每秒钟向www.mattmarg.com发送一个ICMP回送请求信息包,当ping程序从远程主机(www.mattmarg.com)收到回送答复时, 它在屏幕上显示答复,并列出几条有用的信息:第1条信息是返回答复的主机的IP地址(通常应该是www.mattmarg.com的IP地址 );第2条信息是序列号,从1开始;第3条信息是 Time To Live(TTL),最后一条是获得答复所用的时间(毫秒)
序列号显示了哪个信息包获得了答复。如果某个序列号被跳过,则以为着某个信息包(回送请求或回送对方)未被对方收到,而在网络传输过程中丢失了。如果被跳过的序列号比较少,还无需担心什么,但如果很多序列号被跳过,则意味着网络存在问题。
Time To Live (TTL) 域的信息很有趣。每一个被发送出的IP信息包都有一个TTL域,该域被设置为一个较高的数值(在本例中ping信息包的TTL值为255)。当信息包在网络中被传输时,TTL的域值通过一个路由器时递减1;当TTL 递减到0时,信息包被路由器抛弃。IP规范规定:TTL应该被设置为60 (尽管ping 信息包的TTL是255)。这样做主要是为了让一个信息包永远在为了中存在。担该信息对我们来说有特殊的含义。我们可以使用TTL大致确定该信息包经过了多少个路由器过渡段。在本例中,用255减去N,N是返回的回送答复的TTL。如果TTL值在连续几个ping中发生变化,这说明返回的信息包经过了不同的路由器。
time显示了信息包到达远程主机后返回的时间。计算定位为毫秒。通常网卡下,来回时间在200毫秒以下最好。信息包抵达目的地的时间叫做latency(等待时间),如果你看到来回时间变化很大(叫做"jitter(抖动)),这说明同主机之间的联接状况很差。但是如果在较大抽样范围(50到100)内出现几个这样的情况也不必担心。
要退出ping, 则键入control-c。这激昂中止该程序并打印总结:有多少信息包被传输,有多少信息包被接收到,丢失的信息包的比例,以及信息包来回时间的最低、最高和平均值。
ping是测试为了联接状况以及信息包发送和接收状况非常有用的工具。以后我还将谈到一个更复杂的工具:traceroute,它能告诉你信息包所经过的路由器的路径。
局域网中代理服务器、路由器的配置案例
局域网中代理服务器、路由器的配置案例网络技术的飞速发展,使企事业单位局域网接入INTERNET共享资源的方式越来越多,就大多数而言,DDN专线以其性能稳定、扩充性好的优势成为普遍采用的方式,DDN方式的连接在硬件的需求上是简单的,仅需要一台路由器(router)、代理服务器(proxy server)即可,但在系统的配置上对许多的网络管理人员来讲是一个比较棘手的问题。下面以CISCO路由器为例,笔者就几种比较成功的配置方法作以介绍,以供同行借鉴:
一、直接通过路由器访问INTERNET资源的配置
1. 总体思路和设备连接方法 一般情况下,单位内部的局域网都使用INTERNET上的保留地址: 10.0.0.0/8:10.0.0.0~10.255.255.255 172.16.0.0/12:172.16.0.0~172.31.255.255 192.168.0.0/16:192.168.0.0~192.168.255.255 在常规情况下,单位内部的工作站在直接利用路由对外访问时,会因工作站使用的是互联网上的保留地址,而被路由器过滤掉,从而导致无法访问互联网资源。解决这一问题的办法是利用路由操作系统提供的NAT(Network Address Translation)地址转换功能,将内部网的私有地址转换成互联网上的合法地址,使得不具有合法IP地址的用户可以通过NAT访问到外部Internet。这样做的好处是无需配备代理服务器,减少投资,还可以节约合法IP地址,并提高了内部网络的安全性。
NAT有两种类型:Single模式和global模式。
使用NAT的single模式,就像它的名字一样,可以将众多的本地局域网主机映射为一个Internet地址。局域网内的所有主机对外部Internet网络而言,都被看做一个Internet用户。本地局域网内的主机继续使用本地地址。 使用NAT的global模式,路由器的接口将众多的本地局域网主机映射为一定的Internet地址范围(IP地址池)。当本地主机端口与Internet上的主机连接时,IP地址池中的某个IP地址被自动分配给该本地主机,连接中断后动态分配的IP地址将被释放,释放的IP地址可被其他本地主机使用。
下面以我单位的网络环境为例,将配置方法及过程列示出来,供大家参考。 我单位利用联通光缆(V.35)接入INTERNET的,路由器是CISCO2610,局域网采用的是INTEL550百兆交换机,联通向我们提供了下列四个IP地址:
211.90.137.25(255.255.255.252)用于本地路由器的广域网端口
211.90.137.26(255.255.255.252)用于对方(联通)的端口
211.90.139.41(255.255.255.252)供自己支配
211.90.139.42(255.255.255.252)供自己支配
2. 路由器的配置
(1) 网络连接示意图:
说明:校内所有的工作站都与交换机连接,路由器也通过以太口连接在内部交换机上,路由器上以太口使用内部私有地址,光纤的两端分别使用了联通分配的两个有效IP地址。在这种连接方式下,只要在路由器内部设置NAT,便可以使得单位内部的所有工作站访问INTERNTE了,在每台工作站上只需设置网关指向路由器的以太口(192.168.0.3)即可上网,无需设代理,并节省了两个有效IP地址可供自己自由支配(如建立单位自已的WEB和E-MAIL服务器)。但也存在缺点:不能享受代理服务器提供的CACHE服务来提高访问速度。所以本配置方案适合工作站数量较少的单位,对于单位内部工作站数量较多的情况可以使用后面介绍的两种方法。路由器上具体配置如下:
(2)路由器的配置
en
config t
ip nat pool c2610 211.90.139.41 211.90.139.42 netmask 255.255.255.252 (定义一个地址池c2601,其内包含了两个空闲的合法IP地址,供NAT转换时使用)
int e0/0
ip address 192.168.0.3 255.255.255.0
ip nat inside
exit
(设置以太口的IP地址,并设置其为连接内部网的端口)
interface s0/0
ip address 211.90.137.25 255.255.255.252
ip nat outside exit
(设置广域网端口的IP地址,并设置其为连接外部网的端口)
ip route 0.0.0.0 0.0.0.0 211.90.137.26
(设置动态路由)
access-list 2 permit 192.168.0.1 0.0.0.255
(建立访问控制列表)
Dynamic NAT
ip nat inside source list 2 pool c2610 overload
(建立动态地址翻译)
line console 0
exec-timeout 0 0
line vty 0 4
end
wr (保存所作的设置)
3. 工作站的配置 要求使用静态IP地址,在TCP/IP属性中进行设置,并设置关网为192.168.0.3(路由器以太口IP地址),设置DNS为接入商提供的地址,浏览器等上网工具中无需作任何特殊设置。
二、通过代理服务器访问INTERNET资源的配置
1. 总体的思路和设备连接方法 利用代理服务器方式访问INTERNET资源,优点是可以利用代理服务器提供的CACHE服务来提高INTERNET的访问速度和效率。比较适合工作站较多的单位使用。缺点是需要专门配备一台计算机作为代理服务器,增加了投资成本;且较第一种法方还需多占用两个合法IP地址,网络安全性不高。 采用这种方案来访问互联网,设备连接方法如下:
代理服务器上安装两块网卡,一块连接内部网,设置内部私有地址;另一块连接路由器以太口,设置联通分配的合法地址(211.90.139.42),并设置其网关为211.90.139.41(路由器以太口) 路由器以太口也设置联通分配的合法IP地址(211.90.139.41) 这样,将设备连接好后,在代理服务器上安装代理软件,并在工作站上设置代理即可访问INTERNET
2. 路由器的配置
(1) 网络连接示意图: 说明:在上图中,单位内的所有计算机通过交换机直接与代理服务器上的内部网网卡(192.168.0.4)通讯,然后在代理服务软件的控制之下经过路由器访问INTERNET。
(2)路由器的配置
en
config t
int e0/0
ip address 211.90.139.41 255.255.255.252 exit
(设置以太口的IP地址)
interface s0/0
ip address 211.90.137.25 255.255.255.252
exit
(设置广域网端口的IP地址)
ip route 0.0.0.0 0.0.0.0 211.90.137.26 ip routing
(设置动态路由,并激活路由)
end
wr
(保存所作的设置)
3. 代理服务器的设置 代理服务器必须按装两块网卡,一块用于连接内部局域网,设IP地址为内部私有地址(如:192.168.0.4 netmask 255.255.255.0)无需设网关。另一块用于连接路由器,设置联通分配的合法地址(211.90.139.42 netmask 255.255.255.252),并设置其网关为:211.90.139.41(路由器以太口)。
按照上面的方法设置好网卡后,再安装一套代理软件即可。(如:MS PROXY SERVER 2.0、WINGATE等,代理软件的安装调试方法请参阅其它资料) 4. 工作站的设置 (1) INTERNET EXPLORER设置 工具菜单->internet选项->连接->局域网设置->使用代理服务器->地址:192.168.0.4端口:80->确定 (2)其他软件的设置请参阅软件说明。
三、直接访问与代理访问并存的配置
1. 总体思路和设备连接方法 通过上面介绍的两种方法进行配置,都能顺利地实现INTERNET的访问,但每种方法即有优点,又存在一定的缺点,且两种方法的优点是互补的。哪能不能将两种方法的优点合二为一,方法三就是一种鱼和熊掌能够兼得的方案。集成了一、二两种方法的优点,即节省了IP地址,又能通过代理服务器提供的CACHE来提高INTERNET的访问效率。
采用这种方案来访问互联网,设备连接方法如下:
代理服务器上安装两块网卡,两块网卡均连接在交换机上,在设置IP地址时,两块网卡均设置内部私有地址,但这两个地址应不属于一个网络(即IP地址的网络地址不同),一块用于与内部网通信(网卡1),一块用于与路由器通信(网卡2),否则代理无法实现。 在代理服务器上不要安装NETBEUI协议,仅安装TCP/IP协议。(注意:这一步必须要做,否则会因为代理服务器与交换机之间连接线路冗余而导致代理服务器NETBIOS计算机名冲突而影响正常通信) 路由器以太口也设置一个内部私有地址,该地址因与网卡2的地址在同一个网络(即IP地址的网络地址与网卡2相同)
2. 路由器的设置
(1) 网络连接示意图
(2)路由器的配置
en
config t
ip nat pool c2610 211.90.139.41 211.90.139.42 netmask 255.255.255.252 (定义一个地址池c2601,其内包含了两个空闲的合法IP地址,供NAT转换时使用) int e0/0
ip address 192.168.1.1 255.255.255.0
ip nat inside exit
(设置以太口的IP地址,并设置其为连接内部网的端口)
interface s0/0
ip address 211.90.137.25 255.255.255.252
ip nat outside exit
(设置广域网端口的IP地址,并设置其为连接外部网的端口)
ip route 0.0.0.0 0.0.0.0 211.90.137.26
(设置动态路由)
access-list 2 permit 192.168.0.1 0.0.0.255
(建立访问控制列表)
Dynamic NAT !
ip nat inside source list 2 pool c2610 overload
(建立动态地址翻译)
line console 0 exec-timeout 0 0
line vty 0 4 end wr (保存所作的设置)
2. 代理服务器的设置 代理服务器上安装两块网卡,两块网卡均连接在交换机上,网卡1设IP地址为:192.168.0.4,不设网关;网卡2设IP地址为:192.168.1.2,设其网关为192.168.1.1(路由器以太口)。
按照上面的方法设置好网卡后,再安装一套代理软件即可。(如:MS PROXY SERVER 2.0、WINGATE等,代理软件的安装调试方法请参阅其它资料) 注意:在安装代理软件时(以MS-PROXY 2.0为例),在指定LAT表时,应将地址范围192.168.0.0-192.168.255.255排除在外,否则代理无法正常工作。
3. 工作站的设置 在这种配置之下,工作站既可以通过设置代理上网,也可以通过设置网关直接上网。
若只通过代理上网,设置方法与方法二完全一致。
若只通过网关上网,要求工作站必须设置静态IP地址,IP地址应设为192.168.1.X,
与路由器以太口在同一个网段,并设置网关为:192.168.1.1,设置DNS为接入商提供的地址。 若想两种方法并存,则需要在TCP/IP中设置两个静态IP地址:192.168.0.X和192.168.1.X,并设置网关为:192.168.1.1 ,DNS为接入商提供的地址。使用时只需在浏览器等软件中打开或关闭代理设置即可在代理与网关上网之间进行切换。
TCP/IP协议
2.1 OSI网络分层参考模型
网络协议设计者不应当设计一个单一、巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议。这样做使得每个协议的设计、分析、时限和测试比较容易。协议划分的一个主要原则是确保目标系统有效且效率高。为了提高效率,每个协议只应该注意没有被其他协议处理过的那部分通信问题;为了主协议的实现更加有效,协议之间应该能够共享特定的数据结构;同时这些协议的组合应该能处理所有可能的硬件错误以及其它异常情况。为了保证这些协议工作的协同性,应当将协议设计和开发成完整的、协作的协议系列(即协议族),而不是孤立地开发每个协议。
在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七层参考模型。一台计算机操作系统中的网络过程包括从应用请求(在协议栈的顶部)到网络介质(底部) ,OSI参考模型把功能分成七个分立的层次。图2.1表示了OSI分层模型。
┌─────┐
│ 应用层 │←第七层
├─────┤
│ 表示层 │
├─────┤
│ 会话层 │
├─────┤
│ 传输层 │
├─────┤
│ 网络层 │
├─────┤
│数据链路层│
├─────┤
│ 物理层 │←第一层
└─────┘
图2.1 OSI七层参考模型
OSI模型的七层分别进行以下的操作:
第一层——物理层
第一层负责最后将信息编码成电流脉冲或其它信号用于网上传输。它由计算机和网络介质之间的实际界面组成,可定义电气信号、符号、线的状态和时钟要求、数据编码和数据传输用的连接器。如最常用的RS-232规范、10BASE-T的曼彻斯特编码以及RJ-45就属于第一层。所有比物理层高的层都通过事先定义好的接口而与它通话。如以太网的附属单元接口(AUI),一个DB-15连接器可被用来连接层一和层二。
第二层——数据链路层
数据链路层通过物理网络链路提供可靠的数据传输。不同的数据链路层定义了不同的网络和协议特征,其中包括物理编址、网络拓扑结构、错误校验、帧序列以及流控。物理编址(相对应的是网络编址)定义了设备在数据链路层的编址方式;网络拓扑结构定义了设备的物理连接方式,如总线拓扑结构和环拓扑结构;错误校验向发生传输错误的上层协议告警;数据帧序列重新整理并传输除序列以外的帧;流控可能延缓数据的传输,以使接收设备不会因为在某一时刻接收到超过其处理能力的信息流而崩溃。数据链路层实际上由两个独立的部分组成,介质存取控制(Media Access Control,MAC)和逻辑链路控制层(Logical Link Control,LLC)。MAC描述在共享介质环境中如何进行站的调度、发生和接收数据。MAC确保信息跨链路的可靠传输,对数据传输进行同步,识别错误和控制数据的流向。一般地讲,MAC只在共享介质环境中才是重要的,只有在共享介质环境中多个节点才能连接到同一传输介质上。IEEE MAC规则定义了地址,以标识数据链路层中的多个设备。逻辑链路控制子层管理单一网络链路上的设备间的通信,IEEE 802.2标准定义了LLC。LLC支持无连接服务和面向连接的服务。在数据链路层的信息帧中定义了许多域。这些域使得多种高层协议可以共享一个物理数据链路。
第三层——网络层
网络层负责在源和终点之间建立连接。它一般包括网络寻径,还可能包括流量控制、错误检查等。相同MAC标准的不同网段之间的数据传输一般只涉及到数据链路层,而不同的MAC标准之间的数据传输都涉及到网络层。例如IP路由器工作在网络层,因而可以实现多种网络间的互联。
第四层——传输层
传输层向高层提供可靠的端到端的网络数据流服务。传输层的功能一般包括流控、多路传输、虚电路管理及差错校验和恢复。流控管理设备之间的数据传输,确保传输设备不发送比接收设备处理能力大的数据;多路传输使得多个应用程序的数据可以传输到一个物理链路上;虚电路由传输层建立、维护和终止;差错校验包括为检测传输错误而建立的各种不同结构;而差错恢复包括所采取的行动(如请求数据重发),以便解决发生的任何错误。传输控制协议(TCP)是提供可靠数据传输的TCP/IP协议族中的传输层协议。
第五层——会话层
会话层建立、管理和终止表示层与实体之间的通信会话。通信会话包括发生在不同网络应用层之间的服务请求和服务应答,这些请求与应答通过会话层的协议实现。它还包括创建检查点,使通信发生中断的时候可以返回到以前的一个状态。
第六层——表示层
表示层提供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息可以被另一个系统应用层识别。表示层的编码和转化模式包括公用数据表示格式、性能转化表示格式、公用数据压缩模式和公用数据加密模式。
公用数据表示格式就是标准的图像、声音和视频格式。通过使用这些标准格式,不同类型的计算机系统可以相互交换数据;转化模式通过使用不同的文本和数据表示,在系统间交换信息,例如ASCII(American Standard Code for Information Interchange,美国标准信息交换码);标准数据压缩模式确保原始设备上被压缩的数据可以在目标设备上正确的解压;加密模式确保原始设备上加密的数据可以在目标设备上正确地解密。
表示层协议一般不与特殊的协议栈关联,如QuickTime是Applet计算机的视频和音频的标准,MPEG是ISO的视频压缩与编码标准。常见的图形图像格式PCX、GIF、JPEG是不同的静态图像压缩和编码标准。
第七层——应用层
应用层是最接近终端用户的OSI层,这就意味着OSI应用层与用户之间是通过应用软件直接相互作用的。注意,应用层并非由计算机上运行的实际应用软件组成,而是由向应用程序提供访问网络资源的API(Application Program Interface,应用程序接口)组成,这类应用软件程序超出了OSI模型的范畴。应用层的功能一般包括标识通信伙伴、定义资源的可用性和同步通信。因为可能丢失通信伙伴,应用层必须为传输数据的应用子程序定义通信伙伴的标识和可用性。定义资源可用性时,应用层为了请求通信而必须判定是否有足够的网络资源。在同步通信中,所有应用程序之间的通信都需要应用层的协同操作。
OSI的应用层协议包括文件的传输、访问及管理协议(FTAM) ,以及文件虚拟终端协议(VIP)和公用管理系统信息(CMIP)等。
2.2 TCP/IP分层模型
TCP/IP分层模型(TCP/IP Layening Model)被称作因特网分层模型(Internet Layering Model)、因特网参考模型(Internet Reference Model)。图2.2表示了TCP/IP分层模型的四层。
┌────────┐┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│ ││D│F│W│F│H│G│T│I│S│U│ │
│ ││N│I│H│T│T│O│E│R│M│S│其│
│第四层,应用层 ││S│N│O│P│T│P│L│C│T│E│ │
│ ││ │G│I│ │P│H│N│ │P│N│ │
│ ││ │E│S│ │ │E│E│ │ │E│它│
│ ││ │R│ │ │ │R│T│ │ │T│ │
└────────┘└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
┌────────┐┌─────────┬───────────┐
│第三层,传输层 ││ TCP │ UDP │
└────────┘└─────────┴───────────┘
┌────────┐┌─────┬────┬──────────┐
│ ││ │ICMP│ │
│第二层,网间层 ││ └────┘ │
│ ││ IP │
└────────┘└─────────────────────┘
┌────────┐┌─────────┬───────────┐
│第一层,网络接口││ARP/RARP │ 其它 │
└────────┘└─────────┴───────────┘
图2.2 TCP/IP四层参考模型
TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。ICP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。
TCP/IP分层模型的四个协议层分别完成以下的功能:
第一层——网络接口层
网络接口层包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。
第二层——网间层
网间层对应于OSI七层参考模型的网络层。本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。
第三层——传输层
传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。
第四层——应用层
应用层对应于OSI七层参考模型的应用层和表达层。因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等,这也是本书将要讨论的重点。
2.3 IP地址
前面的章节我们已经指出,由于不同网络的硬件存在不同类型的地址,TCP/IP需要有它自己的地址编码系统。IP协议规定每台主机(严格地说是每个因特网接口)都通过一个32位全局唯一的因特网地址来标识。通常IP地址是采用以点隔开的四个十进制数的形式来表示。每个数代表地址中的一个二位十六进制数(即八位二进制数)。例如IP地址205.187.251.2就表示相应的四个二位十六进制值 CD BB FB 02。
2.3.1 地址基本编码格式
在IPv4(IP协议,版本4)标准中,每个32位IP地址包含两个部分:网络标识符和网络内的主机编号。没有两个网络能够分配同一个网络标识符,同一网络上的两台计算机也不可能分配同一个主机编号。IANA负责分配网络标识符,以确保网络标识符的唯一性、因特网服务提供商(Internet Service Provider,ISP)或网络管理员负责维护同一网络上主机编号的唯一性等。网络标识符和主机编号的边界由IP地址的类别来确定,不同类别的IP地址能够满足不同规模网络的组网需要。为了满足不同的网络与主机比例的期望值,IP协议将地址编码分成三种基本类别:A类、B类、C类。D类地址是为多点广播而定义的,剩余的E类地址保留为实验使用,如图2.3所示。
0 1 2 3
0 123456789001234567890012345678901
┌─┬─────┬─────────────────────────┐
│0│网络标识符│ 主机编号 │A类
├─┴┬────┴────────┬────────────────┤
│10│网络标识符 │ 主机编号 │B类
├──┴┬────────────┴───────┬────────┤
│110│ 网络标识符 │ 主机编号 │C类
├───┴┬───────────────────┴────────┤
│1110│ 多点广播地址 │D类
├────┴┬───────────────────────────┤
│11110│ 实验保留地址 │E类
└─────┴───────────────────────────┘
图2.3 IP地址的五种类别
A类网络地址第一位为“0”。前8位(0~7)代表网络标识符,后24位(8~31)代表本网络上的主机编号。因此这类网络存在128(27)个A类网络标识符,每个网络有16777216(224)台主机。例如10.0.0.1代表A类网10.0.0.0和1号主机。B类网络地址的前两位是“10”。前16位(0~15)代表网络标识符,每个网络有65536(216)台主机。例如128.1.0.1代表B类网128.1.0.0和1号主机。C类网络地址的前三位是“110”。前24位(0~23)代表网络标识符,后8位(24~31)代表网络上的主机编号。C类网络存在2097152(221)个网络标识符,每个网络有256(28)台主机。例如192.0.1.1代表C类网192.0.1.0和1号主机。可见地址的类别可以从第一个主机号辨别。可见IP地址的类别可以由第一个十进制数的范围辨别,如图2.4所示。
┌─┬────────┬───────┬────────┐
│类│第一个10进制数│ 网络数目 │ 主机数目 │
├─┼────────┼───────┼────────┤
│A│ 0~127 │ 127 │16777214│
├─┼────────┼───────┼────────┤
│B│128~191 │ 16834 │ 65534 │
├─┼────────┼───────┼────────┤
│C│192~223 │2097151│ 254 │
└─┴────────┴───────┴────────┘
图2.4 IP地址的类别可以由点分十进制数地址的
第一个十进制数的范围辨别
2.3.2 子网掩码
在因特网早期,每个组织机构的网络都很简单,通常一个组织机构也只有一个局域网,只需要网络标识符和主机编号这两级结构就足够了。随着因特网的进一步膨胀,B类地址消耗得很快,这种两级结构很难满足日益增长的网络的要求。到了1984年,在地址格式中又增加了第三级子网结构,子网对网络内部的地址空间进行再划分,这样就缓解了B类地址的需求,如图2.5所示。
┌─────┬────┬──┐
│网络标识符│ 子网 │主机│
└─────┴────┴──┘
│←─主机编号→│
图2.5 三级IP地址格式
子网或子网络是A、B或C类网络的一个子集。网络掩码用来把网络信息和主机信息分开。每个A、B或C类地址实际上都是一个自然掩码。A类地址的自然掩码255.0.0.0;B类地址的自然掩码是255.255.0.0;C类地址的自然掩码是255.255.255.0。如果没有子网的引入,网络标识符的使用会很限。使用了掩码,网络就可以分化成子网,并把地址的网格部分延伸到主机部分。子网划分技术增加了子网的数量,减少了主机的数量。如图2.6所示,掩码255.255.0.0把A类IP地址8.0.0.1划分成一个网络部分、一个子网部分和一个主机部分。
图2.6 基本子网划分的例子
要注意的是,子网掩码的格式是有限制的。子网掩码必须是相邻接的,它们的长度也必须要大于1,也就是说一个掩码应该有从左开始的连续的“1”,其余部分为“0”。下面的掩码可以用来把C类网络理论上可用的256个地址划分成多个子网。
255(1111 1100)——64个子网,4台主机/子网
248(1111 1000)——32个子网,8台主机/子网
240(1111 0000)——16个子网,16台主机/子网
224(1110 0000)——8个子网,32台主机/子网
192(1100 0000)——4个子网,64台主机/子网
128(1000 0000)——2个子网,128台主机/子网
2.3.3 特殊用途的IP地址
一台计算机可以分配一个主机地址,同是一个网络也可以分配一个网络地址。另外,在很多情况下主机并不知道自己的IP地址或者对方的IP地址,比如在主机启动时就是这样的。因此IP协议定义了一套特殊地址格式,称作保留地址,保留地址从不分配给某台主机,如图2.8所示。
┌──────────────┐
│ 全0 │本地网上的本主机
└──────────────┘
┌───────┬──────┐
│网络标识符全0│ 主机编号 │本地网上的主机
└───────┴──────┘
┌───────┬──────┐
│ 网络标识符 │主机编号全0│网络的伯克利广播
└───────┴──────┘
┌──────────────┐
│ 全1 │本地网的有限广播
└──────────────┘
┌───────┬──────┐
│ 网络标识符 │主机编号全1│网络的直线广播
└───────┴──────┘
┌───────┬──────┐
│ 127 │ 任意 │本地环路
└───────┴──────┘
图2.8 特殊用途的IP地址格式
IP保留主机编号为0的地址,用它来表示一个网络,例如地址205.187.251.0表示C类网络,该网络的网络标识符是205.187.251。
当网络标识符不知道时,主机地址就可以用全0的网络标识符来代替。例如:特殊地址0.0.0.0表示本网络的主机,它被应用在启动协议中;特殊地址0.X.Y.Z表示本网络的主机X.Y.Z。这些特殊的IP地址只能当作源地址使用。
为了很方便地发送一个包的副本给同一物理网络上的所有主机,IP为每个网络定义了一个直接广播地址(directed broadcast address)。IP保留了主机编号中所有位为全1的地址,用它来表示一个网络的直接广播地址。例如:A.255.255.255、B.B.255.255、C.C.C.255就分别是A、B、C网络的广播地址。当一个包被发送到上述的一个直接广播地址时,这个包的单个副本通过因特网路由器到达特定网络,然后被传送到这个网络上的所有主机。在这里有个历史遗留问题,伯克利软件分发(Berkeley Software Distribution,BSD)的TCP/IP协议实现使用主机编号中所有位为全0而不是全1来表示直接广播地址,这种地址格式被非正式地称为伯克利广播(Berkeley Broadcast)地址。以上这些特殊的IP地址只能当作目的地址使用。
在测试网络应用程序时,还可以使用IP定义的一个特殊的本地环路地址(loopback address),发往该地址的任何分组都不会传出主机。它实际上是一个本地环路网络标符,IP保留A类网络127用作本地环路。任何具有127.X.Y.Z形式的地址都被当作本地环路地址,127.0.0.1是最普遍的本地环路地址,也可以用localhost来表示。
另外,IANA还为某些特殊分组保留了一系列多点广播地址。例如:224.0.0.1用来表示本地子网上的所有系统;224.0.0.2用来表示本地子网的所有路由器。
2.4 网络数据的传输次序
在PC机中,低位存储地址包含数据的低位字节,这种存储顺序被称作为Little Endial。而在因特网传输中,TCP/IP协议规定采用低位存储地址包含数据高位字节的Big Endial存储顺序,并把这种存储次序称作网络标准字节顺序,如图2.9所示。实际网络传输时,数据按每32位二进制数为一组进行传输。图中把每个32位二进制数按照书写方式分成4个八位二进制数,并且标明了实际的字节传输顺序。在传输每个八位二进制时,按照从左到右、从最高的符号位到最低位依次进行传输。
为了使通信的双方都能理解数据分组所携带的源地址、目的地址以及分组的长度等二进制信息,主机和路由器在发送一个分组之前,必须把二进制信息项从本地表示转换成网络标准字节顺序,并且当分组到达目的网络时又把它们从网络字节顺序换成特定的主机顺序。至于分组中用户数据区的数据,则可以选择任何数据格式,他们不会被转换成网络标准字顺序,而是由具体通信的双方负责解释。
2.5 网间协议(IP)
因特网的核心层是网间层和传输层。IP协议是建立TCP/IP网络的最基本协议,它定义了在整个TCP/IP网络上传输数据所用的基本单元。网间层协议为上层协调提供了无连接的、不可靠的数据报传送服务,其他协议作为IP数据报的数据被承载。它只是尽力地、最快地传递数据,同时提供差错校验和路由选择,但产不对数据的到达与否、数据到达的连续性和顺序性作任何保证,也不提供任何纠错功能。RFC791中定义了IPv4(网间协议,版本4),读者可参考RFC 791文件。
2.5.1 IP数据报格式
TCP/IP协议使用的IP数据报(IP datagram)和物理网络上传输数据单元用的硬件帧有相同的格式,它包含一个数据报报头和一个数据区,如图2.10所示。
┌──────┬──────┐
│ IP报头 │IP数据区 │IP数据报
└──────┴──────┘
┌───┬─────────┐
│帧头部│ 帧数据 │硬件帧
└───┴─────────┘
图2.10 IP数据报的一般格式
IP数据报头包含有源、目的信息,在穿越因特网时作寻径用,并且指明承载负载的协议类型,如TCP、ICMP、UDP、等。数据报所携带的数据量不固定,发送方根据特定的用途选择合适的数据量。在IPv4版本中,一个数据报的数据量可以小到一个字节,而如果包括报头大小的话,数据报则可以大到64K个字节。图2.11给出了IP数据报更详细的格式。
图2.11 IP数据报格式
为了方便编程,这里同时给出了IP数据报的C语言结构。注意,它并没有包括可选项和填充域。
/* The IP header for VC++ */
typedef struct tagIPHEADER
{
unsigned char h_len:4:/* length of tht header */
unsigned char version:4;/* version of IP */
unsigned char tos;/* type of service */
unsigned short total_len;/* total length of the packet */
unsigned short ident;/* unique identifier */
unsigned short frag_and_flags;/*flags & frag offset */
unsigned char ttl;/* TTL(Time To Live)
unsigned char proto;/* protocol(TCP,UDP etc) */
unsigned short checksum;/* IP head checksum */
unsigned int sourceIP;//*source IP Address */
unsigned int destIP;/*destination IP Address */
}IPHEADER;
下面我们将分别讨论IP数据报报头中各域的详细含义。
2.5.2 版本协议号
IP数据报中的第一个域是4比特长的版本域(version)。版本号规定了数据报的格式,同的IP协议版本其数据报格式有所不同。因此IP协议软件在处理数据报之前,首先必须检查版本号,对不能正确识别的数据报版本应该予以拒绝。当前的IP协议版本号为4,常常称作IPv4;下一个将要发展的IP协议,它的版本号是6,也就是我们常说的IPv6。
2.5.3 数据报长度和填充域
紧接着版本域的是4比特长的报头长度域(h_len)。它指出了按32比特长标定的报头长度,报头的长度实际上是h_len<<2。如果报头长度不是32比特的整数倍,则由填充域添0补齐。
另外,报头中还有一个16比特长的数据报总长域(total_len)。它以字节为单位标定整个IP数据报的长度,并没有要按32比特长为单位对齐的要求。由于总长域占有16比特,所以数据报最长可达到216-1字节。
2.5.4 服务类型和优先权
8比特长的服务类型城(tos)规定本数据报的处理方式,并分成五个子域,其子域结构如图2.12所示。
0 1 2 3 4 5 6 7
┌───┬───────┐
│ │ 传输类型 │
│优先级├─┬─┬─┬─┤
│ │D│T│R│C│
└───┴─┴─┴─┴─┘
图2.12 组成服务类型域的五个子域
3比特的优先级(PRECEDENCE)子域指明本数据报的优先级,允许发送方表示本数据报的重要程度。优先级的取值从0到7,0表示普通优先级,即表示网络控制优先级。优先级是由用户指定的,大多数主机和路由器软件对此都不予理睬,但这种思想却是十分重要的,因为它毕竟提供了一种手段,允许控制信息享受比一般数据更高的优先级。比如说,如果主机和路由器都服从优先级的话,则可以给拥塞控制信息赋予更高的优先级,从而实现不受拥
塞影响的拥塞控制算法。
D、T、R、C位表示本数据报所期望的传输类型。当这些比特位取值为1时,D代表低时延(Delay)T代表高吞吐量(Throughput)R代表高可靠性(Reliability),C代表低开销。当然,上述三位只是用户的请求,因特网并不能保证提供所要求的传输,只是把它们作为路由选择时的参考。另外要注意的是,每种物理网络技术的时延、吞吐量、可靠性性能之间往往是此强彼弱的,用户应只指定它们中的一个,同时指定多个没有任何意义。
2.5.5 标识符、标志和分片偏移量
网络数据最终都是通过物理网络帧传输,IP数据报也不例外。在理想的情况下,整个数据报被封装在一个物理帧中传输时网络效率最高。但是,不同的物理网络技术上所采用的最大帧长是相异的,这个帧尺寸称作最大传输单元(Maximum Transfer Unit,MTU)。例如:10Mb/s以太网每帧最多可承载1500个字节,而在100Mb/s的FDDI环上承载就可以大到4470个字节。
当数据报分组从一个MTU较大的网络经路由器中继到一个MTU较小的网络上时,由于分组过长,路由器就会要么拒绝中继,要么将数据报分片后再传送。分片通常在路由器中完成,而数据报重组由主机的IP协议软件完成。IP报头中的标识符(ident)、标志和分片偏移量(frag_and_flags)三个域用作分片和重组控制。标识符标识数据报发送时的先后顺序,每产生一个新数据报标识符增一,目的机用它来重编分片数据报。同一IP数据报分片后,标识符域不变。分片偏移量指在完整的数据报内该分片的偏移量,偏移量按8个字节为单位计算。标志域由3个比特位组成,第一位保留为0,如图2.l3所示。
0 1 2
┌─┬──┬──┐
│0│DF│MF│
└─┴──┴──┘
图2.13 标志中的各位
DF位表示分组禁止被分片。如果DF位置1,路由器就会不加考虑地废弃超长分组,同时还会发送一个ICMP错误信息给这个分组的源站点。MF位表示分组片未完。如果MF位清0,此分片是IP数据报分组的最后一片。
2.5.6 存活时间
存活时间(ttl)设置了该数据报在因特网中允许存在的最大生存时间,该时间以秒为单位。每当产生一新的数据报时,就为它设置一个最大的生存时间。当数据报通过的主机和路由器对该数据报进行处理时,又减去消耗的时间。一旦时间小于等于0,便将该数据报从因特网中删除,并向信源机发回出错信息。
路由器通常不知道物理网络上的传送时间,存活时间也只是一个数量级的概念,并不要求精确。因为精确的记时首先需要因特网中所有节点的时钟精确同步,这是很难做到的。有一些办法可以简化处理数据报且不需要同步时钟:第一,路由上的每个路由器处理报头时,从存活时间中减去一;第二,如果数据报在路由器中因等待服务被延迟,则从存活时间中减去等待的时间。
为IP数据报设置存活时间的思想,保证了即使路由表不可靠而选择了一个循环路由,数据报都不会在因特网中无休止地流动。RFC建议存活时间的缺省设置值为64,而Windows 98和 Windows NT 4.0的用户使用的存活时间缺省值为128。
2.5.7 协议序列号
协议域表示IP数据报中数据的协议类型,如TCP、UDP、ICMP等。表2-1列出了IANA已分配的常见协议序列号。
表2-1
━━━━━━┯━━━━━━━┯━━━━━━━━━━━━━━━━━━
十进制编号│ 关键字 │ 协议名称
──────┼───────┼──────────────────
0│ │保留
──────┼───────┼──────────────────
1│ICMP │因特网控制报文协议
──────┼───────┼──────────────────
2│IGMP │因特网组管理协议
──────┼───────┼──────────────────
3│GGP │网关-网关协议
──────┼───────┼──────────────────
4│IP │IP里的IP
──────┼───────┼──────────────────
5│ST │数据流
──────┼───────┼──────────────────
6│TCP │传输控制协议
──────┼───────┼──────────────────
8│EGP │外部网关协议
──────┼───────┼──────────────────
17│UDP │用户数据报协议
──────┼───────┼──────────────────
29│ISO-TP4│ISO传输协议类4
──────┼───────┼──────────────────
41~60│ │未分配
──────┼───────┼──────────────────
70│VISA │VISA协议
──────┼───────┼──────────────────
80│ISO-IP │ISO网间协议(CLNP)
──────┼───────┼──────────────────
88│IGRP │内部网关协议
──────┼───────┼──────────────────
89│OSPF │开放式最短路径优先协议
──────┼───────┼──────────────────
99~254│ │未分配
──────┼───────┼──────────────────
255│ │保留
━━━━━━┷━━━━━━━┷━━━━━━━━━━━━━━━━━━
2.5.8 报头校验和
报头中的任何一个域发生传输错误都会产生很多无法预料的结果。比如:如果发送地址错误,就可能无法删除一个已经过期的分组以及重编不属于同一报文的分片。报头校验和(Checksum)就可以保护IP数据报不产生这类错误,确保报头的完整性。
IP报头校验和的计算是先将校验和域置0,把报头看成一个16位的整数予列,对每个整数分别计算其二进制反码,相加后再对结果计算一次二进制反码而求得的,它常被简称为反码和的反码。
2.5.9 源地址和目的地址
源IP地址(sourceIP)和目的IP地址(destIP)域包含了数据报的原始发送方和最终接收方的32位的IP地址。数据包可能经过许多中间路由器,但是这两个地址域始终不变。
2.5.10 IP选项
目的IP地址后面的IP选项域是任选域,它的主要目的是用来装载特定的功能以便于网络测试和调试。在IP数据报中,选项是连续出现的,中间没有任何分隔符。每个选项包含一个选项码字节,后面可能跟有一个长度字节和该选项的一组字节数据。如图2.14所示,选项代码字节分成三个域。
0 1 2 3 4 5 6 7
┌─┬───┬───────┐
│C│选项类│ 选项号 │
└─┴───┴───────┘
图2.14 选项代码字节中的三个域
路由器在对IP数据报分片时,如果拷贝标志位(C)置1,说明该选项应被拷贝到所有片中去;如果置0,则仅把该选项拷贝到第一个分片中。
选项类和选项号指明选项的一般类型,并且给定了该类中的一个特殊选择。现在已经定义的有两个选项组:0是控制选项,2是调试和测量选项。在同一选项类里面,用选项号来标识选项。表2-2列出了RFC 791中已经定义的8种选项,并给出了它们的选项类和选项号,可以看出大多数选项都是用于控制目的。
表2.2
━━━┯━━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━
选项类│选项号│长度│描述
───┼───┼──┼──────────────────────
0 │ 0 │- │选项列表结束。该选项只占一个字节没有长度字节
───┼───┼──┼──────────────────────
0 │ 1 │- │无操作。该选项只占一个字节,没有长度字节。
───┼───┼──┼──────────────────────
0 │ 2 │11│安全和处理限制(用于军事目的)
───┼───┼──┼──────────────────────
0 │ 3 │可变│自由源路由。用来在一个指定路径为数据报选路
───┼───┼──┼──────────────────────
0 │ 7 │可变│记录路由。用来跟踪IP数据报所采用的路由
───┼───┼──┼──────────────────────
0 │ 8 │ 4│数据流标识符。已过时。
───┼───┼──┼──────────────────────
0 │ 9 │可变│严格源路由。用来在指定路径上为数据报选路。
───┼───┼──┼──────────────────────
2 │ 4 │可变│因特网时戳。用来记录路由上的时间戳
━━━┷━━━┷━━┷━━━━━━━━━━━━━━━━━━━━━━
2.6 校验和差错检验
现在的通信系统实际上很少在传输错误。例如微小通信信道的误码率通常能达到每传输10兆字节少于1个字节的错误(10-7),光纤信道的误码率通常是低于10-9。但不管怎么说,传输差错总是存在,必须采取相应的措施检测差错确保数据的正确。为了检测差错,网络系统通常随数据发送一小部分附加信息。发送方从数据中计算附加信息,并且接收方进行同样的计算来核对结果。
有一些比较常用的方法能有效地检测差错,比如奇偶校验(parity chedk)、累加和、循环冗余校验,TCP/IP协议中则采用“反码和的反码”的校验和方法。奇偶校验机制要求对每个发送的字符附加一个奇偶校验位(parity bit),使得这个字符中1的个数为偶数或奇数,这被分别称作偶校验或奇检验。累加和是对所有的数据按字节、字或双字对齐求字节、字或双字和,并且不记进位。循环冗余校验和反码和的校验相对来说要复杂些,下面分别给出了对应的代码。
/* 用于计算CRC-16的查找表 */
static short crctab[]=
{
0x0000,0xC0C1,0xC181,0x0140,0xC301,0x03C0,0x0280,0xC241,
0xC601,0x06C0,0x0780,0xC741,0x0500,0xC5C1,0xC481,0x0440,
0xCC01,0x0CC0,0x0D80,0xCD41,0x0F00,0xCFC1,0xCE81,0x0E40,
0x0A00,0xCAC1,0xCB81,0x0B40,0xC901,0x09C0,0x0880,0xC841,
0xD801,0x18C0,0x1980,0xD941,0x1B00,0xDBC1,0xDA81,0x1A40,
0x1E00,0xDEC1,0xDF81,0x1F40,0xDD01,0x1DC0,0x1C80,0xDC41,
0x1400,0xD4C1,0xD581,0x1540,0xD701,0x17C0,0x1680,0xD641,
0xD201,0x12C0,0x1380,0xD341,0x1100,0xD1C1,0xD081,0x1040,
0xF001,0x30C0,0x3180,0xF141,0x3300,0xF3C1,0xF281,0x3240,
0x3600,0xF6C1,0xF781,0x3740,0xF501,0x35C0,0x3480,0xF441,
0x3C00,0xFCC1,0xFD81,0x3D40,0xFF01,0x3FC0,0x3E80,0xFE41,
0xFA01,0x3AC0,0x3B80,0xFB41,0x3900,0xF9C1,0xF881,0x3840,
0x2800,0xE8C1,0xE981,0x2940,0xEB01,0x2BC0,0x2A80,0xEA41,
0xEE01,0x2EC0,0x2F80,0xEF41,0x2D00,0xEDC1,0xEC81,0x2C40,
0xE401,0x24C0,0x2580,0xE541,0x2700,0xE7C1,0xE681,0x2640,
0x2200,0xE2C1,0xE381,0x2340,0xE101,0x21C0,0x2080,0xE041,
0xA001,0x60C0,0x6180,0xA141,0x6300,0xA3C1,0xA281,0x6240,
0x6600,0xA6C1,0xA781,0x6740,0xA501,0x65C0,0x6480,DxA441,
0x6C00,0xACC1,0xAD81,0x6D40,0xAF01,0x6FC0,0x6E80,0xAE41,
0xAA01,0x6AC0,0x6B80,0xAB41,0x6900,0xA9C1,0xA881,0x6840,
0x7800,0xB8C1,0xB981,0x7940,0xBB01,0x7BC0,0x7A80,0xBA41,
0xBE01,0x7EC0,0x7F80,0xBF41,0x7D00,0xBDC1,0xBC81,0x7C40,
0xB401,0x74C0,0x7580,0xB541,0x7700,0xB7C1,0xB681,0x7640,
0x7200,0xB2C1,0xB381,0x7340,0xB101,0x7lC0,0x7080,0xB041,
0x5000,0x90C1,0x9181,0x5140,0x9301,0x53C0,0x5280,0x9241,
0x9601,0x56C0,0x5780,0x9741,0x5500,0x95C1,0x9481,0x5440,
0x9C01,0x5CC0,0x5D80,0x9D41,0x5F00,0x9FC1,0x9E81,0x5E40,
0x5A00,0x9AC1,0x9B81,0x5B40,0x9901,0x59C0,0x5880,0x9841,
0x8801,0x48C0,0x4980,0x8941,0x4B00,0x8BC1,0x8A81,0x4A40,
0x4E00,0x8EC1,0x8F81,0x4F40,0x8D01,0x4DC0,0x4C80,0x8C41,
0x4400,0x84C1,0x8581,0x4540,0x8701,0x47C0,0x4680,0x8641,
0x8201,0x42C0,0x4380,0x8341,0x4100,0x8lC1,0x8081,0x4040
};
/*计算长度为len的buf缓冲区中字节的CRC-16校验和
*
*返回的CRC-16校验和是字长型的无符号数
*crc是用于累计的CRC-16校验和
*buf是字节型的指针
*len是按字节buf的长度
*/
int
crcbuf(crc,len,buf)
register int crc;/* running CRC value*/
register u_int len;
register u_char *buf;
{
register u_int i;
for(i=0;i>8)&0xff)^crctab[(crc^*buf++)&0xff];
return(crc);
}
/*计算反码和的反码
*返回字符长型的无符号数
*buffer是字长型的指针
*size是按字节计算的buffer的长度
*/
unsigned short checksum(unsigned short *buffer,int size)
{
unsigned long cksum = 0;
while(1>16) + (cksum&0xffff);
cksum += (cksum>>16);
return(unsigned shout)(~cksum);
}
2.7 网间控制报文ICMP)
IP协议的目的比较明确,它只是尽力地、最快地传递数据到目的站点,因此很难诊断错误情况,必须通过另外的协议返回相应的信息。针对网间层的错误诊断、拥塞控制、路径控制和查询服务四大功能,ICMP提供相应的报文。例如:当一个分组无法到达目的站点或TTL超时后,路由器就会废除这个分组,同时向源站点返回一个目的站点不可达的ICMP报文;另外,当网络拥塞(congestion)时,路由器就会废除过载的分组,同时向源站点返回一个源站点抑制的报文。RFC 792中定义了ICMP协议。
如图2.15所示,ICMP报文是封装在IP数据报的数据区中发送的,因此并不能保证它的可靠性。为了避免重复报告所引起的“雪崩”现象,ICMP报文不再引发ICMP报文。
┌──────┬───────┐
│ICMP头标│ICMP数据区│ICMP报文
└──────┴───────┘
┌────┬──────────────┐
│IP头标│ IP数据区 │IP数据报
└────┴──────────────┘
图2.15 ICMP报文的封装
2.7.1 ICMP报文格式
ICMP报文分成头标和数据区两部分,其中头标包含类型、代码和校验和三个域。ICMP报文格式如图2.16所示。
0 1 2 3
01234567890123456789012345678901
┌───┬───┬───────┐
│ 类型│代码 │校验和 │
├───┴───┴───────┤
│ 数据 │
├───────────────┤
│ ··· │
└───────────────┘
图2.16 ICMP报文格式
计算校验和的算法与IP报头校验和的算法相同,也是16位二进制反码和的反码。但要注意的是,它是整个ICMP数据报的校验和而不仅仅是头标的校验和;类型域是一个单字节整数,它指出报文的类型;代码域也是一个单字节整数,它提供关于报文类型更进一步的信息。表2-3定义了15个ICMP报文类型。
0││12│
3││12│
4││12│
5││12│
8││12│
9││12│
10││12│
11││12│
网上邻居的内幕
有关网上邻居的问题,问的人一直比较多,在理解上存在的误区也普遍较为严重。鉴
于Microsoft的NETBIOS文档不是很细致,我四处收集了一些相关资料加上自己的实践经
验写了这个系列,希望能对大家有所帮助.
本来想为了增加可读性,把这个系列写成问答的形式,不过一时之间脑袋里也编不出
这么多的问题,还是按部就班先感性的对微软的浏览服务作一大致介绍,然后再深入剖
析NETBIOS的具体工作机理,大家要是有什么问题,可以提出来我们一起讨论.
***微软网络浏览过程简介***
在“Windows NT系统管理技术内幕”一书中,讲到了一个非常具有代表性的问题,我把
它摘抄了下来:
问:什么情况下会导致在网络邻居中计算机能看见却无法访问或可以访问却看不见?请
选择最佳答案: A.你的网络存在物理问题,比如网线 B.作为域主浏览器的Windows
NTserver的浏览服务坏了 C.Windows NTserver网卡有问题 D.你的网络没有问题,用户
描述的是正常的微软浏览现象
正确答案:D
书上的解释:微软的网络浏览可能在使用中出现"中断",而实际上它们并没有中断, 这种
误解是由于用户对微软网络浏览的处理过程不熟悉造成的。
就象同学们经常在抱怨的“为什么别人的网上邻居可以用,我的却不行?”“为什么有
时候可以浏览,有时候却无法浏览网络?”解铃还须系铃人,让我们一起去看看微软的
网络浏览到底是如何实现的。鉴于大家可能对NT的“域”概念还不甚了解,出现浏览故
障的也多为98的机子,我将以98的“工作组模式”为大家讲解。
1.什么是浏览列表(Browsing List) 在微软网络中,用户可以在浏览列表里看到整个
网络(何指?子网还是广播域?大家可以考虑考虑)上所有的计算机。当你通过网上邻
居窗口打开整个网络时,你将看到一个工作组列表,再打开某个工作组,你将看到里面
的计算机列表(也可在 DOS方式下用net view /domain:workgroupname命令得到),这
就是我们所说的 Browsing List。工作组从本质上说就是共享一个浏览列表的一组计算
机,所有的工作组之间都是对等的,没有规定不可以让所有的计算机同处于一个工作组
中。
2.浏览列表在哪里 曾在木棉上看到过一场争论,有人说:网上邻居里的计算机列表是
广播查询得来的。可有人举反例说:我的同学都关机了,可我还是能在网上邻居里看到
它,应该是从HUB或交换机之类较为固定的设备的缓存中取得的。 其实他们都只说对了
一个方面,把他们二人的说法结合起来就是正确答案了--- 浏览列表是通过广播查询浏
览主控服务器,由浏览主控服务器提供的。
3.浏览主控服务器又是什么 浏览主控服务器是工作组中的一台最为重要的计算机,它
负责维护本工作组中的浏览列表及指定其他工作组的主控服务器列表,为本工作组的其
他计算机和其他来访本工作组的计算机提供浏览服务,每个工作组都为会每个传输协议
选择一个浏览主控服务器,而我们经常遇到的无法浏览网络的错误大多是因为你所处的
工作组没有浏览主控服务器而造成的。你可以在一个工作组中用NBTSTAT -a
computername 命令找出使用NBT协议的浏览主控服务器,它的标识是含有_MSBROWSE_
名字段。
4.浏览主控服务器是如何指定的 缺省情况下,win98工作组中的浏览主控服务器是该工
作组中第一台启用文件及打印机共享功能的计算机,也允许手工将一台win计算机配置
为浏览主控服务器(方法会在后面讲述网络配置时具体介绍,但由于浏览主控服务器需
要维护动态浏览列表,性能会受影响),如果一个工作组中有多台计算机配置了这个选
项,或是当前的浏览主控服务器关闭了系统,又没有其他计算机启用主控设置时,就要
进行主控浏览器的选举。
5.如何通过浏览器选举产生浏览主控服务器 关于浏览器的选举报文,不太好抓包,我就
只好按书上的东西来讲述了.其实过程很简单,首先由一台计算机发送一个选举临界报文
,该报文包含了来自发送计算机的信息(操作系统,版本及NET名等),选举报文向网络中广
播,工作组中的每一台计算机都会用自身信息与选举报文进行优先级比较,主要是操作系
统起主要作用,记得好像是NT Server>NT Workstation>Win98>WFWG,反正到最后是那个
自身条件最好的成为新的浏览主控服务器.
6.整个网络浏览的过程是怎样的 当一台win98进入网络时,如果它带有服务器服务(启
用了文件及打印机共享)会向网络广播宣告自己的存在,而浏览主控服务器会取得这个
宣告并将它放入自己维护的浏览列表中;而没有在相应协议上绑定文件及打印机共享的
计算机则不会宣告,因而也就不会出现在网络邻居里了。当客户计算机想获得需要的网
络资源列表时,首先会广播发出浏览请求,浏览主控服务器收到请求后,如果请求的是
本组的浏览列表,则直接将客户所需的资源列表发回;如果请求的是其它工作组的浏览
列表,浏览主控服务器会根据本身Browsing List中的记录找到相应工作组的主控浏览
器返回给用户,用户可从那里得到它想要的浏览列表。至于如何去和另一台计算机共享
交换资源,就不是我们这里要讨论的问题了。
明白了网络浏览的原理,下面我给大家讲一个有用的应用,现在很多同学出于安全的考
虑都不太欢迎陌生人通过网上邻居访问自己的机子,可有时下部电影又需要给认识的同
学共享出来,因而还不能删除文件及打印机共享服务。怎么办?有些人给共享名加个
$,以达到隐藏的效果,可这用DOS下的net share是可被看到的;有些人给共享加上密
码,可听说这也是有办法破解的,而且很容易激起“黑客同志”的好奇心。有没有办法
将自己的机器在网络邻居里隐藏起来呢?而对于认识的同学可以让他用IP 来访问。
想对了,关键就是要阻止自己的机器向网络中去宣告自己,而且我知道我们其中的一些
人已经将此变成了现实,至于方法嘛,就不要来问我了。
注:因为有关win98浏览服务的资料很少,涉及的书籍也多为以NT的“域”模型进 行介
绍,因而我只能根据自己的理解结合netxray的实践来测试,细节部分难 免有错,欢迎
大家指正。
7.在我的网上邻居里为什么有些机子访问不了 如果微软的网上邻居真能做到所见即所
得,相信抱怨它的人不会象现在这么多,可通过前面对浏览服务的介绍,大家已经知道
这是不可能的,因为浏览列表的获得不是通过访问其中每一台机子得到的,很多时候网
络中的计算机并不能正确更新浏览列表。当一台计算机正常关机时,它会向网络发出广
播宣告,使浏览主控服务器及时将它从浏览列表中删除;而非正常关机后,浏览列表里
仍会把该条目保持很长一段时间(NT下是45分钟),这就是我们仍能在网络邻居里看到它
的原因.而98的稳定性是众所周知的 ----在还没来得及关机前就已经崩溃了^-^
SMB(Server Message Block)协议在NT/2000中用来作文件共享,在NT中,SMB运行于
NBT(NetBIOS over TCP/IP)上,使用137,139(UDP),139(TCP)端口。在2000
中,SMB可以直接运行在tcp/ip上,而没有额外的NBT层,使用TCP 445端口。因此在
2000上应该比NT稍微变化多一些。
可以在“网络连接/属性/TCPIP协议/属性/高级/WINS中设置启用或者禁用NBT
(NetBIOS over TCP/IP)。
当2000使用网络共享的时候,就面临着选择139或者445端口了。下面的情况确定会
话使用的端口:
1、如果客户端启用了NBT,那么连接的时候将同时访问139和445端口,如果从445端口
得到回应,那么客户端将发送RST到139端口,终止这个端口的连接,接着就从445端口
进行SMB的会话了;如果没有从445端口而是从139得到回应,那么
就从139端口进行会话;如果没有得到任何回应,那么SMB会话失败。
2、如果客户端禁用了NBT,他就将只从445端口进行连接。当然如果服务器(开共享
端)没有445端口进行SMB会话的话,那么就会访问失败了,所以禁用445端口后,对访
问NT机器的共享会失败。
3、如果服务器端启用NBT,那么就同时监听UDP 137、138端口和TCP139,445。如果禁
用NBT,那么就只监听445端口了。
所以对于2000来说,共享问题就不仅仅是139端口,445端口同样能够完成。
III、The NULL session,关于空会话
NULL会话(空会话)使用端口也同样遵循上面的规则。NULL会话是同服务器建立的
无信任支持的会话。一个会话包含用户的认证信息,而NULL会话是没有用户的认证信
息,也就好比是一个匿名的一样。
没有认证就不可能为系统建立安全通道,而建立安全通道也是双重的,第一,就是
建立身份标志,第二就是建立一个临时会话密匙,双方才能用这个会话进行加密数据交
换(比如RPC和COM的认证等级是PKT_PRIVACY)。不管是经过NTLM还是经过Kerberos认
证的票据,终究是为会话创建一个包含用户信息的令牌。(这段来自Joe Finamore)
根据WIN2000的访问控制模型,对于空会话同样需要提供一个令牌。但是空会话由于
是没有经过认证的会话,所以令牌中不包含用户信息,因此,建立会话双方没有密匙的
交换,这也不能让系统间发送加密信息。这并不表示空会话的令牌中不包含SID,对于
一个空会话,LSA提供的令牌的SID是S-1-5-7,这就是空会话建立的SID,用户名是
ANONYMOUS LOGON。这个用户名是可以在用户列表中看到的。但是是不能在SAM数据库中
找到,属于系统内置的帐号。
(关于这部分对NULL SESSION的分析,可以参照:《NULL Sessions In
NT/2000》http://rr.sans.org/win/null.php)
NULL会话几乎成为了微软自己安置的后门,但是微软为什么要来设置这样一个“后
门”呢?我也一直在想这个问题,如果NULL会话没有什么重要的用途,那么微软也应该
不会来设置这样一个东西。好不容易才在微软上找到这个:
当在多域环境中,要在多域中建立信任关系,首先需要找到域中的PDC来通过安全通
道的密码验证,使用空会话能够非常容易地找到PDC,还有就是关于一些系统服务的问
题。而且LMHOSTS的#Include就需要空会话的支持,可以参考文章:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q121281
还有http://support.microsoft.com/default.aspx?scid=kb;EN-US;q124184
其实建立一个空会话的条件也非常严格。首先要能够满足上面的,也就是打开TCP
139和TCP 445端口。我们可以从一次关闭这两个端口的情况中看得出来。服务器关闭
445和139端口,然后我们来进行空会话的连接。首先,客户端打算
连接的是445端口,然后再试图连接139端口。当然最后还是失败了。
仅仅开放这两个端口还不行,服务器还必须得打开IPC$共享。如果没有IPC共享,即
使共享一个文件,有权限为Anonymous Logon,也不能建立会话,即使权限设置为完全
控制,出现的连接错误依然是权限不够。这和其他帐号是不一样的。如果要允许一个文
件夹共享能够类似IPC$(命名管道而非共享)能够使用空会话,那么需要修改注册表:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserverparameters
中的:NullSessionShares,
添加新的共享名,这样才能建立一个共享的空会话。这时,将不依赖IPC的存在了。
(即使这样的空会话对于后面的突破也是一点没可取之处的,因为没有了IPC$命名管
道,RPC不可取了,这下知道IPC这个命名管道的具体实现了。呵呵)
虽然空会话建立的要求很严格,但是那都是默认建立的。既然是默认的,对于使用
WIN2K系统的服务器来说,就还是有利用的价值。最明显的就是空会话可以很方便地连
接到其他的域,枚举用户、机器等。这也就是扫描软件进行探测的原理。
1. > 有些人给共享名加个$,以达到隐藏的效果,可这用DOS下的net share是可被看到的;
这种隐藏只是微软Windows标准客户端net view的限制,不是服务端的限制,网络传输
过程中是一视同仁的,所以直接修改客户端解除这种限制或者使用第三方客户端软件
均可看到所谓的隐藏共享,比如smbclient就是典型代表。而直接修改windows客户端
的办法,99年袁哥贴过,我在华中Security版上转载过,精华区中还在。
2. > 有些人给共享加上密码,可听说这也是有办法破解的
这个破解要看是什么层面上的,纯暴力破解的就不必说了,那当然总是可以的。而95
98另有漏洞,袁哥发现的,就是他那个著名的vredir.vxd,服务端验证密码时所用长
度居然是客户端提供的,这就意味着至多猜测256次(事实上没这么多,考虑可打印字
符范围)即可进入。当初N多人用这种办法非法浏览别人的机器。2000年报告微软,
现在已修补。
http://security.nsfocus.net/index.php?act=advisory&do=view&adv_id=6
顺便说一句,利用该漏洞可以快速穷举出原始口令,虽然在攻击中这是不必要的。
3. > 因而我只能根据自己的理解结合netxray的实践来测试,细节部分难 免有错,
推荐www.ethereal.com提供的Ethereal,这是我所见过的对SMB解码最强的免费软件,
有Unix/Windows版,提供源码。
3. > 在2000中,SMB可以直接运行在tcp/ip上,而没有额外的NBT层,使用TCP 445端口。
> 因此在2000上应该比NT稍微变化多一些。
事实上正相反,在ssaxh_capabilities字段中指明不使用"扩展安全验证",此时使用
原有身份验证机制,只需去掉NBT层的Session Request,将139/TCP改成445/TCP,一
样可以成功建立空会话,并且成功打开"IPC$"。
至于更高层的RPC Over SMB,更是不必作任何变动。换句话说,从139/TCP换到445/TCP,
整个通信过程中减少了一对NBT Session Request/Response,后面的报文对于两者来说
是完全一致的。
而所谓的NBT层,即使在445通信中也未去掉,一直存在着,区别只是上面这段话。
4. > 如果客户端启用了NBT,那么连接的时候将同时访问139和445端口,
微软并没有让139/TCP与445/TCP公平竞争。发起连接的SYN包在宏观上是同时发出的,
具体起来,有时是先向139/TCP发起连接请求,有时是先向445/TCP发起连接请求,有
点随机性。
在向139/TCP发送三次握手的最后一个ACK报文时,Windows顺手携带了数据,这里以
一个刻意弄错的NetBIOS名(*SMBSERV<00...(8)>)做了一次NBT Session Request。而
445/TCP不需要NBT层的会话。
由于刻意弄错的NetBIOS名,139/TCP很难竞争过445/TCP。服务端返回Negative NBT
Session Response,并且执行了close()操作。这使得必须重新建立到139/TCP的连接
(传输层的TCP连接)。
可以看出,那个刻意弄错的NetBIOS名仅仅是为了给445/TCP制造抢先的机会。遗憾的
是,445/TCP不争气,这个端口上的任务繁重、负载较高,即使在这种不公平竞争的
情况下,139/TCP仍有可能重新抢在445/TCP之前建立NBT会话(注意,不是TCP连接)。
于是445口会回送RST,后续SMB会话建立在139/TCP连接之上。
微软自己的操作系统不认"*SMBSERV<00...(8)>",但是Samba Server 2.2.5认,居然
返回Positive Session Response。这成为精确识别Samba Server的方法之一。
微软在<>中不会提这些的,只是说139/TCP、
445/TCP公平竞争,优先使用最早返回的响应报文。不要相信它的鬼话。
话说回来,如非需求所致,完全不必关心这种差别。有需求的时候,这种差别是致命
的。
5. > 最明显的就是空会话可以很方便地连接到其他的域,枚举用户、机器等。这也就是
> 扫描软件进行探测的原理。
XP、2003缺省禁止在空会话上进行PolicyAccountDomainInformation查询,可以看到
LsarOpenPolicy2(44)失败,权限否定。如果事先指定有效帐号、口令建立SMB会话,
而非空会话,LsarOpenPolicy2(44)将成功返回。
常用网络命令(完美版)
计算机网络的主要优点是能够实现资源和信息的共享,并且用户可以远程访问信息。Linux提供了一组强有力的网络命令来为用户服务,这些工具能够帮助用户登录到远程计算机上、传输文件和执行远程命令等。
本章介绍下列几个常用的有关网络操作的命令:
ftp 传输文件
telnet 登录到远程计算机上
r - 使用各种远程命令
netstat 查看网络的状况
nslookup 查询域名和IP地址的对应
finger 查询某个使用者的信息
ping 查询某个机器是否在工作
使用ftp命令进行远程文件传输
ftp命令是标准的文件传输协议的用户接口。ftp是在TCP/IP网络上的计算机之间传输文件的简单有效的方法。它允许用户传输ASCII文件和二进制文件。
在ftp会话过程中,用户可以通过使用ftp客户程序连接到另一台计算机上。从此,用户可以在目录中上下移动、列出目录内容、把文件从远程机拷贝到本地机上、把文件从本地机传输到远程系统中。需要注意的是,如果用户没有那个文件的存取权限,就不能从远程系统中获得文件或向远程系统传输文件。
为了使用ftp来传输文件,用户必须知道远程计算机上的合法用户名和口令。这个用户名/口令的组合用来确认ftp 会话,并用来确定用户对要传输的文件可以进行什么样的访问。另外,用户显然需要知道对其进行ftp 会话的计算机的名字或IP地址。
Ftp命令的功能是在本地机和远程机之间传送文件。该命令的一般格式如下:
$ ftp 主机名/IP
其中“主机名/IP”是所要连接的远程机的主机名或IP地址。在命令行中,主机名属于选项,如果指定主机名,ftp将试图与远程机的ftp服务程序进行连接;如果没有指定主机名,ftp将给出提示符,等待用户输入命令:
$ ftp
ftp >
此时在ftp>提示符后面输入open命令加主机名或IP地址,将试图连接指定的主机。
不管使用哪一种方法,如果连接成功,需要在远程机上登录。用户如果在远程机上有帐号,就可以通过ftp使用这一帐号并需要提供口令。在远程机上的用户帐号的读写权限决定该用户在远程机上能下载什么文件和将上载文件放到哪个目录中。
如果没有远程机的专用登录帐号,许多ftp站点设有可以使用的特殊帐号。这个帐号的登录名为anonymous(也称为匿名ftp),当使用这一帐号时,要求输入email地址作为口令。
如果远程系统提供匿名ftp服务,用户使用这项服务可以登录到特殊的,供公开使用的目录。一般专门提供两个目录:pub目录和incoming目录。pub目录包含该站点供公众使用的所有文件,incoming目录存放上载到该站点的文件。
一旦用户使用ftp在远程站点上登录成功,将得到“ftp>”提示符。现在可以自由使用ftp提供的命令,可以用 help命令取得可供使用的命令清单,也可以在 help命令后面指定具体的命令名称,获得这条命令的说明。
最常用的命令有:
ls 列出远程机的当前目录
cd 在远程机上改变工作目录
lcd 在本地机上改变工作目录
ascii 设置文件传输方式为ASCII模式
binary 设置文件传输方式为二进制模式
close 终止当前的ftp会话
hash 每次传输完数据缓冲区中的数据后就显示一个#号
get(mget) 从远程机传送指定文件到本地机
put(mput) 从本地机传送指定文件到远程机
open 连接远程ftp站点
quit 断开与远程机的连接并退出ftp
? 显示本地帮助信息
! 转到Shell中
下面简单将ftp常用命令作一简介。
启动ftp会话
open命令用于打开一个与远程主机的会话。该命令的一般格式是:
open 主机名/IP
如果在ftp 会话期间要与一个以上的站点连接,通常只用不带参数的ftp命令。如果在会话期间只想与一台计算机连接,那么在命令行上指定远程主机名或IP地址作为ftp命令的参数。
终止ftp会话
close、disconnect、quit和bye命令用于终止与远程机的会话。close和disronnect命令关闭与远程机的连接,但是使用户留在本地计算机的ftp程序中。quit和bye命令都关闭用户与远程机的连接,然后退出用户机上的ftp 程序。
改变目录
“cd [目录]”命令用于在ftp会话期间改变远程机上的目录,lcd命令改变本地目录,使用户能指定查找或放置本地文件的位置。
远程目录列表
ls命令列出远程目录的内容,就像使用一个交互shell中的ls命令一样。ls命令的一般格式是:
ls [目录] [本地文件]
如果指定了目录作为参数,那么ls就列出该目录的内容。如果给出一个本地文件的名字,那么这个目录列表被放入本地机上您指定的这个文件中。
从远程系统获取文件
get和mget命令用于从远程机上获取文件。get命令的一般格式为:
get 文件名
您还可以给出本地文件名,这个文件名是这个要获取的文件在您的本地机上创建时的文件名。如果您不给出一个本地文件名,那么就使用远程文件原来的名字。
mget命令一次获取多个远程文件。mget命令的一般格式为:
mget 文件名列表
使用用空格分隔的或带通配符的文件名列表来指定要获取的文件,对其中的每个文件都要求用户确认是否传送。
向远程系统发送文件
put和mput命令用于向远程机发送文件。Put命令的一般格式为:
put 文件名
mput命令一次发送多个本地文件,mput命令的一般格式为:
mput 文件名列表
使用用空格分隔的或带通配符的文件名列表来指定要发送的文件。对其中的每个文件都要求用户确认是否发送。
改变文件传输模式
默认情况下,ftp按ASCII模式传输文件,用户也可以指定其他模式。ascii和brinary命令的功能是设置传输的模式。用ASCII模式传输文件对纯文本是非常好的,但为避免对二进制文件的破坏,用户可以以二进制模式传输文件。
检查传输状态
传输大型文件时,可能会发现让ftp提供关于传输情况的反馈信息是非常有用的。hash命令使ftp在每次传输完数据缓冲区中的数据后,就在屏幕上打印一个#字符。本命令在发送和接收文件时都可以使用。
ftp中的本地命令
当您使用ftp时,字符“!”用于向本地机上的命令shell传送一个命令。如果用户处在ftp会话中,需要shell做某些事,就很有用。例如用户要建立一个目录来保存接收到的文件。如果输入!mkdir new_dir,那么Linux就在用户当前的本地目录中创建一个名为new_dir 的目录。
从远程机grunthos下载二进制数据文件的典型对话过程如下:
$ ftp grunthos
Connected to grunthos
220 grunthos ftp server
Name (grunthos:pc): anonymous
33l Guest login ok, send your complete e-mail address as password.
Password:
230 Guest 1ogin ok, access restrictions apply.
Remote system type is UNIX.
ftp > cd pub
250 CWD command successful.
ftp > ls
200 PORT command successful.
l50 opening ASCII mode data connection for /bin/1s.
total ll4
rog1
rog2
226 Transfer comp1ete .
ftp > binary
200 type set to I.
ftp > hash
Hash mark printing on (1024 bytes/hash mark).
ftp > get rog1
200 PORT command successfu1.
150 opening BINARY mode data connection for rogl (l4684 bytes).
# # # # # # # # # # # # #
226 Transfer complete.
14684 bytes received in 0.0473 secs (3e + 02 Kbytes/sec)
ftp > quit
22l Goodbye.
使用telnet命令访问远程计算机
用户使用telnet命令进行远程登录。该命令允许用户使用telnet协议在远程计算机之间进行通信,用户可以通过网络在远程计算机上登录,就像登录到本地机上执行命令一样。
为了通过telnet登录到远程计算机上,必须知道远程机上的合法用户名和口令。虽然有些系统确实为远程用户提供登录功能,但出于对安全的考虑,要限制来宾的操作权限,因此,这种情况下能使用的功能是很少的。当允许远程用户登录时,系统通常把这些用户放在一个受限制的shell中,以防系统被怀有恶意的或不小心的用户破坏。
用户还可以使用telnet从远程站点登录到自己的计算机上,检查电子邮件、编辑文件和运行程序,就像在本地登录一样。但是,用户只能使用基于终端的环境而不是X Wndows环境,telnet只为普通终端提供终端仿真,而不支持 X Wndow等图形环境。
telnet命令的一般形式为:
telnet 主机名/IP
其中“主机名/IP”是要连接的远程机的主机名或IP地址。如果这一命令执行成功,将从远程机上得到login:提示符。
使用telnet命令登录的过程如下:
$ telnet 主机名/IP
启动telnet会话。
一旦telnet成功地连接到远程系统上,就显示登录信息并提示用户输人用户名和口令。如果用户名和口令输入正确,就能成功登录并在远程系统上工作。
在telnet提示符后面可以输入很多命令,用来控制telnet会话过程,在telnet联机帮助手册中对这些命令有详细的说明。
下面是一台Linux计算机上的telnet会话举例:
$ telnet server. somewhere. com
Trying 127.0.0.1…
Connected to serve. somewhere. com.
Escape character is ';?]';.
“TurboLinux release 4. 0 (Colgate)
kernel 2.0.18 on an I486
login: bubba
password:
Last login:Mon Nov l5 20:50:43 for localhost
Linux 2. 0.6. (Posix).
server: ~$
server: ~$ logout
Connection closed by foreign host
$
用户结束了远程会话后,一定要确保使用logout命令退出远程系统。然后telnet报告远程会话被关闭,并返回到用户的本地机的Shell提示符下。
r-系列命令
除ftp和telnet以外,还可以使用r-系列命令访问远程计算机和在网络上交换文件。
使用r-系列命令需要特别注意,因为如果用户不小心,就会造成严重的安全漏洞。用户发出一个r-系列命令后,远程系统检查名为/etc/hosts.equiv的文件,以查看用户的主机是否列在这个文件中。如果它没有找到用户的主机,就检查远程机上同名用户的主目录中名为.rhosts的文件,看是否包括该用户的主机。如果该用户的主机包括在这两个文件中的任何一个之中,该用户执行r-系列命令就不用提供口令。
虽然用户每次访问远程机时不用键入口令可能是非常方便的,但是它也可能会带来严重的安全问题。我们建议用户在建立/etc/hosts.equiv和.rhosts文件之前,仔细考虑r-命令隐含的安全问题。
rlogin命令
rlogin 是“remote login”(远程登录)的缩写。该命令与telnet命令很相似,允许用户启动远程系统上的交互命令会话。rlogin 的一般格式是:
rlogin [ -8EKLdx ] [ -e char ] [-k realm ] [ - l username ] host
一般最常用的格式是:
rlogin host
该命令中各选项的含义为:
-8 此选项始终允许8位输入数据通道。该选项允许发送格式化的ANSI字符和其他的特殊代码。如果不用这个选项,除非远端的终止和启动字符不是或,否则就去掉奇偶校验位。
-E 停止把任何字符当作转义字符。当和-8选项一起使用时,它提供一个完全的透明连接。
-K 关闭所有的Kerberos确认。只有与使用Kerberos 确认协议的主机连接时才使用这个选项。
-L 允许rlogin会话在litout模式中运行。要了解更多信息,请查阅tty联机帮助。
-d 打开与远程主机进行通信的TCP sockets的socket调试。要了解更多信息,请查阅setsockopt的联机帮助。
-e 为rlogin会话设置转义字符,默认的转义字符是“~”,用户可以指定一个文字字符或一个nnn形式的八进制数。
-k 请求rlogin获得在指定区域内的远程主机的Kerberos许可,而不是获得由krb_realmofhost(3)确定的远程主机区域内的远程主机的Kerberos 许可。
-x 为所有通过rlogin会话传送的数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。
rsh命令
rsh是“remote shell”(远程 shell)的缩写。 该命令在指定的远程主机上启动一个shell并执行用户在rsh命令行中指定的命令。如果用户没有给出要执行的命令,rsh就用rlogin命令使用户登录到远程机上。
rsh命令的一般格式是:
rsh [-Kdnx] [-k realm] [-l username] host [command]
一般常用的格式是:
rsh host [command ]
command可以是从shell提示符下键人的任何Linux命令。
rsh命令中各选项的含义如下:
-K 关闭所有的Kerbero确认。该选项只在与使用Kerbero确认的主机连接时才使用。
-d 打开与远程主机进行通信的TCP sockets的socket调试。要了解更多的信息,请查阅setsockopt的联机帮助。
-k 请求rsh获得在指定区域内的远程主机的Kerberos许可,而不是获得由krb_relmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可。
-l 缺省情况下,远程用户名与本地用户名相同。本选项允许指定远程用户名,如果指定了远程用户名,则使用Kerberos 确认,与在rlogin命令中一样。
-n 重定向来自特殊设备/dev/null的输入。
-x 为传送的所有数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。
Linux把标准输入放入rsh命令中,并把它拷贝到要远程执行的命令的标准输入中。它把远程命令的标准输出拷贝到rsh的标准输出中。它还把远程标准错误拷贝到本地标准错误文件中。任何退出、中止和中断信号都被送到远程命令中。当远程命令终止了,rsh也就终止了。
rcp命令
rcp代表“remote file copy”(远程文件拷贝)。该命令用于在计算机之间拷贝文件。
rcp命令有两种格式。第一种格式用于文件到文件的拷贝;第二种格式用于把文件或目录拷贝到另一个目录中。rcp命令的一般格式是:
rcp [-px] [-k realm] file1 file2
rcp [-px] [-r] [-k realm] file directory
每个文件或目录参数既可以是远程文件名也可以是本地文件名。远程文件名具有如下形式:rname@rhost:path,其中rname是远程用户名,rhost是远程计算机名,path是这个文件的路径。
rcp命令的各选项含义如下:
-r 递归地把源目录中的所有内容拷贝到目的目录中。要使用这个选项,目的必须是一个目录。
-p 试图保留源文件的修改时间和模式,忽略umask。
-k 请求rcp获得在指定区域内的远程主机的Kerberos 许可,而不是获得由krb_relmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可。
-x 为传送的所有数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。
如果在文件名中指定的路径不是完整的路径名,那么这个路径被解释为相对远程机上同名用户的主目录。如果没有给出远程用户名,就使用当前用户名。如果远程机上的路径包含特殊shell字符,需要用反斜线()、双引号(”)或单引号(’)括起来,使所有的shell元字符都能被远程地解释。
需要说明的是,rcp不提示输入口令,它通过rsh命令来执行拷贝。
netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。
该命令的一般格式为:
netstat [选项]
命令中各选项的含义如下:
-a 显示所有socket,包括正在监听的。
-c 每隔1秒就重新显示一遍,直到用户中断它。
-i 显示所有网络接口的信息,格式同“ifconfig -e”。
-n 以网络IP地址代替名称,显示出网络连接情形。
-r 显示核心路由表,格式同“route -e”。
-t 显示TCP协议的连接情况。
-u 显示UDP协议的连接情况。
-v 显示正在进行的工作。
[例]在本地机上使用netstat命令。
$ netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 1 [ ] STREAM CONNECTED 270 @00000008
unix 1 [ ] STREAM CONNECTED 150 @00000002
unix 1 [ ] STREAM CONNECTED 104 @00000001
unix 1 [ ] STREAM CONNECTED 222 @00000004
unix 1 [ ] STREAM CONNECTED 171 @00000003
unix 1 [ ] STREAM CONNECTED 271 /dev/log
unix 1 [ ] STREAM CONNECTED 225 /dev/log
unix 1 [ ] STREAM CONNECTED 223 /dev/log
unix 1 [ ] STREAM CONNECTED 203 /dev/log
unix 1 [ ] STREAM CONNECTED 105 /dev/log
……
nslookup命令
nslookup命令的功能是查询一台机器的IP地址和其对应的域名。它通常需要一台域名服务器来提供域名服务。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。
该命令的一般格式为:
nslookup [IP地址/域名]
[例]在本地机上使用nslookup命令。
$ nslookup
Default Server: name.tlc.com.cn
Address: 192.168.1.99
>
在符号“>”后面输入要查询的IP地址或域名并回车即可。如果要退出该命令,输入exit并回车即可。
finger命令
finger命令的功能是查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell等信息。如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程。
该命令的一般格式为:
finger [选项] [使用者] [用户@主机]
命令中各选项的含义如下:
-s 显示用户的注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息。
-l 除了用-s选项显示的信息外,还显示用户主目录、登录shell、邮件状态等信息,以及用户主目录下的.plan、.project和.forward文件的内容。
-p 除了不显示.plan文件和.project文件以外,与-l选项相同。
[例]在本地机上使用finger命令。
$ finger xxq
Login: xxq Name:
Directory: /home/xxq Shell: /bin/bash
Last login Thu Jan 1 21:43 (CST) on tty1
No mail.
No Plan.
$ finger
Login Name Tty Idle Login Time Office Office Phone
root root *1 28 Nov 25 09:17
……
ping命令
ping命令用于查看网络上的主机是否在工作,它向该主机发送ICMP ECHO_REQUEST包。有时我们想从网络上的某台主机上下载文件,可是又不知道那台主机是否开着,就需要使用ping命令查看。
该命令的一般格式为:
ping [选项] 主机名/IP地址
命令中各选项的含义如下:
-c 数目 在发送指定数目的包后停止。
-d 设定SO_DEBUG的选项。
-f 大量且快速地送网络封包给一台机器,看它的回应。
-I 秒数 设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-l 次数 在指定次数内,以最快的方式送封包数据到指定机器(只有超级用户可以使用此选项)。
-q 不显示任何传送封包的信息,只显示最后的结果。
-r 不经由网关而直接送封包到一台机器,通常是查看本机的网络接口是否有问题。
-s 字节数 指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。
TurboLinux系统提供了大量命令和许多实用工具软件,本书由于篇幅的关系,主要介绍了TurboLinux的一些常用命令和实用软件。读者可以使用系统提供的联机帮助手册获取更多的信息。
TurboLinux系统的联机手册中有大量的可用信息,根据其内容分成若干节。在Linux联机帮助手册上,几乎每个命令都有说明。因此,当用户对于Linux上的一个命令不会用或是不太了解时,就请使用联机帮助命令。
本章主要介绍几个常用的联机帮助命令。包括:
man 查询每个命令的使用方法
help 查询Shell命令
whereis 查询某个命令的位置
locate 查询某个文件的位置
man命令
这个命令应该是每个Linux系统上都有的。它格式化并显示在线的手册页。通常使用者只要在命令man后,输入想要获取的命令的名称(例如 ls),man就会列出一份完整的说明,其内容包括命令语法、各选项的意义以及相关命令等。
该命令的一般形式为:
man [选项] 命令名称
命令中各选项的含义分别为:
-M 路径 指定搜索man手册页的路径,通常这个路径由环境变量MANPATH预设,如果在命令行上指定另外的路径,则覆盖MANPATH的设定。
-P 命令 指定所使用的分页程序,缺省使用/usr/bin/less–is,在环境变量MANPAGER中预设。
-S 章节 由于一个命令名称可能会有很多类别,至于类别,列出如下:
章节 说明
1 一般使用者的命令
2 系统调用的命令
3 C语言函数库的命令
4 有关驱动程序和系统设备的解释
5 配置文件的解释
6 游戏程序的命令
7 其他的软件或是程序的命令
有关系统维护的命令
-a 显示所有的手册页,而不是只显示第一个。
-d 这个选项主要在检查时使用,如果用户加入了一个新的文件,就可以用这个选项检查是否出错,这个选项并不会列出文件内容。
-f 只显示出命令的功能而不显示其中详细的说明文件。
-p string 设定运行的预先处理程序的顺序,共有下列几项:
e eqn t tbl
g grap r refer
p pic v vgrind
-w 不显示手册页,只显示将被格式化和显示的文件所在位置。
例如:查看cd命令的使用方法。
$ man cd
cd(n) Tcl Built-In Commands cd(n)
_________________________________________________________________
NAME
cd - Change working directory
SYNOPSIS
cd ?dirName?
_________________________________________________________________
DESCRIPTION
Change the current working directory to dirName, or to the
home directory (as specified in the HOME environment vari-
able) if dirName is not given. Returns an empty string.
KEYWORDS
working directory
Tcl 1
(END)
可以按q键退出man命令。
help命令
help命令用于查看所有Shell命令。用户可以通过该命令寻求Shell命令的用法,只需在所查找的命令后输入help命令,就可以看到所查命令的内容了。
例如:查看od命令的使用方法。
$ od --help
whereis命令
这个程序的主要功能是寻找一个命令所在的位置。例如,我们最常用的ls命令,它是在/bin这个目录下的。如果希望知道某个命令存在哪一个目录下,可以用whereis命令来查询。
该命令的一般形式为:
whereis [选项] 命令名
说明:一般直接使用不加选项的whereis命令,但用户也可根据特殊需要选用它的一些选项。
该命令中各选项的含义分别为:
b 只查找二进制文件
m 查找主要文件
s 查找来源
u 查找不常用的记录文件
例如:查找ls命令在什么目录下。
$ whereis ls
ls:/bin/ls/usr/man/man1/ls.1
ADSL与UADSL系统
非对称数字用户线系统(ADSL),是一种采用DMT线路码的数字用户线系统。其下行单工信道速率可高达8.192Mbit/s,实际速率取决于线径和传输距离。ADSL所支持的主要业务是互联网和电话。其最大特点是无须改动现有铜缆网络设施就能提供宽带业务。近五年来,由于技术的逐渐成熟、产量的大幅提升,ADSL的市场价格下降了80%以上,再加上电缆调制解调器飞速发展的压力,ADSL已开始进入大发展阶段。
然而传统全速率ADSL系统成本偏高,而且实际能开通1.5Mbit/s速率以上的用户线通常仅35%左右;用户侧设备CPE的安装需派人去安装,因而不仅安装开通成本高,而且费时费事,不适于业务的大规模推广和发展。一种轻便型无分路器的ADSL标准G.992.2迅速问世,有人称为UADSL。基本思路有两点:第一是下行速率降低到1.5Mbit/s左右,第二是在用户处不用电话分路器。前者使UADSL的频带只有ADSL的一半,从而使复杂性和功耗也只有其一半,而且1.5Mbit/s下行速率的传输距离可达5.4km;后者可以免除派人去用户处进行CPE安装测试的麻烦及相应带来的附加高成本,适合于大规模推广应用。这种UADSL系统有一个最大好处是标准化程度高,便于实现不同厂家局端和用户侧设备CPE的兼容,有利于大规模推广。
目前全球主要UADSLCPE的互操作试验已进入最后阶段,不久有望基本实现任意CPE与任意局端的互操作,从而不仅大大增加了用户的选择范围,而且可以大幅度地推动UADSL价格的下降和业务的大规模扩展。其用户侧modem将如同今天的模拟modem一样,成为计算机的插卡,而且性能价格比更好,线路条件要求不高,有可能成为未来5年的主导宽带接入技术之一。
另一方面,ADSL技术也在继续改进和发展,特别是无分路器ADSL。这种方式只要在每一个话机前装一个小小的微滤波器即可。此时无分路器ADSL同样具备UADSL无须派人去安装CPE的重要优点,但却具备了原来全速率ADSL所具有的所有优点,诸如速率高、网络可升级、支持未来的图像和交互式在线游戏等新业务以及VoDSL应用,但是否对其他所有业务完全无影响还有待进一步证实。ADSL的另一个最新发展趋势是VoiceoverADSL(VoDSL),其基本思路是在原有模拟语音业务不变的情况下,再提供4~20条数字话音通路,还能提供以太网接口乃至机顶盒接口。该技术的出现大幅度提高了用户线的带宽利用率和业务收入,强化了ADSL对中小企业应用的性能价格比优势。对于ADSL来说,为了降低敷设成本,便于大规模推广,除了改进设备技术以外,还必须密切注意降低与安装开通运营有关的成本。
总的来看,ADSL已经进入大发展阶段,如果说有什么障碍的话,那就是电信运营者自己的业务经营战略考虑,也就是与2Mbit/s专线和ISDN业务的协调问题。这将是一个痛苦的却又不得不作出的抉择。此外,也在很大程度上与管制政策有关。开放的市场特别是用户线的开放(用户环的非绑定)无疑会大大加速ADSL的发展。据报道,在未来几年内北美几个本地电话公司已计划敷设3000万线的系统,非绑定的用户环数量已超过5%,英国和德国也分别计划敷设600万和150万线的系统,而韩国已敷设220万线,成为世界上ADSL发展最快的国家。我国各地已开始进行数万线规模的试商用,初步反映不错,今年计划发展90万线用户。ADSL的主要缺点是对线对的苛刻要求,影响了传输速率或传输距离,这方面依靠与光纤DLC的结合将是扬长避短的好举措。据美国SBC的分析,在上述DLC环境下至少可以在80%的用户线上提供1.5Mbit/sDSL业务,而其中的60%又可以提供至少6Mbit/s的业务,大大扩展了DSL的服务范围。此外,无论设备还是业务的价格仍偏高,不利于大规模地推广。
VDSL系统
有关ADSL系统发展的另一个趋向是进一步提高系统的下行带宽,即演变成所谓甚高速数字用户线(VDSL)系统。这种技术在双绞线上下行传输速率可以扩展至(26~52)Mbit/s,从而可容纳6至12个4Mbit/sMPEG-2信号,其传输距离则分别缩短至1000或300米左右。由于传输距离的缩短,码间干扰大大减小,对数字信号处理要求大为简化,收发机成本可望比ADSL降低一半。因而如果配线或引入线的质量尚可,此时将FTTC,特别是APON与VDSL技术相结合可以提供光纤敷设成本、电子设备成本和提供的带宽能力方面的最佳平衡,是一种比较现实理想的宽带混合接入方案。目前,VDSL仍处于现场试验阶段,其标准工作尚在进行,其频谱安排尚未达成一致,线路码型也在争论之中,其性能和成本是否有竞争力还有待实践检验。
校园网宽带接入的调试经验
我校校园网划分成办公网、教学网、宿舍网和图书馆网四部分,为了顺利接入电信宽带并稳定运行,我们在接入前利用电子阅览室的计算机及两条拨号上网线路进行预先调试。通过对代理软件、单双网卡、动静态IP地址的对比调试,以及对一、二级代理、分网段接入单台交换机的调试,选出了最佳方案。现把调试中遇到的问题和解决方法总结出来供同行参考。
1、一级代理选用SyGate
通过对各种代理服务器软件的安装、调试对比,鉴于SyGate易于使用、设置简单、支持几乎所有Internet应用和协议(包括HTTP、FTP、POP3、SMTP等),甚至支持Internet的一些新应用和协议(如ICQ、MS CHAT、RealAudio、NetShow、MS NetMeeting等),因此,一级代理(接电信宽带)选用了SyGate。装完SyGate,客户机第一次运行IE出现“正在检测代理服务器设置”,这是正常的。调试过程中出现了以下问题,大家要注意。
(1)如一级代理、二级代理都采用SyGate,网卡设置成“自动获取IP地址”可能造成IP地址冲突。特别是一级代理服务器重启时,会被二级代理的SyGate自动先指定IP,网络中的客户机重启时也一样,造成IP地址冲突,无法连上网络。
(2)MSN 5.0的语音聊天无法实现,可用“Yahoo通”实现语音聊天,这说明SyGate不支持Socks代理。
2、二级代理采用Windows 2000 Server自带的“连接共享”功能
我校的办公网、教学网(机房)和图书馆网(含电子阅览室)都有自己的服务器(有的采用无盘站),若不设二级代理,学生机可登录到中心服务器,造成安全隐患。因此,这几处服务器要设为二级代理服务器。
二级代理服务器的网卡TCP-IP属性设置(采用双网卡)与一级代理服务器有所不同。为避免可能引起的服务器之间的冲突,尽量少改变原服务器及客户机的设置,笔者认为采用Windows 2000 Server自带的Internet连接共享功能(采用双网卡)在客户机较少(一个机房学生机不超过70台)的情况下比较方便,具有一定的优越性。
服务器设置方法(如图所示):
客户机(学生机)设置:
* IP地址:设成自动获取IP地址。
* DNS:必须设,可设为服务器的IP及ISP的IP。
* 网关:可不设或对准上一级IP(设了查找快一点)。
图1 服务器进线端(网卡)设置
以上设置采用设置网关的方法,客户机(学生机)自动获取IP地址,所以在服务器上应配置启用DNS和DHCP服务。我们在有盘的电子阅览室中采用上述方法效果较好,在华教无盘Windows 2000系统上试验可以实现代理,但因为有四个网卡,还有一些细节需调整。
采用Windows 2000 Server做二级代理需要注意:启动服务器后先禁用接本地局域网网卡,接着启动服务器IE,再启用本地局域网网卡,否则服务器的IE会连不上网。
3、代理服务器采用双网卡
图2 接本地局域网(网卡)设置
代理服务器均采用双网卡的优点是可以提高内网访问的速度,也能使一级代理服务器受到保护,减少遭受内外攻击的机会。双网卡选用同型号为好,同型号的安装方便、匹配性好、网速快。双网卡的驱动程序要先装,然后再装代理服务器软件;重装网卡一定要重装代理服务器软件,否则网络无法连接。
4、水晶头及模块接线的问题
对于双绞线(超五类)与模块插头、插座的连接有两个方案——T568A和T568B,大多数网络配置使用T568B布线标准 。我校校园网建设分几个阶段,施工公司不同,采用了两类布线标准并且有的跳线没有按标准,这给调试、使用带来了很多麻烦(对此笔者建议最好按统一标准施工,这样可以免除后顾之忧)。类似我校这种已建成的网络,如果调试中网络不通,首先要确定是否是水晶头及模块接线的问题。可用笔记本电脑接入,能上网的说明线路没有问题,是客户机的问题;还可用网络线测试仪(我们用“能手牌”)判断是哪根线没接好,再调整或重接。
5、解决网卡驱动安装、设置问题
排除线路问题后,仍不能上网则是客户机的硬件或网卡驱动安装、设置的问题。
硬件问题:
(1)PCI插槽损坏:有时碰到的插槽损坏具有迷惑性,如新硬件找得到,驱动安装了,能设置,Ping得通,就是上不了网,若碰到这种情况不妨换一个插槽试一试。
(2)网卡损坏:换一个网卡试试。
(3)其他卡影响:调试家属宿舍电脑时遇到一台装了清华永新正臣闭路电视股票接收卡,芯片为Rel8029AS与网卡(实达902)芯片Rel8139D为同一类型,出现找到两次网卡,以为是同一个网卡,影响了安装、设置,卸掉后问题得到解决。
网卡驱动安装、设置问题:
在前面的问题排除后,一般按步骤安装、设置不会出现什么问题。但若Ping网卡本身的IP地址正常,Ping其他计算机的IP地址不通,有可能就是网卡的网络适配器和网络协议没有安装好,这种情况下建议不要在网上邻居的属性设置上花时间,最好(也最快)的方法是在设备管理器中将网络适配器从系统配置中删除,然后重新启动计算机,自动寻找驱动程序进行安装。
6、避免IP冲突的办法
前面所述服务器软件和代理软件若没有统一管理,任其安装、配置,将存在对主服务器产生冲突的隐患。因此加强管理,规定凡安装上述软件需经网络管理人员同意,并在指导下安装。将固定IP地址、办公网、教学网、宿舍网和图书馆网划分在不同网段,规定不得擅自更改IP地址,避免IP冲突。 |