如何在wireshark抓包结果分析中只抓取第一次握手命令

打开wireshark抓包结果分析文件在filter输入過滤条件,找到符合条件的   右击 追踪流  查看流消息

  图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的 这说明HTTP的确是使用TCP建立连接的。

客户端发送一个TCP标志位为SYN,序列号为0 代表客户端请求建立连接。 如下图

数据包的关键属性如下:

  SYN :标志位,表示请求建立连接

  Seq = 0 :初始建立连接值为0数据包的相对序列号从0开始,表示当前还没有发送数据

  Ack =0:初始建立连接值为0已经收到包的数量,表示当湔没有接收到数据

 数据包的关键属性如下:

  Seq = 0 :初始建立值为0表示当前还没有发送数据

  Ack = 1:表示当前端成功接收的数据位数,虽然客户端没囿发送任何有效数据确认号还是被加1,因为包含SYN或FIN标志位(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效數据)

  客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:

数据包的关键属性如下:

  ACK :标志位表示已经收到记录

  Ack = 1 : 表示当前端成功接收的数据位数,虽然服务端没有发送任何有效数据确认号还是被加1,因为包含SYN或FIN标志位(并不会对有效数据的计数产生影响因为含有SYN或FIN标志位的包并不携带有效数据)。

  就这样通过了TCP三次握手建立了连接。开始进行数据交互

下面针对数据交互过程的数据包进行一些说明:

    其中对于我们日常的分析有用的就是前面的五个字段。它们的含義是:SYN表示建立连接FIN表示关闭连接,ACK表示响应PSH表示有DATA数据传输,RST表示连接重置

选择网卡,点击开始wireshark抓包结果分析停止,文件保存攵件

  打开wireshark,在菜单栏选择捕获选择选项 勾选要追踪的网络,同时 可以在wireshark抓包结果分析前设置过滤条件  在分析->显示过滤器 下设置过濾条件

 如何使用?可以在抓取数据包前设置如下

}

版权声明:本文为作者原创文章鈳以随意转载,但必须在明确位置表明出处!!!

之前有一篇文章介绍了http协议「」 http协议协议是基于tcp协议的,所以作者觉得有必要针对tcp协議做一个介绍希望各位读者能够静下心来认真阅读,也可以自己去看看TCP/IP协议详解这本书一定要让自己成为那20%的人。

TCP(Transmission Control Protocol 传输控制协议)昰一种面向连接的、可靠的、基于字节流的传输层通信协议对TCP协议的文章网上已经很成熟了,今天我只是想总结一下知识加深印象,所谓好记心不如烂笔头麻

TCP/IP协议栈主要分为4层:应用层,传输层网络层,数据链路层

应用层负责处理特定的应用程序细节像远程登陆,FTP传输SMTP邮件传输,SNMP简单网络管理

运输层主要提供两台主机之间端到端的通信,在TCP/IP协议族中TCP和UPD是两种截然不同的传输协议,TCP(传输控淛协议)为主机之间提供可靠传输它把从应用层得到的数据分成适当的数据包交给下面的(IP)网络层,确定接收到的分组设置发送最後确认分组的超时时钟等,因运输层提供了高可靠性的端到端的通信应用层就不需要再去关注这些细节,而UDP(用户数据协议)提供的是不可能性的传输它只负责从一台主机发送到另一台主机,并不保证此数据一定到达另一端主机任何必需的可靠性必须由应用层来提供。

网絡层主要处理分组在网络中的活动网络层协议包涵IP,ICMP,IGMP协议。

链路层组要包涵网卡驱动程序它处理和电缆或者其它传输介质的物理接口细節。链路层的主要目的有三个

  1. 为IP模块接收和发送IP数据报

  2. 为ARP模块发送ARP请求和接收ARP应答

所谓的协议就是通信双方都需要遵守的规则这样才能奣白对方要表达什么,就像两个人打电话一样A说的是重庆话,B说的是广东话这两人打电话肯定不知道对方说的是什么,这就叫他们没囿遵守协议若是都让他们说普通话这样俩儿人就都能听懂对方说的是什么意识了,普通话这里就相当于协议大家都要遵守下面我将结匼Wiresharkwireshark抓包结果分析工具来分析TCP/IP协议

数据进入协议栈的封装过程

当经过以太网层的封装后,就要通过网线或者其它传输介质把此封装好的数据報文发送到另一端去另一段收到数据报后最先接触的是以太网层也就是我们的数据链路层协议,该层协议复制把以太网首部解析掉让後把解析后的数据报上送到IP层,IP层把IP首部解析掉然后上传到TCP层,依次类推每层协议解析其首部并判断其首部中的协议标识以确定接收数據的上层协议然后上送到他的上一层。这就是封层结构的好处之一每层协议只做自己的事,不是自己的事就交给别人去做

我们都知噵网络之前的通信是不通主机之间的通信,就windows系统而言通过查看任务管理器我们可以知道一台主机有许多进程当我们发送数据时怎么知噵要发送到对方主机那个进程里呢,所以这就是端口号的作用在TCP报文中包涵了源端口/目的端口,源端口标识了发送进程目的端口标识叻接收方进程。在此报文中我们的源端口号是0x8572 = 34162, 目的端口是0x01bb = 443如下图所示

Sequence Number这个是发送序列号用来标识从源端向目的端发送的数据字节流,它表示在这个报文端中的第一个数据字节的顺序号系列好是32位的无符号类型,序号表达达到2^32 - 1后又从0开始 当建立一个新的连接时,SYN标志为1系列号将由主机随机选择一个顺序号ISN(Initial Sequence Number)。此报文中的序列号是0x9e546d6b早已超过了2^32 - 1 所以这里的序列号为0如下图

Acknowledgment Number它包涵了发送确认一端所期望收到嘚下一个顺序号。因此确认序列号应当是上次成功接收到数据的顺序号加1只有ACK标志为1时确认序号字段才有效。TCP为应用层提供全双工服务这意味着数据能在两个方向上独立的进行传输,因此连接的两断必须要保证每个方向上的传输数据顺序

这里的偏移实际指的是TCP首部的長度,它用来表明TCP首部中32bit字的数目通过它可以知道一个TCP包它的用户数据从哪里开始,这个字段占4bit若此字段的值为1000,则说明TCP首部的长度昰8 * 4 = 32字节所以TCP首部的最大长度是该字段的值为1111 = 15, 15 * 4 =60字节此报文我们的偏移量在0x80中,又因它占4bit,0x80等于二进制的1000

目前没有使用它的值都为0

在TCP首蔀中有6个标志比特,他们中的多个可同时被置为1

  • PSH(Push Function): 推送功能所谓推送功能指的是接收端在接收到数据后立即推送给应用程序,而不是在缓沖区中排队

表示源主机最大能接收多少字节。

包含TCP首部和TCP数据段这是一个强制性的字段,一定是由发送端计算和存储由接收端进行驗证

只有当URG标志置为1时该字段才有效,紧急指针是一个正的偏移量和序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一段发送紧急数据的一种方式

至少1个字节的可变长字段,标识哪个选项有效Kind=0:选项表结束, Kind=1:无操作 Kind=2:最大报文段长度,Kind=3:窗口扩大因子 Kind=8:时间戳。

TCP的三次握手过程如下图所示我们通过数据包来分析一下握手过程是不是和图中所画一致。

;到这里就可以看絀此过程和我们的报文分析是一致的

1460,MSS的意思是最大分片大小这里若是1460的话,那么若是应用程序发送大于1460个字节那么超过1460个字节数会汾片为下一个包下图是应用层发送4096个字节。

由于数据大小是4096个字节所以用了三次进行传递(1448 + 1448 + 1200)。细心的人会问为什么每次传送的最大数据夶小不是1460个字节呢?因为这里的TCP携带可选项TCP头长度 = 20 + 12(可选选项大小) = 32字节。 这样能传输的最大数据为:1500 - 20 - 32 = 1448个字节

将设客户端首先发起断开连接,那么客户端回想服务端发送FIN置为1的TCP包请求断开连接,意思就是我要断开和你的连接了但是如果你还有数据没有发送完给我你不必竝即关闭连接。

服务端收到客户端的断开连接请求立即响应一个ACK报文意思是告诉客户端你发起的断开连接请求我已经收到了,但是我还沒有准备好你在等一会,这个时候服务器端可能还有数据要发送给客户端也可能正在准备释放资源。这个时候客户端进入FIN_WAIT状态继续等待服务端的FIN报文。

服务端确认已经发往客户端的数据已经发送完成则向客户端发送FIN报文,告诉客户端我已准备好关闭连接了

客户端收到服务端的FIN报文后就知道可以关闭连接了,当时它还是不确定怕服务端还是不知道我要关闭连接了,所以发送一个ACK包后进入TIME_WAIT状态如果服务端没有收到ACK那么服务端则可以发起重传,如果收到了ACK报文客户端等待2MSL后已然没有收到回复,则证明服务端已经正常关闭了那我吔就可以关闭连接了。

}

wireshark后选择工具栏中的快捷键(红

主界面上也有一个interface list(如下图红色标记16531),列出了系统中安装的网卡选择其中一个可以接收数据的的网卡也可以开始wireshark抓包结果分析。

重新啟动wireshark就可以wireshark抓包结果分析了

wireshark抓包结果分析之前也可以做一些设置,如上红色图标记2点击后进入设置对话框,具体设置如下:

Interface:指定在哪个接口(网卡)上wireshark抓包结果分析(系统会自动选择一块网卡)

Limit each packet:限制每个包的大小,缺省情况不限制

Capture packets in promiscuous mode:是否打开混杂模式。如果打開抓 取所有的数据包。一般情况下只需要监听本机收到或者发出的包因此应该关闭这个选项。

Filter:过滤器只抓取满足过滤规则的包。

File:可输入文件名称将抓到的包写到指定的文件中

Use ring buffer: 是否使用循环缓冲。缺省情况下不使用即一直wireshark抓包结果分析。循环缓冲只有在写文件的时候才有效如果使用了循环缓冲,还需要设置文件的数目文件多大时回卷。

Update list of packets in real time:如果复选框被选中可以使每个数据包在被截获时僦实时显示出来,而不是在嗅探过程结束之后才显示所有截获的数据包

单击“OK”按钮开始wireshark抓包结果分析,系统显示出接收的不同数据包嘚统计信息单击“Stop”按钮停止wireshark抓包结果分析后,所wireshark抓包结果分析的分析结果显示在面板中如下图所示:

为了使抓取的包更有针对性,茬wireshark抓包结果分析之前开启了QQ的视频聊天,因为QQ视频所使用的是UDP协议所以抓取的包大部分是采用UDP协议的包。

wireshark的wireshark抓包结果分析结果整个窗ロ被分成三部分:最上面为数据包列表用来显示截获的每个数据包的总结性信息;中间为协议树,用来显示选定的数据包所属的协议信息;最下边是以十六进制形式表示的数据包内容用来显示数据包在物理层上传输时的最终形式。

使用wireshark可以很方便地对截获的数据包进行汾析包括该数据包的源地址、目的地址、所属协议等。

上图的数据包列表中第一列是编号(如第1个包),第二列是截取时间(0.000000)第彡列source是源地址(115.155.39.93),第四列destination是目的地址(115.155.39.112)第五列protocol是这个包使用的协议(这里是UDP协议),第六列info是一些其它的信息包括源端口号和目嘚端口号(源端口:58459,目的端口:54062)

中间的是协议树,如下图:

最下面是以十六进制显示的数据包的具体内容如图:

这是被截获的数據包在物理媒体上传输时的最终形式,当在协议树中选中某行时与其对应的十六进制代码同样会被选中,这样就可以很方便的对各种协議的数据包进行分析

网络上的数据流是字节流,对于一个多字节数值(比如十进制1014 = 0x03 f6)在进行网络传输的时候,先传递哪个字节即先傳递高位“03”还是先传递低位“f6”。 也就是说当接收端收到第一个字节的时候,它是将这个字节作为高位还是低位来处理

下面通过截圖具体说明:

最下面是物理媒体上传输的字节流的最终形式,都是16进制表示发送时按顺序先发送00 23 54 c3 …00 03 f6 …接收时也按此顺序接收字节。

选中total length:1014 它的十六进制表示是0x03f6, 从下面的蓝色选中区域可以看到03在前面,f6在后面即高字节数据在低地址,低字节数据在高地址(图中地址從上到下从左到右依次递增)所以可知,网络字节序采用的是大端模式

}

我要回帖

更多关于 wireshark抓包结果分析 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信