1.1 简介
假设现在是下午4点,你正坐在书桌旁,桌上摊开了3本书。你正在努力工作着,试图找出过去的8个小时中,你公司的文件服务器性能突然下降的原因。在你公司的200名用户中,有将近100人已经打电话到公司投诉,抱怨连接速度太慢,总是处于等待状态。你现在压力很大,因为今天公司的首席执行官(CEO)也打电话过来了。公司的主要文件服务器(NetWare
5服务器)在过去一年中一直运行得很顺利,没有出现过任何问题。你检查了系统控制器、CPU使用率和缓存,确定它们都在正常工作范围内。你甚至还更新并注册了查毒程序,然后运行,以确保没有病毒。你现在只得求助于所有你一年前收起来的参考书。你拂去书上的灰尘,开始了苦读,准备用整夜的时间来找出问题的所在。
如果能够很容易就找到问题所在就好了,就像打开台式机,运行一个应用程序来检查你的服务器与端口的连接。但是如果根据分析的结果,你发现可能是因为网卡太旧、设备震动或者错误操作所产生的问题,那么究竟是哪个影响了网络的连接呢?你甚至会惊讶地发现在你的内部网上,有些人“可能”正在向你的服务器发送“死亡之Ping”(Ping
of Death),或者进行其他类型的拒绝式服务(Denial of
Service,DoS)攻击。你怎样才能指出这些问题呢?非常简单,答案是——使用Network
Associates公司的Sniffer Pro产品,这些就都可以实现了。
1.2 了解网络分析
信息的电子分发日益重要,系统间交换的数据的复杂程度也在以极快的速度增加。今天的计算机网络负载着各种数据、声音与影像传输。网络应用程序要求随时有效,不能够被中断或者堵塞。
随着公司内的信息系统的发展,人们开始使用越来越多的网络设备,导致网络系统覆盖了很多领域。要这样的网络系统尽可能有效地运行是很重要的,因为故障停机时间既令资源不够有效地使用,也会增加公司的开支。
网络分析是一种技术范畴,网络工程师与设计人员可以用它来研究网络的性质,包括可连接性、容量与性能。网络分析可以用来估计当前网络的容量,了解它的性能,或者为将来使用的应用程序及其版本更新做出规划。
进行网络分析最好的一种工具是网络分析程序,比如Sniffer
Pro。网络分析程序是一种设备,它可以为你提供非常好的思路,允许你逐个数据包查看通过网络的实际数据,从而了解网络的实际情况。典型的网络分析程序能理解很多协议,这使它可以显示网络上主机间进行的会话。
网络分析程序通常提供下述能力:
n 捕获并解码网络上的数据
n 分析具有专门的协议的网络活动
n 生成并显示关于网络活动的统计结果
n 进行网络能力的类型分析。
网络分析基本知识
你记得客户有多少次对你说网速太慢吗?或者程序设计人员说过多少次有网络问题?即使它并不是网络问题,但你怎样才能证明它不是呢?这就是网络分析涉及的内容了。
一个网络分析程序就是一个故障检修工具,可以用来发现并解决网络交流问题、规划网络容量,并进行网络优化。网络分析程序能捕获所有通过你的网络流量,并把它们翻译出来进行解码,还可以翻译正在使用的不同协议。解码后的数据以一种容易理解的格式显示。网络分析程序还可以只捕获与过滤器定义的选择标准相符的流量数据。这就使技术人员可以仅仅捕获与当前问题相关的数据。一个典型的网络分析程序可以在三个窗格中显示解码后的数据:
n 概要:显示一个帧所含最高级协议的概略性介绍,以及捕获时间、来源与目的地址。
n 详细:提供帧中各层次的详细说明。
n Hex:以十六进制形式显示捕获的原始数据。
一个网络专家可以很容易地使用这类界面分析数据。图1.1中给出了一个三窗格显示的例子。
网络分析程序可以更深入地提供建立显示过滤器的功能,这样网络专家就可以很快发现他在找什么了。
高级的网络分析程序提供类型分析能力。这种特性允许网络分析程序查看上千个数据包,然后发现问题。网络分析程序还可以提供这些问题可能出现的原因,以及如何解决问题的线索。
图1.1 Sniffer Pro解码屏幕的三窗格显示
Sniffe
Pro有一种众所周知的特性——高级功能,它可以分析网络中的帧,根据协议与标准的数据再进行比较,然后发现网络中的潜在问题。Sniffer
Pro的高级功能还提供出问题的可能原因以及可能的解决方法。你将在第3章中“深入了解Sniffer
Pro界面”中,了解这一功能的有关内容。
故障检修方法
成功检修故障的关键是要知道在正常情况下网络是如何进行工作的。这帮助网络专家迅速地发现不正常情况。使用网络故障检修策略,就可以系统地发现并解决问题,而且把对用户的影响降至最低。但不幸的是,有时甚至经验丰富的网络专家也没能掌握故障检修的基本概念,花几分钟来评估症状就可以在解决错误问题时节省好几个小时。
一种好的解决问题的方法包括以下步骤:
1.了解症状并确定问题。
2.把问题单独分离出来并了解它们。
3.确定并测试产生问题的原因。
4.解决问题。
5.证明问题已经得到了解决。
故障检修中,进行研究是非常重要的一个部分。因特网是各种网络信息的有价值的来源,是提供指导性的材料、论坛和参考资料的访问途径。作为故障检修方法论的一部分,你可以用因特网作为一种工具,来对错误或者你网络上的一些症状进行研究。
要解决网络问题,第一步就是要先了解它们出现了哪些症状。你可以从不同的途径来了解问题的症状:终端用户会抱怨自己遇到了网络性能或者连接上的问题,同时网络管理器可能也会给你发出通知,向你通报网络问题。从各方面彻底了解了问题症状后,可以把这些症状与正常的运行情况进行比较,确定网络在出现问题之前有什么改变。另外,要确定你自己是否检修过类似问题,并写下详细的问题记录。
一旦确定了问题与症状,下一步就是要把问题单独分离出来,并了解问题。当症状出现时,你的责任是要收集数据用于分析,缩小问题存在的可能范围。缩小问题范围的最佳方法是用各个击破的方法。试着说明问题是否与网络的一个区段有关,或者与一个单独的工作站有关。确定问题是否会在网络的其他地方复制。
解决问题的第三步是要确定并测试问题产生的原因,还要测试你的假设是否成立。你可以使用网络分析程序和其他工具来分析网络传输的数据。在你建立了一个关于问题产生原因的理论之后,你必须要测试它是否合理。
一旦确定了问题的解决方案,应该立刻付诸实施。方案中应该包括升级硬件或者软件。可能还需要增加LAN区段或者升级硬件来增加容量。
最后一步是要通过由终端用户进行测试,来确保所有的问题已经得到了解决。有时解决一个问题会产生一个新问题。另外一些时候,你解决了的问题其实是更深层次的问题的症状。如果这个问题确实解决了,你应该把解决步骤记录成文档。但是,如果问题仍然存在,解决问题的过程就必须重新重复一次。图1.2给出了解决问题的流程图。
否
是
问题的症状是否消失了?
记为文档
问题得到解决
证明问题的解决方案
解决问题
确定并测试问题产生的原因
把问题分离并了解问题
了解症状并确定问题
图1.2 解决问题流程图
1.3 OSI模型、协议与设备(1)
为了了解网络分析,学习网络的工作理论是非常重要的。要使网络能够工作,运行在网络中的计算机需要就一些规则达成共识。这样的一些规则被称为协议。协议在网络词汇中的作用与人类词汇中的语言很相似。两个使用不同协议的计算机要互相交谈的话,就像一个人想用日语同一个不懂日语的人交谈一样。那当然无法工作!
在今天,网络交流中存在着很多协议。在建立网络的早期,每个网络发展商都写自己的协议。最后发展出了一些标准,这样不同网络商的设备可以用统一的协议进行交流。这些协议包括传输控制协议/因特网协议(TCP/IP)、网间分组交换协议/顺序分组交换协议(IPX/SPX),以及AppleTalk。
要成为一个成功的网络故障检修员,你需要对网络协议有非常深入的了解。了解不同的协议与它们的特性,这将帮助你在网络运行不正常时能发现问题。
网络协议可以分为面向连接协议与无连接协议两种。面向连接协议在数据传输之前,在传输源与目的电脑之间建立了一个通道。这种协议保证了数据包以与传输顺序相同的次序到达接收数据的工作站。如果数据包在传输过程中丢失了,它会重新进行传输。目的主机对传输过来的数据做出响应。因为这些特性,面向连接协议还被称为可靠协议。无连接协议不保证数据一定会到达目的主机。它们提供Best-effort(尽力而为)的传输模式,不保证数据包一定到达,或者以什么顺序到达。这些具体问题由上一层的协议控制。无连接协议又被称为不可靠协议。但是,它们需要的费用少,而且通常比面向连接协议的传输更快。
本书将详细介绍如何捕获、查看、解码、过滤和研究很多不同的可以使用Sniffer
Pro网络分析程序的协议。
1.3.1 OSI模型与DOD模型
在20世纪80年代初,国际标准组织(ISO)建立了开放系统互连(OSI)模型,它描述了网络协议和组件是如何一起工作的。OSI参考模型把网络协议功能分成七个层次。每一层代表一组相关的规格、功能与活动。
图1.3中给出了OSI模型的这七个层次。OSI模型中的一个层次要向它上面的层次提供服务,而且都依赖于下一层提供给自己的服务。封装是一个过程,通过这个过程,模型中上层的信息可以被插入到下层的数据域中。当一条消息离开网络化工作站时,它要从第七层到第一层逐层通过。应用层产生的数据要传到表示层。表示层把数据从应用层带走,并给数据加上表示层的文件头与文件结束块。这些数据接着要到达会话层,这层也加上自己的文件头与文件结束块,并把它传递到传输层。这个过程不断重复,直到数据到达物理层为止。物理层不会考虑数据的含义。它知识把数据转换成字节,把它放入传输介质中。