资源描述
Enter诊断与测试诊断与测试网络故障网络故障Enter诊断与测试网络故障1目目 录录第一章第一章计算机网络体系结构概述计算机网络体系结构概述第五章第五章Windows2000ServerWindows2000Server网络操作系统网络操作系统第六第六 章章 传输层维护传输层维护前前 言言第九章第九章 无线网络的故障诊断无线网络的故障诊断目 录第一章 计算机网络体系结构概述第五章 2第六章传输层维护传输层维护第六 章 传输层维护3本章学习目标本章学习目标理解并可以描述理解并可以描述OSIOSI模型中传输层的功能模型中传输层的功能识别传输层的各组成部分识别传输层的各组成部分理解理解TCP/UDPTCP/UDP、IPX/SPXIPX/SPX等协议等协议了解传输层的故障现象并能排除故障了解传输层的故障现象并能排除故障本章学习目标4本章要点内容传输层的功能传输层的功能传输层的组件传输层的组件传输层的故障诊断与排除传输层的故障诊断与排除本章要点内容传输层的功能5本章学前要求了解了解OSIOSI七层的模型七层的模型了解计算机网络基础知识了解计算机网络基础知识本章学前要求 了解OSI七层的模型66.1 传输层的功能传输层的功能.1.1传输层概述传输层也称为运输层,是介于低3层通信子网和高3层资源子网之间的一层,是OSI模型的核心。从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。如果没有传输层,那么互联网将遭到巨大的麻烦。复杂而经常变化的网络缺少了相应的安全机制,其中众多的事务将发生错误。为了避免或减少错误的发生,则必须由上层协议(如应用层或应用程序本身)完成流量控制和错误恢复工作。尽管传输协议并不能完全避免出现传输错误,但是这些协议对于在易于出错的网络(如因特网)上传输数据还是有效的。传输层的最终目标是向它的用户(通常是应用层中的进程)提供高效的、可靠的和性价比合理的服务。为了实现这个目标,传输6.1 传输层的功能.1.1 传输层概述76.1 传输层的功能传输层的功能层需要充分利用网络层提供给它的服务。在传输层内部,完成这项工作的硬件和软件称为传输实体。传输实体可能位于操作系统的内核,或者在一个独立的用户进程中,或者以一个链接库的形式被绑定到网络应用中,或者位于网络接口卡上。由于有了传输层,应用开发人员可以根据一组标准的原语来编写代码,而且他们的程序有可能运行在各种各样的网络上,他们不用处理不同的子网接口,也不用担心不可靠的传输过程。如果所有实际的网络都是完美无缺的,并且具有相同的服务原语,也保证不会发生变化,那么传输层可能也就不再需要了。然而,在现实世界中,传输层承担了将子网在技术上、设计上的各种缺陷与上层隔离的关键作用。由于这个原因,许多人习惯与将网络的层分成两部分:第1层至第4层为一部分,第4层之上为另一部分。底下的4层可以被看作传输服务提供者,而上面的层则是传输服务用户。这种“提供者用户”的区分,对于层的设计有重要的影响,同时也把传输层放到了一个关键的位置上,因为它构成了可靠数据传输服务的提供者和用户之间的主要边界。传输层反映并扩展了网络层子系统的服务功能,并通过传输层地址提供给高层用户传输数据的通信端口,使系统间高层资源的共享不必考虑数据通信方面的问题。6.1 传输层的功能 层需要充分利用网络层提86.1 传输层的功能传输层的功能1.1.数据分段数据分段将数据发送给网络层之前,传输层将数据分段。而在将数据上传给会话层或应用层之前,传输层也需要重新组合数据。当传输层接受来自OSI模型中的上层所发送的数据时候,数据可能会太长以致不能被一次传输给网络层。这种情况下,正是传输层的功能将数据分解为更小的称为数据段的部分,然后将他们分别传送到网络层。每一个数据段都标记有一个序列号,所以,如果数据段到达目的地而顺序发生错乱,仍然可以利用此序列号将它们正确的组装起来。2.2.流量控制流量控制传输层的另一个功能是流量控制,它可以防止目的地被大量的数据淹没,这种情况可能会导致数据包的丢失。传输层实现这一功能,是通过确立一个传送数据包的最大字节数。在达到此值之前,接收方必需提供对收到数据包的确认。TCP/IP协议中,这样一个最大字节数被称为窗口宽度。如果发送设备在发送了窗口宽度的字节之前,并没有回应,那么,它将停止发送数据。如果在一定的特定时间间隔中,没有收到确认,发送方将从最后收到确认的地方开始,重新发送数据。6.1 传输层的功能96.1 传输层的功能传输层的功能 3.校验和的提供校验和的提供 校验和是一个基于数据段,在字节的基础上计算出来的16位的比特值。许多传输层提供了校验和来保证数据的完整性。传输层的校验和提供了与CRC类似的功能。必须注意的是,CRC并不是一个完美的机制,以保证数据在到达目的地的途中不发生崩溃。路由器与交换机可以用来发现崩溃了的数据,重新计算CRC,并将崩溃了的数据发送到应该送达的地方。由于CRC是在数据崩溃以后计算的,接受方将无法获知数据曾经崩溃过。中间设备对传输层中的校验和不做计算。因此,如果通路上发生数据崩溃,最后接收方的工作站将检测出校验和错误并丢弃数据。校验和可应用于面向连接与无连接协议的传输层之中。4.对数据的辨认对数据的辨认 传输层必须能够通知接收方的计算机包含在报文中的数据类型。这个信息保证了应用程序对数据的正确处理。当一个计算机接受数据包时,数据从网络接口卡被接收,然后被发6.1 传输层的功能 3.校106.1 传输层的功能传输层的功能送到数据链路层,网络层,最后到达传输层。接着如何处理呢?最终,收到的数据必定到达一个应用程序。但是,计算机可能同时具有一个,两个,三个,甚至几十个的应用程序在等待数据。幸运的是,传输层的头提供了信息,决定收到的数据所应服务的应用程序。在TCPIP协议中,端口号被用来确认应到达的应用程序。5.决定服务质量决定服务质量 网络中,服务质量(QoS)决定了数据传输的可靠性以及传输的性能级别。当一个应用程序传送数据时,在传输层上工作的协议将帮助确定业务质量。如果一个应用需要可靠的方式来传输数据,它将利用一个传输层的协议如TCP,来提供所要求的可靠性,不过通常有一些性能级别上的丧失。如果应用不需要高度的可靠性,可以使用可靠性稍差,但更倾向于提高效率的协议,如UDP。6.面向连接意味着可靠面向连接意味着可靠 数据需要经过不确定的环境进行传输,例如互联网,那么对6.1 传输层的功能 送到数据链路116.1 传输层的功能传输层的功能于QoS的要求变得会特别强烈。需要可靠性的应用将利用这种传输层协议,它提供了一条端到端的虚电路,利用流量控制,确认,以及其他方式来保证数据的传送。这样的协议被称为面向连接的协议。两个网络节点之间会话层或数据传输会话的建立,是传输层所提供的可靠性的个重要组成部分。注意:虚电路与人们常用的 交谈相类似。其中,会话(数据传送)只有在连接已经建立起来后才可以发生。呼叫者拨号,铃响,然后有人回应。被呼叫者相应后,呼叫者表明自己的身份,被呼叫者回应呼叫者,然后通话开始。7.面向无连接意味着不可靠性 并不是所有的应用程序都需要传输层来提供可靠的QoS。有一些应用程序主要在局域网中,而不是在巨大的互联网中运行。而可靠性,虽然很重要,却可以轻易地实现。在这些应用程序中,用来提供高可靠性的开销与复杂的传输系统既不必要也不需要。这种情况下,应用程序将使用一个无连接的传输层协议。因为从网络带宽与处理的角度来说,它的开销较小。6.1 传输层的功能 于Q126.1 传输层的功能传输层的功能 既然传输层的整个思想是向网络层提供一个可靠的上层,那么为什么会存在不可靠的传输层协议呢?要回答这个问题,首先要记住的是:对于面向连接的会话,传输层并不只是提供可靠性给网络层。它同时通过校验和来保护数据,并且向应用程序提供了有用的信息。因此,如果一个应用程序要求传输层协议,而希望避免面向连接的协议所需要的附加开销的话,这可能是因为可靠性并不是主要的问题,它就可以使用无连接协议。6.1 传输层的功能 136.2 传输层的组件传输层的组件6.2.1TCP协议1TCP1TCP概述概述TCP(TransmissionControlProtocol,传输控制协议)是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的。互联网络与单个网络不同,因为互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、分组大小和其他的参数。TCP的设计目标是能够动态的适应互联网络的这些特性,而且当面对多数失败的时候仍然足够健壮。2TCP2TCP报文段的结构报文段的结构TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。TCP报文段的格式如图所示。可以看出,一个TCP报文分为首部和数据两部分。TCP报文段首部的前20个字节是固定的,后面有4N字节是可有可无的选项(N为整数)。因此TCP首部的最小长度是20个字节。首部提供了可靠服务所需的字段。6.2 传输层的组件6.2.1 TCP协议146.2 传输层的组件传输层的组件08162431 源端口目标端口序列号(发送)确认号(接收)偏移量(4bits)保留位 (6bits)标志位窗口尺寸URGACKPSHRSTSYNFIN TCP校验和紧急指针选项和填充(如果有的话)数据图6-2 报文段的格式6.2 传输层的组件0 156.2 传输层的组件传输层的组件3.TCP端口号端口号要想获得TCP服务,发送方和接收方必须创建一种被称为套接字的端点。每个套接字有一个套接字号(地址),它是由主机的IP地址以及本地主机局部的一个16位数值组成的,此16位数值被称为端口。TCP层用端口号来区别不同类型的应用程序。由于在TCP报文段结构中端口地址是16bit,所以端口号的域值范围是065535,除了0号端口是无效端口之外,其他的165535号端口的具体分类如下:公用端口:它的范围是从0到1023,它们定义在一些应用广泛的服务上。注册端口:范围是从1024到49151。它们不确定地分配给一些应用服务。私有端口:其范围是从49152到65535。理论上,不应为服务定义这些端口。常用的TCP协议所使用的端口号如下表所示。6.2 传输层的组件 3.16如果在发送这个ARP查找的过程中发送者收到了发往该系统的另外一个境外包(out-bound packet),那么第一个包很可能会从ARP队列中清除出去。如果所有实际的网络都是完美无缺的,并且具有相同的服务原语,也保证不会发生变化,那么传输层可能也就不再需要了。当一个UDP分组到来的时候,它的数据域被递交给与目标端口相关联的那个进程。TCP的可靠性服务的最重要方面之一是使用了确认计时器(也称为重新发送计时器),这会确保及时发现丢失的片段,从而可以快速重新发送该数据。接着如何处理呢?最终,收到的数据必定到达一个应用程序。如果SYN1而ACK=0,则表示该数据包为连接请求,如果SYN=1而ACK=1 则表示接受连接。如果应用不需要高度的可靠性,可以使用可靠性稍差,但更倾向于提高效率的协议,如UDP。第一章 计算机网络体系结构概述校验和可应用于面向连接与无连接协议的传输层之中。A、3次握手不成功 B、出现不可靠连接PSH:如果置位,接收端应尽快把数据传送给应用层。图6-13 在网络分析系统中查看数据包的检验和传统的Sniffer只是可以提供一个数据包序列号和信息的截获信息的描述,给管理员一个关于这个会话的判断。需要可靠性的应用将利用这种传输层协议,它提供了一条端到端的虚电路,利用流量控制,确认,以及其他方式来保证数据的传送。第五章 Windows 2000 Server网络操作系统反过来,如果缺省确认计时器设为200毫秒,但如果想连接到速度缓慢的连接上的站点的话,那么就会看到同一片段发送多次。点击十六进制码的任何部分,右边都会显示出相应的ASCII代码,这个以便于进行分析。幸运的是,传输层的头提供了信息,决定收到的数据所应服务的应用程序。6.2 传输层的组件传输层的组件4.TCP4.TCP的连接管理的连接管理IP地址和端口被称作套接字,它代表一个TCP连接的一个连接端。为了获得TCP服务,必须在发送端主机的一个端口上和接收端主机的一个端口上建立连接。TCP连接用两个连接端来区别,也就是(连接端1,连接端2)。连接端互相发送数据包。协议名称所使用端口号FTP(控制)21FTP(数据)20HTTP80TELNET23GOPHER70SMTP25表6-1 TCP协议常用的端口号如果在发送这个ARP查找的过程中发送者收到了发往该系统的另外176.2 传输层的组件传输层的组件 一个TCP数据报包括一个TCP头,后面是选项和数据。一个TCP头包含6个标志位。它们的意义分别为:SYN:标志位用来建立连接,让连接双方同步序列号。如果SYN1而ACK=0,则表示该数据包为连接请求,如果SYN=1而ACK=1 则表示接受连接。FIN:表示发送端已经没有数据要求传输了,希望释放连接。RST:用来复位一个连接。RST标志置位的数据包称为复位包。一般情况下,如果TCP收到的一个分段明显不是属于该主机上的任何 一个连接,则向远端发送一个复位包。URG:为紧急数据标志。如果它为1,表示本数据包中包含紧急数据。此时紧急数据指针有效。ACK:为确认标志位。如果为1,表示包中的确认号时有效的。否则,包中的确认号无效。PSH:如果置位,接收端应尽快把数据传送给应用层。TCP是一个面向连接的可靠传输协议。面向连接表示两个应用端在利用TCP传送数据前必须先建立TCP连接。TCP的可靠性通过校6.2 传输层的组件 186.2 传输层的组件传输层的组件验和,定时器,数据序号和应答来提供。通过给每个发送的字节分配一个序号,接收端接收到数据后发送应答,TCP协议保证了数据的可靠传输。数据序号用来保证数据的顺序,剔除重复的数据。在一个TCP会话中,有两个数据流(每个连接端从另外一端接收数据,同时向对方发送数据),因此在建立连接时,必须要为每一个数据流分配ISN(初始序号)。为了了解实现过程,我们假设客户端C希望跟服务器端S建立连接,然后分析连接建立的过程(通常称作三阶段握手):图6-3 TCP协议三次握手6.2 传输层的组件 验和,定时器,数据序号和196.2 传输层的组件传输层的组件6.2.2 UDP协议1.UDP协议概述协议概述Internet协议簇支持一个无连接的传输协议:UDP(User Datagram Protocol,用户数据报协议)。UDP为应用程序提供了一种方法来发送经过封装的IP数据报,而且不必建立连接就可以发送这些IP数据报。用户数据报协议UDP只是在IP数据报服务之上增加了一点功能,这就是端口功能。2.UDP报文段的结构报文段的结构用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8个字节,由4个字段组成,每个字段都是两个字节。各字段意义如下:源端口字段 源端口号 目的端口字段 目的端口号 长度字段 UDP数据报的长度 校验和字段 防止UDP数据报在传输中出错6.2 传输层的组件6.2.2 UDP协议206.2 传输层的组件传输层的组件 UDP数据报首部中校验和的计算方法有些特殊。在计算校验和时在UDP数据报之前要增加12个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是UDP数据报真正的首部。校验和就是按照这个过度的UDP数据报来计算的。伪首部既不向下传送,也不向上提交。上图给出来伪首部各字段的内容。伪首部的第3个字段全是零,第4个字段是IP首部中的协议字段的值。对于 UDP,此协议字段值为17,第5个字段是UDP数据报的长度。UDP传输的数据报是由8字节的头和数据域构成的。源端口和目标端口分别用来识别出源机器和目标机器的端点。当一个UDP分组到来的时候,它的数据域被递交给与目标端口相关联的那个进程。这种关联关系是在调用了BIND原语或者其他某一种类似的做法之后建立起来的。当目标端必须将一个应答送回给源端的时候,源端口是必需的。发送应答的进程只要将进来的数据段中的source port(源端口)域复制到输出的数据段中的destination port(目标端口)域,就可以指定在发送方机器上由那个进程来接收应答。6.2 传输层的组件 UDP216.2 传输层的组件传输层的组件UDP尤其适用的一个领域是在客户/服务器的情形下。通常,客户给服务器发送一个短的请求,并且期望一个短的应答回来。如果这里的请求或者应答丢失的话,客户就会超时,于是它只要重试即可。3.UDP3.UDP端口号端口号UDP也使用端口号来标识发送和接收的应用程序。与TCP类似,UDP有两类端口,分别是:众所周知的端口用于UDP上的标准服务,包括DNS(端口号53),SNMP(端口号161)和其它一些协议,服务器在这些端口上监听想要访问服务的客户。临时端口:客户在自己的对话端使用临时端口。用户数据报协议UDP只在IP的数据报服务之上增加了很少的一点功能,这就是端口的功能(有了端口,运输层就能进行复用和6.2 传输层的组件 UD226.2 传输层的组件传输层的组件分用)和差错检测的功能。虽然UDP用户数据报只能提供不可靠的交付,但UDP在某些方面由其特殊的优点。(1)发送数据之前不需要建立连接(当然发送数据结束时也没有连接需要释放),因而减少了开销和发送数据之前的时延。(2)UDP没有拥塞控制,也不保证可靠交付,因此主机不需要维持具有许多参数的、复杂的连接状态表。(3)用户数据报只有8个字节的首部开销,比TCP的20个字节的首部要短.6.2 传输层的组件 分用)和差错检测的功能。虽236.3 传输层的故障诊断与排除传输层的故障诊断与排除6.3.1传输层的故障类别网络的不断发展,网络故障的复杂多变,使得网络管理工作变得越来越复杂,在这种情况下,现在的网络为了提高易用性,都设计成了层次结构。在网络故障排查过程中,充分利用网络分层的特点,可以快速准确地定位故障点,提高故障排查的效率。不同主机之间的数据传输主要通过传输层实现,在传输过程中,电磁信号干扰、噪音过大、数据被更改等情况都可能导致传输失败。常见的传输错误包括:主要包括CRC校验错误、对齐数据包错误、过大数据包错误、过小数据包错误,此类数据包由于存在错误会直接被网卡丢弃,而不会被传给操作系统处理;目标主机对接收到的数据包的IP报头进行校验,并与源端的校验和进行比较,如比较的结果不一致,就表示该数据包在传输过程中被修改,并将该数据包丢弃;6.3 传输层的故障诊断与排除6.3.1 传输层的故障246.3 传输层的故障诊断与排除传输层的故障诊断与排除目标主机对接收到的数据包的TCP报头进行校验,并与源端的校验和进行比较,如比较的结果不一致,就表示该数据包在传输过程中被修改,并将该数据包丢弃;注意:此处以以太网中的IP数据包为例,本文中提到的数据包均指以太网中的IP数据包。6.3.2传输层的数据包捕获与分析1.1.配置环境配置环境传输层最主要的协议是TCP和UDP,所以,这层的数据包就是TCP数据包和UDP数据包。TCP和UDP采用16bit的端口号来识别应用程序的。对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69魏蜹CP/IP实现所提供的服务都用知名的11023之间的端口号。这一层位于OSI七层中的应用层,对于我们想截取特定的网络服务中的数据包,这个层次的配置是很有用处的。例如想截获telnet中的用户名和密码这里我们就应该选择23Port。6.3 传输层的故障诊断与排除 256.3 传输层的故障诊断与排除传输层的故障诊断与排除配置界面如图6-11所示:图6-5 配置界面6.3 传输层的故障诊断与排除 266.3 传输层的故障诊断与排除传输层的故障诊断与排除 这里选择了telnet Ftp和 三种端口进行截获。端口号分别显示在左边的列表框里边,而右边则对应着被选框。也可以通过配置文件proto.dat自行的添加删除更改端口号列表,例如:想添加以Windows 2000终端服务到列表框中,则在文件proto.dat里面找到TCP PORTS选项,添加3389 Terminal Server到3333 DEC-NOTES和3421 BMAP之间,重新启动IRIS则可以是配置生效。2.捕获TCP数据包 在数据包编辑区内,显示着完整的数据包。窗口分两部分组成,左边的数据是以十六进制数字显示,右边则对应着ASCII。点击十六进制码的任何部分,右边都会显示出相应的ASCII代码,这个以便于进行分析。十六进制码是允许用户进行编辑再生的,可以重写已经存在的的数据包。新的数据包可以被发送,或者保存到磁盘中。如图6-6、6-7、6-8所示。6.3 传输层的故障诊断与排除 276.3 传输层的故障诊断与排除传输层的故障诊断与排除图6-6 进入数据包捕获界面6.3 传输层的故障诊断与排除 图6-6 进286.3 传输层的故障诊断与排除传输层的故障诊断与排除图6-7 选择TCP数据包6.3 传输层的故障诊断与排除图6-7 选择TCP数据296.3 传输层的故障诊断与排除传输层的故障诊断与排除图6-8 数据包捕获界面6.3 传输层的故障诊断与排除图6-8 数据包捕获界面306.3 传输层的故障诊断与排除传输层的故障诊断与排除3.3.分析分析TCPTCP数据包数据包1)解码概况TCP提供一种面向连接的、可靠的字节流服务。也就是说一个普通的会话形式(例如,下载网页),整个过程之前一定是建立了一个连接,会话结束在销毁这个连接。当两个主机建立了一连接之后,互相之间才可以发送数据,直到连接中断。丢失或受损的数据包都被重传。如有必要,进来的数据包被重组,以便与原来的传输顺序匹配顺序是按每个数据包中的序列号(sequencenumber)来维系的。每个被发送的字节,以及开放和关闭请求,均被单独标上不同的序列号。传统的Sniffer只是可以提供一个数据包序列号和信息的截获信息的描述,给管理员一个关于这个会话的判断。而IRIS则远远超出了这一层次,软件可以重新组织HTTP协议中的数据,进行填充、着色使得数据被还原成网页。当然这种功能也可以用在其他的方面,例如重新构造Email的附件等。图6-9为一个捕获的TCP数据包包头信息。6.3 传输层的故障诊断与排除 316.3 传输层的故障诊断与排除传输层的故障诊断与排除图6-9 tcp数据包头信息6.3 传输层的故障诊断与排除图6-9 tcp数据包头326.3 传输层的故障诊断与排除传输层的故障诊断与排除22)对截获的数据进行解码)对截获的数据进行解码设置DECODE选项,如果你不熟悉请仔细看看上面的文字。下面启动DECODE选项,只有我们打开DecodeEnableCodeOutput时,才能使解码进行。这里主要是由三个窗口组成:主机行为窗口(HostActivity)、查看会话窗口(SessionData)和会话列表窗口(SessionsView)。(1)主机行为窗口(HostActivity)图6-10 主机行为窗口6.3 传输层的故障诊断与排除 336.3 传输层的故障诊断与排除传输层的故障诊断与排除这个窗口把会话以树形排列,每一个小项代表一个服务(通常是使用同一个端口的协议)。当我们在这个窗口选择了一个服务(如图13),在数据列表窗口就会相应的显示出服务器和客户端的会话。(2)查看会话窗口(SessionData)如下图所示:图6-11 会话窗口6.3 传输层的故障诊断与排除 346.3 传输层的故障诊断与排除传输层的故障诊断与排除这个窗口显示我们截获的每一会话的具体信息。在我们上面的图中,IRIS截获了一个HTTP的会话。你可以看到客户端发出的浏览请求和WEB服务器的回应。(3)会话列表窗口(SessionsView)这个区域可以描述出你所截获会话的收发地址,端口,协议等。形式和截获数据包的窗口差不多在这里不做赘述。4.4.具体分析实例具体分析实例1)物理错误包信息在100M以太网网络中,下面使用网络分析查看网络的传输情况。图6-12所示的是系统捕获网络时的概要统计视图,从图中可以知道,当前网络中有一个CRC错误数据包,这个数据包在目的端进行CRC检验时,发现与源端的校验和不一致,于是网卡直接丢弃该数据包。6.3 传输层的故障诊断与排除 356.3 传输层的故障诊断与排除传输层的故障诊断与排除图6-12 网络分析系统捕获到的物理错误包信息6.3 传输层的故障诊断与排除图6-12 网络分析系统366.3 传输层的故障诊断与排除传输层的故障诊断与排除图6-13 在网络分析系统中查看数据包的检验和6.3 传输层的故障诊断与排除图6-13 在网络分析系376.3 传输层的故障诊断与排除传输层的故障诊断与排除2)IP和TCP的校验和信息单击数据包视图,在数据包列表中双击某条数据包信息,将打开如图6-13所示的数据包解码窗口,在这里我们可以查看该数据包的IP和TCP的校验和是否正确,图6-13中IP和TCP的校验和均为正确,表示该数据包在传输的过程中未被修改,是正确的。通过上面的方法,即可知道网络中错误的数据包信息。如果网络中出现过多此类数据包,则表示网络存在传输错误,并很可能引发网络大量丢包、时断时续等网络故障。这时,网络管理人员应首先检查网络线路,因为线路干扰,信号衰减等原因引发该问题的可能性较大。在确定线路正常后,再检查发送或接收错误数据包的主机,以确定是否丰在人为的攻击导致出现这种传输错误。6.3.3TCP的故障诊断与排除我们碰到的大部分问题都与应用程序特定的问题有关,与TCP并没有关系。但是,因为TCP提供了范围很广泛的服务,所以会话中虚电路也可能出现很多问题。下面我们就把常见的一些问题简单分析一下:6.3 传输层的故障诊断与排除 386.3 传输层的故障诊断与排除传输层的故障诊断与排除 1.拒绝连接拒绝连接 TCP最常见的问题是客户不能连接到远程系统。可能的原因最常见的问题是客户不能连接到远程系统。可能的原因一般这有两种:一般这有两种:1)客户指定的端口号没有与之相连的监听应用程序)客户指定的端口号没有与之相连的监听应用程序 试图连接到不存在的网络服务器,系统的试图连接到不存在的网络服务器,系统的TCP提供者简单地提供者简单地拒绝这个连接请求。客户试图建立连接,服务器也用拒绝这个连接请求。客户试图建立连接,服务器也用Reset片段片段来响应,让客户离开。电路根本没有建立起来,也没有返回来响应,让客户离开。电路根本没有建立起来,也没有返回Synchronize片段。片段。例如,通过执行命令例如,通过执行命令“:/cqcet :80”浏览站点,结浏览站点,结果不能打开网页。这个错误可能的原因是:指定的目的地端口号果不能打开网页。这个错误可能的原因是:指定的目的地端口号80(HTTP的知名的端口号的知名的端口号)是无效的,这意味着目的主机上可能是无效的,这意味着目的主机上可能没有可用的网络服务器。没有可用的网络服务器。2)目的应用程序配置错误)目的应用程序配置错误 虚电路已经建立虚电路已经建立(Synchronize过程的完成说明了这一点过程的完成说明了这一点),但监听应用程序在传输数据之前取消了连接但监听应用程序在传输数据之前取消了连接(立刻开始电路关闭立刻开始电路关闭过程过程)。出现这种情况的最可能的原因是:远程系统不想为这个。出现这种情况的最可能的原因是:远程系统不想为这个客户提供服务,但是在连接建立之后才发现这一点。客户提供服务,但是在连接建立之后才发现这一点。6.3 传输层的故障诊断与排除 1.拒396.3 传输层的故障诊断与排除传输层的故障诊断与排除比如,通过命令“telnetqcet:23”远程登录时,目的地Telnet服务器的安全规则配制成不允许来自这个客户系统的连接。尽管TCP虚电路成功地建立,但是,Telnet服务器立刻通过标识打包的PIN来关闭电路,说明应用程序已经调入并运行于LISTEN模式,但它不想与这个特定客户会话。2.丢失电路有时连接建立得很好,但虚电路开始失败,其中一端从网络上消失。大部分情况下,发生的问题也许是:远程系统因为某种原因失去了与其他网络之间的物理连接。这可能是因为是电源关闭、连接失败或其它的问题。比如,主机NETOFF上的HTTP客户从cqcet上的HTTP服务器得到一个文件,在发出了“GET请求以后,NETOFF突然失去与网络的物理连接,cqcet上的HTTP服务器试图将请求文件的内容返回到NETOFF。但是,由于NETOFF已经不在网络上,它就不能确认该数据,同样也不能返回Finish或Reset片段给服务器。因为服务器不知道电路已经取消(因为它已经不存在),它就假定数据已经丢失,并连续地重发出问题的数据。当cqcet持续往NETOFF重新发送数据时,其重试操作之间的时间间隔在增加。因为6.3 传输层的故障诊断与排除 406.3 传输层的故障诊断与排除传输层的故障诊断与排除NETOFF没有确认该数据,所以 cqcet 持续发送数据,并一直将其确认计时器翻番;这个过程会持续一段时间,直到 cqcet 放弃操作并取消连接。3.较小的发送窗口和过多的延迟确认 当发送系统使用小发送窗口,而接收者使用的接收窗口较大并且将确认延迟得过长时,会出现一系列性能问题。尽管出现这种情况的条件很奇特,但它确实是个现实问题。尽管发送行为的主体来自于那些具有大发送窗口的服务器级系统,但是当PC客户往SMTP服务器发送邮件信息和大型二进制附件,或往FTP服务器上载大型数据文件时,该PC客户也会创建大量的网络通信。一般来说,这些系统没有很大的发送窗口(其中大部分的发送窗口只是本地MTU的4倍)。当这些系统试图往,正在把确认延迟至接收窗口半满为止的系统上发送数据时(并且该系统的接收窗口远远大于发送者的发送窗口),发送者在发送窗口填满了队列外的、未被确认的数据时,必须停止发送。如果接收者没有返回对该数据的确认(因为过长的延迟计时器),那么这会导致通信变得很急促,发送者发送4个左右的片段,然后停下来,直到远程系统的确认计时器归零为止。6.3 传输层的故障诊断与排除NETOFF没有确认该数416.3 传输层的故障诊断与排除传输层的故障诊断与排除4.4.过多的或慢速的重新传输过多的或慢速的重新传输TCP的可靠性服务的最重要方面之一是使用了确认计时器(也称为重新发送计时器),这会确保及时发现丢失的片段,从而可以快速重新发送该数据。但是,如前面的“确认计时器”中所述,正确决定给定电路所用的计时器数值是一个复杂的过程。如果这个值设得太低,计时器会频繁地归零,并导致出现不必要的重新发送。反过来,如果这个数值设得太高的话,就不能快速检测到丢失,这样会产生不必要的延迟。在一些系统中可以看到,新电路上的重新发送显得过多(说明缺省计时器对于这些虚电路来说设置得太小了),或者会看到重新发送之间的时间间隔很长(说明缺省计时器设置得太高)。尽管计算平稳往返时间时这些数值一般来说可以全部电路的基础上改变,但对新电路来说这个缺省设置可能会出现问题,而在新电路上最需要的是平稳。6.3 传输层的故障诊断与排除 426.3 传输层的故障诊断与排除传输层的故障诊断与排除反过来,如果缺省确认计时器设为200毫秒,但如果想连接到速度缓慢的连接上的站点的话,那么就会看到同一片段发送多次。尽管这不会损坏那些一次只发送两个片段的应用程序(例如邮件和新闻服务器),但是对于那些发送很多片段的应用程序来说显得很烦人(例如FTP上载或桌面共享协议),因为这些应用程序至少在有效增加平稳往返计时器之前会连续地重新发送数据。大部分应用程序允许用户为系统所用的确认计时器定义缺省数值。用户应该根据网络上的典型连接情况来决定最合适的缺省计时器(例如用ping和traceroute来决定典型延迟时间),然后参考系统文献来决定如何设置缺省确认时间。5.高速网络上的缓慢吞吐率高速网络上的缓慢吞吐率拙劣的驱动程序会导致TCPIP网络上出现严重的吞吐率问题,特别在接收队列的缓冲区管理上问题更加严重。这些情况下,发送系统和接收系统都必须使用缓慢开始增加窗口行为,接收者也因为设备驱动程序自身的拙劣缓冲区管理而不能同时确认两个以上片段。6.3 传输层的故障诊断与排除 436.3 传输层的故障诊断与排除传输层的故障诊断与排除这种情况下,作为缓慢开始算法的一部分,发送者发送4个片段,但接收者只为前两个片段返回一个确认(或者更准确地说,不能确认第3个和第4个片段)。发送者会把这种行为当作网络拥塞并将其拥塞窗口大小减为1个片段。这个过程会无限重复,发送者不会得到两个以上的片段。不幸的是,解决这个问题的惟一办法是替换接收者的网络驱动程序或干脆更换网卡。6.很多很多RESET命令片段命令片段 大量的设置了Reset标志的TCP命令片段说明了几件事情,但是根据RFC 793,一般来说它意味着接收者收到了一个“看上去不属于该虚电路的”片段。但是,RFC793也规定“如果不清楚是不是这种情况的话,就不必发送Reset”,而由接收者来做出决定。例如,只要远程终端试图与本地系统上的不存在的套接字建立连接,就会发送Reset片段。如果网络浏览者试图与端口80(HTTP的知名端口号)建立连接,但是该端口上没有监听服务器,那么本地系统的TCP栈应该返回一个Reset片段以响应进入的Synchronize请求。6.3 传输层的故障诊断与排除 446.3 传输层的故障诊断与排除传输层的故障诊断与排除如果本地套接字对于先前连接来说不再有效的话,也可以发送Reset片段。这种情况下,本地应用程序已经关闭连接上它自己的那一端,但远程系统还在发送数据。但这些片段到达以后,本地TCP栈应该用相同数量的Reset片段来响应。在本地系统(用Finish标志)发送了必要的电路关闭片段以后远程终端拒绝关闭连接上它自己的这一端时,或因为过量的重新发送而使得虚电路必须取消时会出现这种情况。这两种情况下,连接都会关闭,并由服务器突然中断,所以该虚电路所收到的所有附加片段都遭到拒绝。一般来说,应用程序应该顺利地关闭连接,所以只有当出现了致命错误时才出现这种情况。但是,一些应用程序在虚电路上的它们的一端使用突然关闭(abrupt close)以实现关闭,而不是顺利地关闭连接。例如,一些HTTP服务器不想顺利地关闭虚电路,而是在收到了所有请求数据以后立刻全部关闭连接。这个行为背后的理论是关闭连接要比通过繁琐的工作交换关闭数据快得多。但是,这也意味着客户不能请求丢失的数据,因为没有等到所有发出数据得到确认,服务器已经关闭了连接。随后的重新发送请求都遭拒绝,使得客户停止工作。6.3 传输层的故障诊断与排除 如果本地套456.3 传输层的故障诊断与排除传输层的故障诊断与排除如果应用程序收到了破坏,也会出现Reset,而TCP仍然以为该套接字有效,但是没有应用程序服务于与其端口号相连的接收队列。这种情况下,TCP可以代表应用程序接收数据,直到缓冲区填满以后。如果队列没有得到服务的话,最终TCP应该开始为它收到的新数据发送Reset片段,并继续发布零大小窗口。7.奇怪的命令片段奇怪的命令片段 因为Internet越来越流行,它吸引了各种各样的人群,但并不是每个人都是好人。特别地,过去几年中又出现了很多喜欢TCPIP的黑客(他们中的大部分可能正在看这本书),他们通过网络探测工具来寻找网络布局和服务器的弱点。如果看到奇怪的命令片段,那么很可能是因为这些用户通过常见的程序来探测网络。其他类型的探测片段可以由简单的半开的或者错误重置的片段组成。黑客可以通过半开的探测片段来找出服务器是否6.3 传输层的故障诊断与排除 466.3 传输层的故障诊断与排除传输层的故障诊断与排除在监听知名的端口。而错误重置的片段就是那些设置了Reset标志的命令片段,即使是没有已经建立的连接时也是如此。看到这些类型的片段之后,应该检测一下安全底层结构是否出现了这些片段可以检测到的漏洞。较好的防火墙会阻塞这些探测中的大部分。8.8.错误配置或丢失服务文件错误配置或丢失服务文件应该验证一下系统上所用的服务文件是否与所用的应用程序期望的知名端口号相匹配。例如一些应用程序会询问系统与“SMTP”相连的端口号,并且如果系统上的服务文件没有该应用程序的记录项的话,它就不会给客户返回端口号。这会使得客户不能发送任何数据,因为它不能给这个应用程序分配目的地端口号。想看到你的系统上所用知名端口,请参看Unix主机上的etcservices文件,Windows2000XP主机上的C:WINDOWSsystem32driversetcservices文件。6.3 传输层的故障诊断与排除 在监听知名471 传输层的功能这种情况下,应用程序将使用一个无连接的传输层协议。6、TCP最常见的问题是()。3 传输层的故障诊断与排除如果这里的请求或者应答丢失的话,客户就会超时,于是它只要重试即可。TCP的设计目标是能够动态的适应互联网络的这些特性,而且当面对多数失败的时候仍然足够健壮。当目标端必须将一个应答送回给源端的时候,源端口是必需的。因为没有这个记录项,系统必须为目的系统发送一个查找,然后等待响应。虽然UDP用户数据报只能提供不可靠的交付,但UDP在某些方面由其特殊的优点。3 传输层的故障诊断与排除ACK:为确认标志位。了解计算机网络基础知识但这些片段到达以后,本地TCP栈应该用相同数量的Reset片段来响应。这会使得客户不能发送任何数据,因为它不能给这个应用程序分配目的地端口号。用户数据报协议UDP只在IP的数据报服务之上增加了很少的一点功能,这就是端口的功能(有了端口,运输层就能进行复用和6.3 传输层的故障诊断与排除传输层的故障诊断与排除6.3.4UDP的故障诊断与排除因为UDP的以数据报为中心的传输服务没有提供任何TCP中所见的可靠性服务所以基于UDP的应用程序在多杂音或丢失严重的网络上更容易出错。如果正在使用的网络传输IP包时丢失大量的包,那么基于UDP的应用程序会在基于TCP的协议注意到之前先感觉到这个失败。而使用基于TCP的应用程序以后,任何丢失的数据都会重新认识和重新发送,这样会导致速度变慢,但连接却很牢靠。但是使用UDP则不同,流失的信息就永远丢失了,并且必须通过应用程序来重新认识和处理。但是如果网络连续地丢失数据的话(例如持续堵塞或者因为线路问题而丢失20的包),那么依靠分段的基于UDP的应用程序会连续地失败。如果出现了关于基于UDP的应用程序诸如NFS的问题(而基于TCP的应用程序诸如FTP工作正常),那么应该调查一些网络丢失情况。这时可能需要减少单个操作中的信息数量(也许应该设到小于等于MTU大小),或者需要使用基于TCP的应用程序协议(很多NFS实现也支持TCP)。1 传输层的功能6.3 传输层的故障诊断与排除6486.3 传输层的故障诊断与排除传输层的故障诊断与排除1.1.错误配置或丢失服务文件错误配置或丢失服务文件应该保证系统所用的服务文件与应用程序所期望的知名的端口号相匹配。例如,一些应用程序会询问系统与TFTP相连的端口号,并且如果系统服务文件中没有这个应用程序的记录项,那么它就不会给客户返回一个端口号。这个问题会导致客户不能够发送任何数据,因为它不能为应用程序找到目的端口号。想察看系统所用的知名的端口,请察看Unix主机上的etcservices文件,或者WindowsNT主机上的C:WinNTSystem32DriversEtcSERVICE文件。2.2.防火墙阻断防火墙阻断UDPUDP信息信息很多网络管理员会阻断所有的UDP通信,但一些关键的端口除外(例如DNS)。如果连接远程UDP应用程序确实碰到了问题,那么应该调查一下是否有远程防火墙阻断了UDP通信。注意这个问题也可以反过来,那就是自己的防火墙阻断了返回的UDP通信。这种情况下,UDP通信一般会发出网络,但从远程系统返回的包可能会被自己的防火墙阻断。3.3.数据报破坏或根本没有发送数据报破坏或根本没有发送有时候,可能会注意到某个系统并不总是发送你期望的UDP6.3 传输层的故障诊断与排除 496.3 传输层的故障诊断与排除传输层的故障诊断与排除数据报,或者数据流中的第一个UDP包没有发送。一般地,这种状况是由于发送者的ARP缓存中没有该目的系统的记录项造成的。因为没有这个记录项,系统必须为目的系统发送一个查找,然后等待响应。但是,很多TCPIP实现只允许所有给定主机的ARP回调队列中只保留一个IP包。如果在发送这个ARP查找的过程中发送者收到了发往该系统的另外一个境外包(out-bound packet),那么第一个包很可能会从ARP队列中清除出去。这样,第一个包(也就是产生了首处查找的包)就被删除了。如果多个包快速到达目的系统,或者如果UDP或ICMP消息的大小超过本地网络的MTU,并迫使IP把单个消息分段成多个IP包的话,会经常出现这个问题。在后一种情况下,IP会(根据创建的片段的多少)往同一目的系统发送两个或更多ARP请求,这样ARP代理就立刻清除回叫队列中的最后一个片段之外的所有内容。在收到ARP响应之前,ARP代理发送的最后一个片段将是在这条线路上发送的第一个片段。6.3 传输层的故障诊断与排除数据报,或者数据流中的第506.3 传输层的故障诊断与排除传输层的故障诊断与排除 当目的系统收到了这个片段后,它最终会丢弃这个不完全的IP数据报(可能会返回一个ICMP Time Exceeded Error Message),但是产生这个错误所花费的时间(最常见的是60秒)会比客户等待的时间长。这种情况下,客户不会看到ICMP错误信息,因为它与UDP断开连接的时间太长了。解决这个问题的一个方法是在ARP缓存中为目的系统建立静态记录项,允许发送者立刻发送IP数据报,而不是先等待ARP处理请求。这正是UDP为什么不能用于重要信息的另一个原因。如果数据很重要的话,必须使用TCP来确保重新认识和最终重新发送那些丢失的片段。6.3 传输层的故障诊断与排除 当目的系516.4 本章小结本章小结传输层(TransportLayer)是资源子网与通信子网的界面与桥梁,它完成资源子网中两结点的直接逻辑通信,实现通信子网中端到端的透明传输.它位于高层和低层中间,起承上启下的作用。在传输过程中,电磁信号干扰、噪音过大、数据被更改等情况都可能导致传输失败。常见的传输错误包括:物理错误,IP校验和错误,TCP检验和错误。6.4 本章小结 传输层(526.5 复习题复习题一、选择题一、选择题1、下面哪些协议工作在传输层上?A、TCPB、IPC、FTP、IPX2、传输层的任务是什么?A、提供数据的物理传输B、提供流量控制和校验来保护数据C、在数据到达网络层之前,将数据分段D、处理路由信息来决定源与目的地址。3、服务质量(QoS)决定了()。A、数据传输的可靠性以及传输的性能级别B、数据的完整性C、数据包的确认D、数据分段4、UDP使用()来标识发送和接收的应用程序。A、IP地址B、端口号C、网络号D、MAC地址5、在传输过程中,下列()不可能导致传输失败。A、电磁信号干扰B、噪音过大C、终端设备太多D、数据被更改6、TCP最常见的问题是()。A、3次握手不成功B、出现不可靠连接C、客户不能连接到远程系统D、突然中断6.5 复习题一、选择题536.5 复习题复习题7、远程系统因为某种原因失去了与其他网络之间的物理连接。这不可能是因为()问题。A、电源关闭 B、连接失败 C、应用软件问题 D、其它的问题8、TCP的可靠性服务的最重要方面之一是使用了()。A、确认计时器B、SYNC、握手协议D、窗口技术 9、拙劣的驱动程序会导致TCPIP网络上出现严重的()问题。A、吞吐率 B、系统 C、丢失数据包 D、以上述说都不正确 10、ARP缓存中为目的系统建立(),允许发送者立刻发送IP数据报,而不是先等待ARP处理请求。A、静态记录项 B、动态记录项 C、ARP协议 D、ARP解析内容二、填空题二、填空题1、UDP通信一般会发出网络,但从远程系统返回的包可能会被自己的 阻断。6.5 复习题7、远程系统因为某种原因失去了与其他网络546.5 复习题复习题 2、传输层的最终目标是向它的用户(通常是应用层中的进程)提供高效的、服务。3、传输层的另一个功能是 ,它可以防止目的地被大量的数据淹没。4、校验和是一个基于数据段,在字节的基础上计算出来的 位的比特值。5、只要远程终端试图与本地系统上的不存在的 建立连接,就会发送Reset片段。三、简答题三、简答题1、在传输层中,有哪两个重要的协议?它们有什么区别?2、TCP三向握手中,通信的计算机之间传输的是什么信息?3、TCP通过序列号与确认的使用,保证了数据的传输。这句话对否?为什么?4、UDP的故障可能出在那些地方?5、TCP的故障可能出在那些地方?6.5 复习题 2、传输层的最终目标是向它的用户(通常556.6 实训项目:实训项目:用协议分析工具分析TCP一、实验目的1.理解TCP协议;2.掌握协议分析工具的使用;二、实验环境1.网络环境2、操作系统3、协议分析工具三、实验内容利用协议分析工具分析TCP数据包。四、实验步骤1、测试例子2、IRIS的设置3、抓包4、数据包分析6.6 实训项目:用协议分析工具分析TCP一、实验目的56谢谢使用57
展开阅读全文