1、第9章 网络数据报的捕获与分析 第9章 网络数据报的捕获与分析 9.1 基本原理基本原理 9.2 常见的常见的IP数据报数据报 9.3 Wireshark的使用的使用 9.4 数据采集与分析数据采集与分析 第9章 网络数据报的捕获与分析 9.1 基基 本本 原原 理理9.1.1 TCP/IP体系结构体系结构开放系统互连(OSI)模型将网络划分为七层,在各层上实现不同的功能,这七层分别为应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。而TCP/IP体系也同样遵循这七层标准,只不过在某些OSI功能上进行了压缩。与OSI参考模型不同,TCP/IP模型更侧重于互联设备间的数据传送,而不是严
2、格的功能层次划分,它通过解释功能层次分布的重要性来做到这一点,但仍为设计者具体实现协议留下很大的余地。因此,OSI参考模型在解释互联网络通信机制上比较适合,而TCP/IP却是互联网络协议的市场标准。TCP/IP参考模型比OSI模型更灵活,参照图9.1(a)。第9章 网络数据报的捕获与分析 图9.1 OSI参考模型和TCP/IP参考模型比较(a)TCP/IP参考模型与OSI参考模型;(b)TCP/IP协议族第9章 网络数据报的捕获与分析 1.进程进程/应用层应用层应用层协议提供远程访问和资源共享,常见的应用包括Telnet、FTP、SMTP、HTTP等,很多其他应用程序也驻留运行在此层,并且依赖
3、于底层的功能。相似的,在IP网络上要求通信的任何应用也在模型的这一层中描述。第9章 网络数据报的捕获与分析 2.运输层运输层运输层又称主机到主机层,大致对应于OSI参考模型的会话层和传输层。为了在网络传输中对应用数据进行分段,该层必须执行数学检查来保证所接收数据的完整性,以便为多个应用同时传输数据多路复用数据流(传输和接收)。这意味着主机到主机层能识别特殊应用,对乱序收到的数据进行重新排序。当前的主机到主机层包括两个协议实体:传输控制协议(TCP)和用户数据报协议(UDP)。还有一个协议正在定义中,是针对不断增长的面向事务的需要,该协议称为事务/传输控制协议(T/TCP,Transaction
4、/Transmission Control Protocol)。第9章 网络数据报的捕获与分析 3.网际层网际层网际层又称网络层,该层由两个主机之间通信所必须的协议和过程组成。这意味着数据报文必须是可路由的,网际层(IP)负责数据报文路由。网际层也必须支持其他的路由管理功能,必须提供第二层地址到第三层地址的解析功能及反向解析功能。这些功能由对应的IP协议提供。第9章 网络数据报的捕获与分析 网际层的路由和路由管理功能由外部对等协议提供,这些协议被称为路由协议。路由协议包括内部网关协议(IGP,Interor Gateway Protocol)、外部网关协议(EGP,Enterior Gatew
5、ay Protocol)。因为它们驻留在网络层中,但却不是IP协议组件与生俱来的部分,所以标识为对等。实际上,许多路由协议能够在多路由协议地址结构中发现、计算路由。用于其他地址结构的路由协议例子包括IPX和AppleTalk。4.网络访问层网络访问层网络访问层又称链路层,该层提供用于物理连接、传输的所有功能。OSI模型把这一层功能分为两层:物理层和数据链路层。TCP/IP参考模型把两层合在一起。IP协议假设所有底层功能由局域网或串口连接提供。第9章 网络数据报的捕获与分析 9.1.2 TCP/IP组件组件虽然上节所述的协议一般标识为“TCP/IP”,但实质上在IP协议组件内还有好几个不同的协议
6、。主要协议之间的关系如图9.1(b)所示。TCP和UDP是两种最为著名的运输层协议,二者都使用IP作为网络层协议。虽然TCP使用不可靠的IP服务,但可以提供一种可靠的运输层服务。UDP可为应用程序发送和接收数据报。数据报是指从发送方传输到接收方的信息单元。与TCP不同的是,UDP不可靠,它不能保证数据报能安全无误地到达最终目的地。第9章 网络数据报的捕获与分析 IP是网络层上的主要协议,同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中传输。ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。ICMP主要被IP
7、使用,但应用程序也有可能使用。IGMP是Internet组管理协议,用来把一个UDP数据报多播到多个主机。ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层地址和网络接口层地址。第9章 网络数据报的捕获与分析 驻留于进程/应用层中的应用(如Telnet、FTP和许多其他应用)被认为是IP协议组件与生俱来的组成部分,但这些属于应用范畴而不是协议范畴。从图9.1(b)中可以看出,网络访问层是TCP/IP的基础,而TCP/IP本身并不十分关心底层,因为处在数据链路层的硬件接口(即网络设备驱动程序)把协议与实际硬件、物理介质隔离开。第9
8、章 网络数据报的捕获与分析 应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图9.2所示。TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP Segment)。IP传给网络接口层的数据单元称作IP数据报(IP Datagram)。通过以太网传输的比特流称作帧(Frame)。第9章 网络数据报的捕获与分析 图9.2 数据进入协议栈时的封装过程第9章 网络数据报的捕获与分析 9.1.3 IEEE 802.3网络网络1.媒体访问方法媒体访问方法媒体访问方法取决于以
9、太网操作是半双工还是全双工模式。在半双工操作下,两个或多个节点竞争使用物理媒体,一次仅允许一个节点发送数据。在传输前,每个节点首先监听传输媒体以便确定媒体闲或忙(载波侦听)。如果媒体忙,节点就继续监听;如果媒体空闲,则立即发送数据;如果多个节点在同一时间发送数据,便会产生冲突。第9章 网络数据报的捕获与分析 因此,每个节点要监视自己的传输,才能检测到可能的冲突。检测到冲突后,节点发送一个简短的冲突加强信号,确保所有节点都意识到冲突的发生。为了避免所有节点同时重传它们的帧,所有冲突检测节点要运行一个截断二进制指数后退(Truncated Binary Exponential Backoff)算法
10、,计算各自的重传延迟,称为后退延迟(Backoff Delay)。在全双工操作下,两个节点共享物理媒体。如果媒体具备同时双向传输而不受干扰的能力,就不可能出现竞争,因此不需要CSMA/CD算法。第9章 网络数据报的捕获与分析 2.传输媒体传输媒体IEEE 802.3标准定义了几种传输媒体和电缆拓扑结构。在IEEE 802.3中,媒体规范由三个字段类型标识(最后一部分标识方式可以改变),媒体规范如下所示:表9.1显示了802.3网络定义的媒体类型和无中继器的最大配置。第9章 网络数据报的捕获与分析 表表9.1 IEEE 802.3传输媒体传输媒体第9章 网络数据报的捕获与分析 3.最大有效载荷最
11、大有效载荷最大帧长为1518个字节,不包括前导码(7字节)和帧始界符(1字节)。最大有效载荷长度取决于地址大小。采用2字节地址时发送的数据可达1508个字节;采用6字节地址时发送的数据最高达1500字节。对于100 Mb/s或更低速率的传输媒体,最小帧长为64个字节。以速率大于100 Mb/s的半双工方式运行的媒体,需要的最小帧长为512个字节。较小的帧用非数据位填充,这些非数据位作为扩展字段附加在原始帧上。对于原始标准作这种修改是必需的,因为只有这样,才能适应千兆位网络所需的物理距离(距离定义了信号传播时间)和维持发送器在发送最小帧的同时检测出冲突的能力。第9章 网络数据报的捕获与分析 同样
12、,对于操作速率高于100 Mb/s的全双工模式,常见的实现方式是发送突发的数据帧的同时不放弃控制,最大突发长度为8192个字节。在发送包括任何扩展的第一个帧后,后续帧的发送不再需要扩展字段。发送者用非数据位填充帧间的空隙,以便指示接收者这是突发模式。第9章 网络数据报的捕获与分析 9.1.4 数据监听原理数据监听原理以太网提供物理上的连接,而TCP/IP工作在上层。在以太网中,所有的通信都是广播式的,也就是说,同一个网段的所有网络接口都可以访问在物理媒体上传输的所有数据,而每一个网络接口都有一个惟一的硬件地址,这个硬件地址也就是网卡的MAC地址,大多数系统使用48 bits的地址,表示网络中的
13、每一个设备。MAC地址通常用12位十六进制的数字表示,前6位十六进制数字由IEEE统一分发,以确定厂商的惟一性,后6位数字由厂商负责管理。一般来说每一块网卡上的MAC地址都是不同的,每个网卡厂家得到一段地址,然后将这段地址分配给生产的网卡。在硬件地址和IP地址间使用ARP和RARP协议进行相互转换。第9章 网络数据报的捕获与分析 在一个实际的系统中,数据的收发是由网卡来完成的。网卡接收到传输来的数据,检查数据帧目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断接收与否。如接收,则产生中断信号通知CPU;如不接收,则将数据帧丢弃。CPU得到中断信号产生中断,操作系统接收数据。通常网卡有
14、如下接收模式:(1)广播方式:能够接收网络中的广播信息。(2)组播方式:能够接收组播数据。(3)直接方式:只有目的网卡才能接收该数据。(4)混杂(Promiscuous)模式:能够接收通过它的一切数据,而不管该数据是否是传给它的。第9章 网络数据报的捕获与分析 嗅探(Sniffer)是指将本地NIC工作状态设成混杂模式,捕捉与其连接的物理媒体上传输的所有数据的软件或硬件。Sniffer工作在网络环境中的底层。它将拦截的数据通过相应的软件处理,可以实时分析数据的内容,进而分析所处的网络状态和整体布局。Sniffer一般用于分析网络的数据,以便找出网络中所关心的潜在问题。例如,网络的某一段运行不畅
15、,报文的发送比较慢,而故障点未知,此时就可以通过Sniffer的协助判断出问题所在。第9章 网络数据报的捕获与分析 Sniffer在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。Sniffer可以是软件、硬件,甚至是软/硬件的结合。常见的Sniffer软件有NetXRay、Sniffer Pro、Sniffit、Snort、TCPdump等。只有将Sniffer放置于被检测的机器或网络附近,才能有效地收集所需要的信息;另外一个比较好的方法就是将Sniffer放在网关上。这样,系统管理员可以使用Sniffer来分析网络信息交通状况,并且找出网络上发生问题的位置。
16、安全管理员则可以同时使用多种Sniffer,将它们放置在网络的不同位置,从而形成一个入侵警报系统。第9章 网络数据报的捕获与分析 工作于混杂模式的网络适配器可以接受任何一个在同一网段上传输的数据包,因此也就存在着各种Sniffer程序用来捕获网络上传递的密码、E-mail信息、文档等一些没有加密的信息。表9.2列出了常见传输介质被监听的可能性。第9章 网络数据报的捕获与分析 表表9.2 常见传输介质安全性表常见传输介质安全性表第9章 网络数据报的捕获与分析 9.1.5 网络拓扑与数据监听网络拓扑与数据监听1.网络拓扑类型网络拓扑类型每一种网络都要有布线、网络设备、文件服务器、工作站、软件和培训
17、,这些要素以多种不同的方式进行综合便可以创建与具体单位的需要和资源相适应的网络。有些网络的启动成本很低,但是维护和升级的代价很高;而另一些网络虽然建立时耗资较大,但是易维护、易升级。拓扑结构是指网络的物理布局以及其逻辑特征。物理布局就像是描述办公室、建筑物或校园中如何布线的示意图,通常称为电缆线路。网络的逻辑是指信号沿电缆从一点向另一点进行传输的方法。第9章 网络数据报的捕获与分析 网络拓扑结构主要有三种:总线拓扑、环型拓扑和星型拓扑。1)总线拓扑总线拓扑结构(Bus Topology)由从一台PC机或文件服务器连向另一台的电缆组成,与链上的链接非常相像。与链一样,采用总线拓扑结构的网络有一个
18、起始点和一个终止点,也就是与总线电缆段每个端点相连的终结器。传送包时,段中所有的节点都要对包进行检测,而且包必须在给定时间内到达目标。总线网络必须符合IEEE的长度规范,以确保包在期望的时间内到达。如图9.3所示。第9章 网络数据报的捕获与分析 图9.3 总线拓扑结构第9章 网络数据报的捕获与分析 由于终结器标志着段的物理终点,在总线网络中至关重要。终结器是一个电阻。如果没有终结器,信号将从原路径反射回去。信号的反射会影响网络时间的调配,与网络上传输的新的信号发生冲突。因此当没有终结器或终结器出错时,段上的通信不能进行。传统的总线设计适用于小型网络。由于总线结构需要的布线远远少于其他拓扑结构,
19、所以建设成本可以降到最低;同时,添加其他工作站、在房间或办公室中短距离扩展总线也非常便利。其缺点是管理的成本非常高,例如,如果一个节点或电缆段发生故障,那么隔离故障段是很困难的,也就是说,一个有缺陷的节点、网络段或连接器会使整个网络瘫痪。另外,信息流使总线异常拥挤,需要添加网桥和其他设备来控制信息流量。第9章 网络数据报的捕获与分析 2)环型拓扑环型拓扑结构(Ring Topology)中,数据的路径是连续的,没有逻辑的起点与终点,因此也就没有终结器。工作站和文件服务器在环的周围各点上相连(见图9.4)。当数据传输到环时,将沿着环从一个节点流向另一个节点,找到其目标,然后继续传输直到又回到原节
20、点。第9章 网络数据报的捕获与分析 图9.4 环型拓扑结构图第9章 网络数据报的捕获与分析 在环型拓扑结构的开发早期,只允许数据沿一个方向传输,并在传输节点结束。新型高速环型技术采用两个环,使冗余数据可以沿相反的方向传输,因此,如果一个方向上的环中断了,那么数据还可以以相反的方向在另一个环上传输,最终到达其目标。因为用来创建环型拓扑结构的设备能轻易地定位出故障的节点或电缆问题,所以环型拓扑结构管理起来比总线拓扑结构要容易。这种结构非常适合于LAN中长距离传输信号的情况,在处理大容量的信息流时要优于总线拓扑结构。然而,环型拓扑结构在实施时比总线拓扑结构要昂贵。一般情况下,它在开始时需要的电缆和网
21、络设备比较多;而且,环型拓扑结构的应用不像总线拓扑结构那样广泛,因此供用户选择的设备选项较少,扩展高速通信的选项也不多。第9章 网络数据报的捕获与分析 3)星型拓扑星型拓扑结构(Star Topology)是最古老的一种通信设计方法,是现代网络的主流选择。星型拓扑结构的物理布局由与中央集线器相连的多个节点组成(见图9.5)。集线器是一种将各个单独的电缆段或单独的LAN连接为一个网络的中央设备,有些集线器也被称为集中器或存取装置。单一的通信电缆段从集线器处向外辐射与终端连接。第9章 网络数据报的捕获与分析 图9.5 星型拓扑结构第9章 网络数据报的捕获与分析 星型拓扑结构的建设成本目前比总线网络
22、和环型网络的要低,主要因为其网络设备和电缆的成本较低。与环型拓扑类似,星型拓扑结构比传统的总线网络易于管理,可以轻易地把网络设备从网络中隔离出来,而不影响对其他节点的服务。星型拓扑结构可以非常容易地通过连接其他节点或网络来进行扩展,同时提供了将网络扩展为高速网络互连的最佳选项。星型拓扑结构是最流行的拓扑结构,因此适用于这种网络类型的设备范围也更广一些。这种结构的缺点在于,集线器是单独的失效点。如果集线器失效了,所有连接在其上的节点都不能进行通信(除非集线器中内建有冗余提供备份措施)。另一个缺点是,星型拓扑结构需要的电缆比总线拓扑结构多,但星型拓扑结构的布线和连接器比总线结构的便宜。第9章 网络
23、数据报的捕获与分析 2.各连接类型的监听各连接类型的监听监听的目的是获取所需的数据报,因此监听目标的选择是十分重要的。对于不同的网络拓扑结构,监听点(安装嗅探器的节点)的选取决定了所能监听到的信息量。1)总线拓扑总线拓扑结构网络的信息总是在主干电缆上以广播的方式传播,因此在主干电缆上任意一点接收到的信息都是相同的,如图9.6(a)所示,图中ABCDE各点都是等效的。所以对于总线拓扑的网络,只要将监听节点插入所要监听的网络,即可获得在网络上传输的所有数据报。第9章 网络数据报的捕获与分析 2)环型拓扑环型拓扑结构网络与总线拓扑结构传输信息方式相似,信息在环型的主干电缆上以广播的方式传播,因此如图
24、9.6(b)所示,图中ABCD各点等效。所以对于环型拓扑的网络,只要将监听节点插入所要监听的网络,即可获得在网络上传输的所有数据报。第9章 网络数据报的捕获与分析 3)星型拓扑监听点在星型拓扑结构网络中的位置根据中心节点的类型不同而不同。星型拓扑网络的中心节点分为Hub和Switch两种类型(两者联系和区别参见“Hub原理与交换机设置互联”的共享式与交换式网络相关章节)。以Hub为中心的星型拓扑网络称为共享型网络,以Switch为中心的星型拓扑网络称为交换型网络。在共享式星型网络中,Hub将各节点的数据报向所有的端口广播,因此只要将监听点接入Hub的任一空闲端口或嵌入Hub至任一节点间的通信链
25、路即可获取所有数据报(如图9.6(c)所示);在交换式星型网络中,Switch仅仅将数据报向对应的端口转发,要获取某一节点的数据报,只能第9章 网络数据报的捕获与分析 将监听点嵌入至该点的数据链路或对交换机进行端口镜像,因此不可能同时获取在网络上传输的所有的数据报文。如图9.6(d)所示,在交换型星型拓扑网络中,要获取所有目标或源为A节点的数据报文,只能在交换机处设置镜像端口,引出监听点A(参见“Hub原理与交换机设置互联”的Configure Port Mirroring相关章节);或者将监听点置于A处。综上所述,在不考虑通信链路保密性的前提下,交换式的星型拓扑结构是几种结构中数据保密性最好
26、的,因此在实际中得到了广泛的应用。第9章 网络数据报的捕获与分析 图9.6 不同拓扑网络监听点示意图第9章 网络数据报的捕获与分析 9.2 常见的常见的IP数据报数据报9.2.1 IPv4头结构头结构IP数据报头最小长度是5个字(20字节,1个字=4字节),如果有其他选项的话,报头可能会更长。IPv4数据报中的数据(包括报头中的数据)以32位(4字节)的方式来组织。IPv4数据报头中包含至少12个不同字段,且在没有选项时长度为20字节,但在包含选项时可达60字节。数据报结构如图9.7所示。第9章 网络数据报的捕获与分析 图9.7 IPv4头结构第9章 网络数据报的捕获与分析(1)版本号(VER
27、S):对于IPv4来说,版本号为4。(2)报头长度(HLENS):范围是515个字。(3)服务类型(Service Type):表示数据报的服务类型TOS,即处理的优先级,包括延时、吞吐量、可靠性或代价,在IPv4中的应用并不广泛。(4)报文总长度(Total Length):以字节为单位。限定了IP数据报的最大长度为65535字节,网络主机可以使用数据报长度来确定一个数据报的结束和下一个数据报的开始;当传送长度超过65 535字节的IP数据报时,大多数的链路层都会分片。主机一般要求接收的数据报不超过576字节。由于TCP把用户数据分成若干片,因此,一般来说这个限制不会影响TCP。第9章 网络
28、数据报的捕获与分析(5)标识符(ID):该16位标识符由产生它的主机惟一指定给数据报,分段后的数据报共享同一个数据报ID,有助于接收主机对分段的数据报重装。(6)标志位(FLG):包括三个1位标志,用于标识报文是否允许被分段和是否使用了这些域。第一位保留并设为0;第二位标识报文能否被分段;0表示报文可以被分段,1表示报文不能被分段;第三位只有在第二位为0时才有意义,这一位标识此报文是否是这一系列分段的最后一个,或者接收应用程序时是否还希望有更多的段,0指示报文是最后一个。(7)分段偏移(Fragment Offset):接收主机时,同时使用标志位和分段偏移,以重组被分段的数据报。这个值以64位
29、为单位递增。第9章 网络数据报的捕获与分析(8)生存时间(TTL):代表数据报在被丢弃前能够穿越的最大主机跳数,TTL的初始值由源主机设置(通常为32或64),每经过一个处理节点减1。当该字段的值为0时,报文就被认为是不可转发的,之后产生一个ICMP报文并发回源主机,不可转发的报文被丢弃。(9)协议(Protocol):指明数据报中携带的净荷类型,主要标识所使用的协议,一般是指TCP协议、UDP协议、ICMP报文和IGMP报文。(10)头校验和(Header Checksum):目的是保证报文头的正确性,目的主机、网络中的每个网关要重新计算报文头的校验和,如果计算出的校验和与报文所含的校验和不
30、同,就必须丢弃该报文。第9章 网络数据报的捕获与分析(11)源IP地址(Source IP Address):指明数据报的发送方地址。(12)目的IP地址(Destination IP Address):指明数据报的接收方地址。(13)IP选项(IP Options):在IPv4中,IP选项主要用于网络测试和调试。(14)填充区(Padding):为了保证IP头长度是32位的整数倍,要填充额外的0。第9章 网络数据报的捕获与分析 由图9.1可以得知,IPv4的网际层是无连接的,网络中的转发设备可以自由决定通过网络的报文的理想转发路径;不提供任何上层协议(如TCP)的应答、流控、顺序化功能;不能
31、用于传输IP报文中数据到正确目的地的应用程序。这些功能是由TCP/UDP等上层协议完成的。第9章 网络数据报的捕获与分析 9.2.2 TCP1.TCP的服务的服务在一个TCP连接中,仅有两方进行相互通信。TCP通过如下方式来提供可靠性连接:(1)用户数据被分割成TCP认为最适合发送的数据块。由TCP传递给IP的信息单位称为报文段或段(Segment)(见图9.2)。(2)当TCP发出一个段后,启动一个定时器,等待目的端收到这个报文段的确认。如果不能及时收到一个确认信息,将重发这个报文段。第9章 网络数据报的捕获与分析(3)当TCP收到来自TCP连接另一端的数据时,将发送一个确认信息。这个确认信
32、息不是立即发送的,通常推迟几分之一秒。(4)TCP将保持首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段并对收到此报文段的事件进行确认(希望发送端超时重发)。(5)由于TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP将对收到的数据进行重新排序后,以正确的顺序交给应用层。第9章 网络数据报的捕获与分析(6)由于IP数据可能会发生重复,TCP的接收端必须丢弃重复的数据。(7)TCP还提供流量控制。TCP连接的双方都有固定大小的缓冲空间。接收端只允许发送端发送接收端缓冲区所能容纳的数据,防止发
33、送信息较快的主机导致较慢主机的缓冲区溢出。两个应用程序通过TCP连接交换字节流。TCP不在字节流中插入记录标识符。我们将这称为字节流服务(Byte Stream Service)。一端将字节流放到TCP连接上,同样的字节流将出现在TCP连接的另一端。第9章 网络数据报的捕获与分析 另外,TCP对字节流的内容不作任何解释,TCP不知道传输的数据字节流是二进制数据,还是ASCII字符、EBCDIC字符或者其他类型数据。对字节流的解释是由TCP连接双方的应用层完成的。2.TCP报文头报文头TCP数据被封装在一个IP数据报中,如图9.8所示。图9.8 TCP数据在IP数据报中的封装第9章 网络数据报的
34、捕获与分析 图9.9给出了TCP首部的数据格式。如果不计任选字段,通常是20个字节。图9.9 TCP包首部第9章 网络数据报的捕获与分析(1)源端口(Source Port):16位的源端口字段包含了初始化通信的端口号。源端口和源IP地址的作用是标识报文的返回地址。(2)目的端口(Destination Port):16位的目的端口字段定义了传输的目的地端口号,指明接收报文的计算机上的应用程序地址接口。每个TCP段都包含源端和目的端的端口号,用于寻找发送端和接收端应用进程。这两个参数加上IP首部中的源端IP地址和目的端IP地址惟一确定一个TCP连接。一个IP地址和一个端口号也称为一个插口(So
35、cket)。插口对(Socket Pair)(包含客户IP地址、客户端口号、服务器IP地址和服务器端口号的四元组)可惟一确定互联网络中每个TCP连接的双方。第9章 网络数据报的捕获与分析(3)序号字段(Initial Sequance Number):该序号是32 bit的无符号数,到达232-1后又从0开始,表示在这个报文段中的第一个数据字节的编号。如果将字节流看作在两个应用程序间的单向流动,则TCP用序号字段对每个字节进行计数。在动态路由网络中,报文很可能使用不同的路由,因此,报文可能乱序。利用序号字段可以纠正传输导致的乱序,从而重组分段的报文。(4)确认序号(Acknowledgment
36、 Number):TCP使用32位的应答(ACK)域标识下一个希望收到的报文的第一个字节的编号,收到ACK报文的源计算机会知道哪些特定的段已被收到。每个ACK的号是应答报文的序列号,这个域只在ACK标志被设置时才有效。第9章 网络数据报的捕获与分析(5)首部长度(Data Offset):长为4位,该字段以Word(32 bit)为单位计量TCP头长度。(6)保留字段(Reserved Bits):是6位恒为0的域,为将来定义新的用途保留。(7)URG:紧急指针有效。(8)ACK:确认序号有效。(9)PSH:接收方应该尽快将这个报文段交给应用层。(10)RST:重置连接。(11)SYN:同步序
37、号用来发起一个连接。(12)FIN:发送端完成发送任务。第9章 网络数据报的捕获与分析(13)窗口大小:该字段表明接收端声明可以接收的TCP数据段的大小。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端期望接收的字节数。窗口大小是一个16位字段,因而窗口大小最大为65 535字节。(14)校验和(Checksum):16位的数据校验段是一个强制性的字段,由发送端计算存储,由接收端进行验证。校验和对整个TCP报文段进行校验,包括TCP首部和TCP数据。如果收到的内容没有被改变过,双方的计算结果应该完全一样,从而保证了数据的有效性。第9章 网络数据报的捕获与分析(15)紧急指针(Urg
38、ent Point):只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。(16)选项(Option):常见的可选字段是最长报文大小(MSS,Maximum Segment Size)。每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志的那个段)中指明这个选项,指明本端所能接收的最大报文段长度。(17)数据段(Data):TCP报文段中的数据部分是可选的。在连接建立和连接中止时,双方交换的报文段仅有TCP首部。如果一方没有数据要发送,仍然要发送一个没有任何数据的
39、首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。第9章 网络数据报的捕获与分析 3.建立建立TCP连接连接为了建立一条TCP连接,双方进行如下通信(如图9.10所示):(1)请求端(通常称为客户)发送一个SYN段,指明客户打算连接的服务器的端口,以及初始序号(SEQ)。这个SYN段为报文段1。(2)服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号设置为客户的ISN加1,用以对客户的SYN报文段进行确认。一个SYN占用一个序号。(3)客户必须将确认序号设置为服务器的ISN加1,用以对服务器的SYN报文段进行确认(报文段3)。上述三个过
40、程的完成表明建立了连接,该过程也称为三次握手(Three-way Handshake)。第9章 网络数据报的捕获与分析 图9.10 建立连接的三次握手机制第9章 网络数据报的捕获与分析 4.中止中止TCP连接连接建立一个连接需要三次握手,而中止一个连接要经过四次握手,它是由TCP的半关闭(half-close)特性造成的。由于TCP是全双工连接,每个方向的连接必须单独关闭,因此当一方完成数据发送任务后必须发送一个FIN标志来中止这个方向的连接。当一端收到一个FIN后,必须通知应用层另一端已经中止了该方向的数据传送。发送FIN通常是应用层关闭连接的结果。TCP连接收到一个FIN标志只意味着对方已
41、不再发送数据,但己方仍能发送数据,这是半关闭型应用。正常关闭过程如图9.11所示。第9章 网络数据报的捕获与分析 图9.11 中止连接的四次握手机制第9章 网络数据报的捕获与分析 9.2.3 UDPUDP是一个简单的面向数据报的运输层协议。进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。UDP协议与TCP等面向流字符的协议不同,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。UDP数据报封装成IP数据报的格式如图9.12所示。图9.12 UDP数据在IP数据报中的封装第9章 网络数据报的捕获与分析 UDP不提供可靠性,它把应用程序的数据发送出去,
42、但是并不保证它们能到达目的地。UDP是小型的、资源占用率很低的一种传输层协议,实际操作比TCP快。因此,它适合于不断出现的、和时间相关的应用(如IP上传输语音和实时的可视会议),以及其他的网络功能(如在路由器之间传输路由表更新,或传输网络管理/监控数据)。这些功能,虽然对网络的可操作性很关键,但是,如果使用可靠的TCP传输机制会占用过多的网络资源。不提供可靠性的协议并不意味着是无用协议,它只意味着设计用于支持不同的应用类型。UDP报文头的各字段如图9.13所示。第9章 网络数据报的捕获与分析 图9.13 UDP包首部第9章 网络数据报的捕获与分析(1)源端口(Source Port):源端口是
43、发送端上的连接端口。源端口和源IP地址可作为报文的返回地址。TCP端口号与UDP端口号是相互独立的。(2)目的端口(Destination Port):目的端口是接收端上的连接端口。目的端口用于把到达接收端的报文准确无误地转发。(3)信息长度(Total Length):该字段为16位,存储UDP首部和UDP数据的字节长度,最小值为8字节。(4)校验和(Checksum):是一个基于报文的内容计算得到的16位的错误检查域。接收端执行和发送端相同的数学计算,若两个计算值不同则表明报文在传输过程中出现了错误。第9章 网络数据报的捕获与分析 9.2.4 ARP数据链路(如以太网或令牌环网)都有自己的
44、寻址机制(通常为48 bit地址),这是基于数据链路的任何网络层都必须遵从的。一个物理网络(如以太网)可以同时被不同的网络层使用。例如,一组使用TCP/IP协议的主机和另一组使用某种PC网络软件的主机可以共享相同的电缆。当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的,设备驱动程序从不检查IP数据报中的目的IP地址。第9章 网络数据报的捕获与分析 地址解析为这两种不同的地址形式提供映射,即提供32bit的IP地址和数据链路层使用的任何类型的地址之间的转换。ARP为IP地址到对应的硬件地址之间提供动态映射,即将逻辑的Internet地址翻
45、译成对应的物理硬件地址。动态表明这个过程是自动完成的,应用程序用户或系统管理员不必关心。第9章 网络数据报的捕获与分析 1.ARP工作过程工作过程假设在一个以太网中,客户端要将一个IP报文发送到服务器端,那么客户端必须把32 bit的IP地址转换成48 bit的以太网地址。(1)ARP以广播的方式发送ARP Request数据帧给以太网上的每个主机,如图9.14中的虚线所示。ARP请求数据帧中包含目的主机的IP地址,意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址”。第9章 网络数据报的捕获与分析 图9.14 ARP操作过程第9章 网络数据报的捕获与分析(2)目的主机的ARP层收到这份
46、广播报文后,识别出这是发送端在寻问它的IP地址,于是发送一个ARP应答。这个ARP应答包含IP地址及对应的硬件地址。(3)收到ARP应答后,主机间通过使用ARP协议获得的硬件地址进行通信。ARP要求网络接口有一个硬件地址。在硬件上进行的数据帧交换必须有正确的接口地址。TCP/IP的地址是32 bit的IP地址,且知道主机的IP地址并不能让内核(如以太网驱动程序)发送数据帧给主机,内核必须知道目的端的硬件地址才能发送数据。ARP的作用是指在32 bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。第9章 网络数据报的捕获与分析 点对点链路不使用ARP。当设置这些链路时(一般在引导过程进
47、行),必须告知链路每一端的IP地址,并不涉及以太网地址这样的硬件地址。2.ARP分组格式分组格式在以太网上解析IP地址时,ARP请求和应答分组的格式如图9.15所示(ARP亦可用于解析其他类型网络的IP地址以外的地址,紧跟着帧类型字段的前四个字段决定了最后四个字段的类型和长度)。(1)目的地址(Destination Address):该字段为6字节,存储以太网的目的地址。(2)源地址(Source Address):该字段为6字节,存储以太网的源地址。第9章 网络数据报的捕获与分析(3)以太网数据帧类型(Ether Type):该字段为2字节,存储以太网数据帧类型,表示后面数据的类型。对于A
48、RP请求/应答来说,该字段的值为0 x0806。上述三个字段组成了以太网帧首部(见图9.2),以太网报头中Destination Address为全1的特殊地址是广播地址,电缆上的所有以太网接口都必须接收广播的数据帧。因此ARP协议在询问硬件地址时将目的地址设置为0 xFFFFFFFFFFFF,表明该数据帧是向全体硬件接口发出的。第9章 网络数据报的捕获与分析 图9.15 以太网传输的ARP请求和应答分组格式第9章 网络数据报的捕获与分析 (4)硬件接口类型(Hardware Type):该字段为2字节,用以识别硬件接口类型,0 x0001表示以太网接口,其他接口对应的值如表9.3所示。表表9
49、.3 硬件接口类型一览表硬件接口类型一览表第9章 网络数据报的捕获与分析(5)协议类型(Protocol Type):该字段为2字节,标识发送设备所使用的协议,在TCP/IP中,这些协议通常是Ether Type,以0 x0800表示。(6)硬件地址长度(Length of Hareware Address):该字段为1字节。(7)协议地址长度(Length of Protocol Address):该字段为1字节。上述两个字段以字节为单位,对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4,表明硬件地址即MAC地址为6字节,协议地址即IP地址为4字节。第9章 网络数据报的捕获与
50、分析(8)操作类型(Opcode):该字段为2字节,区分协议的四种操作,即ARP请求(值为1)、ARP应答(值为2)、RARP请求(值为3)和RARP应答(值为4)。ARP请求和ARP应答的帧类型字段值是相同的,因此必须用操作类型字段将其区分。(9)存储发送端硬件地址(Senders Hardware Address):该字段为6字节。(10)存储发送端协议地址(Senders Protocol Address):该字段为4字节。(11)存储目的端硬件地址(Target Hardware Address):该字段为6字节。(12)存储目的端协议地址(Target Protocol Addres