sniffer学习专题:一 关于sniffer pro

 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

模型中的一个层次要向它上面的层次提供服务,而且都依赖于下一层提供给自己的服务。封装是一个过程,通过这个过程,模型中上层的信息可以被插入到下层的数据域中。当一条消息离开网络化工作站时,它要从第七层到第一层逐层通过。应用层产生的数据要传到表示层。表示层把数据从应用层带走,并给数据加上表示层的文件头与文件结束块。这些数据接着要到达会话层,这层也加上自己的文件头与文件结束块,并把它传递到传输层。这个过程不断重复,直到数据到达物理层为止。物理层不会考虑数据的含义。它知识把数据转换成字节,把它放入传输介质中。

 

从较高层次到较低层次的数据,包括较高层次的文件头与文件结束块,都被称做较低层次的负载。

 

当数据到达目的地时,接收工作站的物理层收到数据并进行相反的过程(也被称做解封装)。物理层把字节转换回原来的格式,并传递给数据链接层。数据链接层去掉自己的文件头与文件结束块,把数据传递给网络层。如此重复下去,直到数据到达了应用层为止。

 

图1.3 OSI参考模型的七个层次

OSI模型的各个层次为:

n 应用层 这是OSI模型中的最高层次,它负责管理网络应用程序之间的交流。这一层并不是应用程序本身,尽管有一些应用程序可能会执行应用层的功能。应用层协议的例子包括文件传输协议(FTP)、超文本传输协议(HTTP)、简单邮件传送协议(SMTP)和Telnet。

n 表示层 这层负责数据演示、加密与压缩。

n 会话层 会话层负责建立并管理终端系统之间的对话。会话层协议在很多协议中都不使用。会话层协议的例子包括NetBIOS与远程过程调用(RPC)。

n 传输层 这层负责程序或者过程之间的交流。端口或者插口的数目可以用来识别这些特殊的过程。传输层协议的例子包括传输控制协议(TCP)、用户数据报协议(UDP)和顺序分组交换协议(SPX)。

n 网络层 这层负责从来源主机访问,并向目的主机传送的数据包。网络层从传输层得到数据,把它装在一个数据包或者数据报中。逻辑网址通常被分配给这层的主机。网络层协议的例子包括IP与IPX。

n 数据链接层 这层负责在相同的物理区段中的网卡之间传输数据。数据链接层进行的对话通常都是基于硬件的地址进行的。数据链接层把来自网络层的数据包装到一个帧中。数据链接层协议的例子包括以太网、令牌环与点对点协议(PPP)。在这层运行的设备包括连接桥与交换机。

n 物理层 这层定义了连接器和接线方式,还有关于电压和字节如何通过有线(或无线)介质传播的说明。这层的设备包括中继器、集中器和Hub。在物理层运行的设备不需要了解传输路径。

OSI模型适用性很广,可以用来解释任何的网络协议。因此,各种协议集都可以由OSI模型反映。对OSI模型的深入理解在网络分析、比较与故障检修中都会提供很多帮助。但是,也要记住并不是所有的协议都能用OSI模型很好地说明。例如,TCP/IP就要用美国国防部(DoD)模型来说明。

在20世纪70年代,美国国防部开发了一种四层模型。核心的因特网协议都附属于这个模型。DoD模型几乎是OSI模型的浓缩版本。它的四个层次是:

n 处理层 这层定义了执行用户级别应用程序的协议,这些程序包括邮件发送、远程登录和文件传递。

n 主机对主机层 这层处理连接、数据流管理和丢失数据的重新传输问题。

n 因特网层 这层负责通过连接两台电脑的不同的一组物理网络,从来源主机向目的主机传送数据。

n 网络访问层 这层处理通过特殊的硬件介质传送数据的问题。

TCP/IP

TCP/IP由美国国防高级研究计划局(DARPA)开发,是现在应用最广泛的路由传送协议(routed protocol)。图1.4描述了TCP/IP的各个层次与OSI参考模型的七个层次的相互对应关系。

 

1

 

 

 

2

 

 

 

3

 

 

 

4

 

 

 

5

 

 

 

6

 

 

 

7

 

 

 

其他媒体访问控制协议

 

 

 

以太网/

IEEE 802.3

 

 

 

令牌环/

IEEE 802.5

 

 

 

IP

 

 

 

UDP

 

 

 

TCP

 

 

 

Telnet,FTP,SMTP,DNS,POP3,IMAP4及其他协议

 

 

 

图1.4 TCP/IP协议栈的各个层次

因特网协议(IP)是第三层协议,它包含有寻址与控制信息,可以确定数据包的路径。IP是一种无连接协议,因此,它提供不可靠但尽力而为的数据包传送服务。因为IP只提供尽力而为的数据传送,所以数据包可能会在传递过程中丢失。所有的IP数据包都包含有文件头与实际负载(来自上一层的数据)。图1.5给出了一个IP数据包的格式。

 

总长

 

 

 

标头长度

 

 

 

版本

 

 

 

服务类型

 

 

 

文件头检查和

 

 

 

协议

 

 

 

数据存活时间

 

 

 

标记

 

 

 

标识符

 

 

 

分割定位

 

 

 

选项+扩展位

 

 

 

目的地址

 

 

 

来源地址

 

 

 

数据

 

 

 

图1.5 IP数据包的格式


如果可靠的话,需要进行有保证的传输,IP要依赖TCP来提供这种功能。TCP是一种面向连接的协议,运行于IP上层,可以按顺序传输,并要求目的方的回应。

 

在TCP/IP的传输层,TCP与UDP是两个最常用的协议。它们的文件头都包括来源与目的端口号,用端口号来确定传输的应用或过程是由哪个TCP区段或者UDP数据报产生的,以及要传输到哪个TCP区段或者UDP数据报。TCP是一种面向连接的协议,而UDP是一种无连接协议。TCP的文件头包括顺序号码与回应序号,以便进行可靠的传送。TCP还可以使用拖动视窗原则。这种算法允许在应用程序与网络数据流之间放置缓冲装置。从网络接收到的数据被放在这个缓冲装置中,一直到应用程序来读取为止。视窗是在收到回应之前,可以放入缓冲装置的数据的数目。

使用TCP的应用程序包括FTP、Telnet、网络文件系统(NFS)、SMTP、HTTP、域名系统(DNS),以及网络新闻传输协议(NNTP)。使用UDP的应用程序包括DNS、路由信息协议(RIP)、NFS、简单网络管理协议(SNMP),以及动态主机配置协议/启动协议(DHCP/BOOTP)。可以看到,有些应用程序(比如DNS和NFS)两种协议都可以使用。

IP寻址

TCP/IP使用IP地址来向正确的目的地发送消息。网络中的每台TCP/IP主机都需要有一个独特的IP地址与网卡相对应。IP地址由网络管理人员指定,或者是人工指定,或者是由反向地址解析协议(RARP)、BOOTP,或者DHCP这类动态寻址协议来指定。当前IP寻址机制(Ipv4)把IP地址定义为32位、二进制的数字——例如:

11000111 00011010 10101100 01010011

为了使它用起来更方便,IP地址被分成四组,每组8位:

11000111. 00011010. 10101100. 01010011

这些八位数据接着从二进制转化为十进制的数据,并写成如下形式(四个十进制数字分开表示):

199.26.172.83

在把数字输入电脑时,电脑自动把它转化成32位的二进制数字,不需要考虑单个数字是八位还是十进制数字。

一个IP地址有两部分,分别是网络ID和主机ID。网络ID与区段中的所有工作站共享,而且在整个工作过程中,必须是独特的。主机ID可以在区段中识别一个特殊的设备(主机),而且必须在特殊区段内保证自由。


在因特网协议第4版中,当今常用的IP系统被称做Ipv4。新系统Ipv6,或者又称为因特网协议第6版,目前已经开发出来,并在一些小型设备中使用。Ipv6通过把地址从32位增加到128位,以便容纳更多的地址。

 

当早期的IP寻址机制建立起来时,IP地址被分成5类。通常分为A、B、C和D类的IP地址用于进行多点传送,而E类用来进行实验,准备将来使用。表1.1显示了IP地址各类。请注意在表中,N=网络,H=主机。

IP地址中最左面的四位的值决定了一个地址的类。例如,所有A类地址最左面的位都是0,但其余的31位可以是0或者1(这些位置上的值用x表示):

0xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx

这就决定了A类地址的范围是从0.0.0.0到127.255.255.255。B类地址最左面的位必须是1,相邻的位为0;所有其他的位可以变化:

10xxxxxx xxxxxxxx xxxxxxxx xxxxxxxx

根据这个规则,B类地址的范围是从128.0.0.0到191.255.255.255。同样,C、D和E类地址分别设定第二位、第三位和第四位为1。


127.0.0.0属于A类地址,但是保留不用。127.0.0.1这个IP地址在TCP/IP主机上通常用于返回过程。0.0.0.0这个IP地址保留起来用做默认路径。

 

A、B和C类在各自范围中为地址各自定义了一个默认的子网掩码。A类子网掩码把网络的IP地址部分与主机部分分离开。在A类地址中,第一个八位数组代表网络ID,而后三个八位数组代表主机ID。在B类地址中,前两个八位数组代表网络ID,后两个八位数组代表主机ID。在C类地址中,前三个八位数组代表网络ID,最后一个八位数组代表主机ID。

表1.1 IP地址分类

 

最左面的八位数组

 

范围(第一个八位数组)

 

网络/主机部分

 

默认子网掩码

 

A

 

0xxxxxxx

 

0-127

 

N.H.H.H

 

255.0.0.0

 

B

 

10xxxxxx

 

128-191

 

N.N.H.H

 

255.255.0.0

 

C

 

110xxxxx

 

192-223

 

N.N.N.H

 

255.255.255.0

 

D

 

1110xxxx

 

224-239

 

未提供

 

未提供

 

E

 

1111xxxx

 

240-255

 

未提供

 

未提供

 

 

因特网中引入了无类别网络区域路由(CIDR),用来改进因特网路由系统的可测量性,并允许对地址进行更有效的分配。CIDR使用变长子网掩码(VLSMS),取消了分类网络(classful network)的概念。这就是无类别路由。

 


1.3 OSI模型、协议与设备(2)

我们通常使用十进制计数系统,它是用10个数值(0,1,2,3,4,5,6,7,8,9)来代表数字。

计算机使用二进制计数系统来表示数据。二进制计数系统使用两个值,0和1,来代表数字。这是因为计算机只能识别两种状态:电荷存在或者不存在。即使计算机显示给你的是十进制的数字,但实际上电脑中进行了二进制数字的转换。一个单一的二进制数字(0或1)被称为一个二进制数的位。八位数组这个词被用来描述8位的一个单位。大多数现代计算机也用一个字节(字节)来表示8位。在计算机的早期,字节这个词还用来描述其他数目位的数组。大多数情况下,四位数组这个词与半个字节相同,因此是4位数。

十六进制使用16个值(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)来代表数字。十六进制系统很有用,因为一个字节(8

位)可以只用两个十六进制数字来表示。这就使人们用十六进制格式时读取或者写入大的数字更容易一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值