——用Ethereal捕获并分析数据包学院:计算机工程学院专业:计算机科学与技术姓名:张徽学号:2008404010135数据包捕获分析-1-TCP报文格式分析TCP提供一种面向连接的、全双工的、可靠的字节流服务。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。TCP的接收端必须丢弃重复的数据。TCP对字节流的内容不作任何解释。对字节流的解释由TCP连接双方的应用层解释。TCP通过下列方式来提供可靠性:应用数据被分割成TCP认为最适合发送的数据块,称为报文段或段。TCP协议中采用自适应的超时及重传策略。TCP可以对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。TCP的接收端必须丢弃重复的数据。TCP还能提供流量控制。TCP数据报的发送过程数据包捕获分析-2-图TCP数据报的格式源端口:占16比特(2个字节),分段的端口号;目的端口:占16比特(2个字节),分段的目的端口号;端口是传输层与应用层的服务接口。传输层的复用和分用功能都要通过端口才能实现;序号字段:占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。确认号字段:占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。数据偏移:占4比特,它指出TCP报文段的数据起始处距离CP报文段的起始处有多数据包捕获分析-3-远。“数据偏移”的单位不是字节而是32bit字(4字节为计算单位)。保留字段:占6bit,保留为今后使用,但目前应置为0。编码位:编码位含义紧急比特URG当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。确认比特ACK只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。推送比特PSH当PSH=1时,表示请求急迫操作,即分段一到马上就发送应用程序而不等到接收缓冲区满时才发送应用程序。复位比特RST(Reset)当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。同步比特SYN同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。复位比特RST(Reset)当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。终止比特FIN用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。窗口字段:占2字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。检验和:占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。紧急指针字段:占16bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。选项字段:长度可变。TCP首部可以有多达40字节的可选信息,用于把附加信息传递给终点,或用来对齐其它选项。填充字段:这是为了使整个首部长度是4字节的整数倍。(以上是理论分析,部分源自互联网和课本,下面来通过抓包软件(Ethereal)捕获TCP数据报具体分析,亲身体会具体是否和理论相同,以下纯属实验分析所得,绝无原样抄袭!)数据包捕获分析-4-具体实验分析如下:1.协议数据包窗口图TCP数据包具体分析如下:捕获的数据包默认按照时间的顺序全部显示在窗口中,窗口的选项从左到右分别是:包序号(NO.)、时间(Time,单位为秒)、数据包的源IP地址(Source)、数据包的目的IP地址(Destination)、协议类型(Protocol)、包信息概述(Info)。上述包分析如下:包号是1;当前包到达时间距离第一个包到达的时间是0.000000秒(当前包就是第一个到达);包的源IP地址是192.168.8.124;包的目的IP地址是1.59.22.255,由于是TCP协议,所以一个地址应该是本地计算机地址(本人计算机的IP地址是192.168.8.124),该源IP地址就是本地机器地址;协议类型TCP协议;最后一栏显示的是源端口号,目的端口号,以及编码位信息。图协议树窗口上面是一个协议树窗口。协议树窗口显示的协议层次与网络协议的层次对应,下面是上面这个例子的对应关系:树节点名称对应的协议层次说明Frame帧EthernetII数据链路层以太网协议InternetProtocol网络层IP协议TransmissionControlProtocol传输层TCP协议每个树节点下的都是该数据包在该层的具体参数和数据。要了解每个树节点的含义需要熟读TCP/IP协议簇。这里要记住一点,从应用层到最低层,通过逐渐添加数据包头来完成的,在数据链路层有一个尾部。这里仅仅举两个例子:IP协议节点、TCP协议节点。注意:帧这层没有对应的网络层,实际上该层是Ethernet为了管理自己建立的,其中的帧序号通常是显示过虑条件的重要参数。(以下图片全部通过Ethernet捕获数据包,然后用QQ中的截图功能截取)数据包捕获分析-5-2.IP协议节点IP协议节点上面节点说明如下:树节点名称说明VersionIP版本,IPv4HeaderLength20个字节的IP头,没有其他选项TotalLength该IP包携带的64字节Flags不分片标志被设置没有被设置,该IP在通过各种类型的网络时可以分片传输;如果该网络的最大数据包小于该IP包的长度,该数据包将被分片传输;TimetoliveTTL值为64,最多数据传输64个节点就被抛弃。Protocol该数据包是TCP协议的Headerchecksum头的校验和,通过该字段可以知道数据是否有错误。Source,Destionation该数据包的网络层源和目标地址。数据包捕获分析-6-3.TCP协议节点图TCP协议节点上面节点说明如下:树节点名称说明Sourceport源端口,传输层的源地址;Destinationport目的端口,传输层的目的地址;Sequencenumber当前包所载有效数据的起始序号,在一个连接中从开始计数;以字节计数;Acknowledgementnumber是源用来确认目标在该连接上的到该序号的数据都已经收到。Headerlength头的长度。FlagsTCP标志,上面的例子中表示该包是一个ACK标志,ACK标志几乎每个包都有(握手和终止的时候可能没有);Windowsize告诉对方TCP窗口的数据大小;对方还可以发送多少数据;Checksum校验和Options选项字段,特殊的TCP用途数据包捕获分析-7-4.16进制数据包窗口16进制数据包窗口将数据包的所有内容以16进制的形式显示出来,如下所示:图16进制数据包窗口该窗口包括3部分,分别是:16进制的序号,单位为字节;最左边部分。16进制的数据内容:16个字节一行;中间部分。ASCII码数据内容,最右边部分。总结:通过以上学习,基本掌握了Ethereal软件的运用:如何捕获数据包、怎样分析数据包以及如何过虑数据包。但学习Ethernet的使用不是最终目的,Ethernet只是辅助工具,真正需要掌握的是TCP包格式,以及各个字段的含义及作用。通过分析,更加加深了本人对TCP/IP协议簇的里理解。2010-12-08