Wireshark抓包分析TCP三次握手
(1)TCP三次握手连接建立过程
Step1:客户端发送一个SYN=1,ACK=0标志的数据包给服务端,请求进行连接,这是第一次握手;
Step2:服务端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让客户端发送一个确认数据包,这是第二次握手;
Step3:服务端发送一个SYN=0,ACK=1的数据包给客户端端,告诉它连接已被确认,这就是第三次握手。TCP连接建立,开始通讯。
(2)wireshark抓包获取访问指定服务端数据包
Step1:启动wireshark抓包,打开浏览器输入ping www.kaitian.club。
Step2:使用ping www.kaitian.club获取IP。
Step3:输入过滤条件获取待分析数据包列表 ip.addr == 39.97.174.197
图中可以看到wireshark截获到了三次握手的三个数据包。第六个包才是HTTP的(有时候第四个包是HTTP), 这说明HTTP的确是使用TCP建立连接的。
第一次握手数据包
客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图。
数据包的关键属性如下:
SYN :标志位,表示请求建立连接
Seq = 0 :初始建立连接值为0,数据包的相对序列号从0开始,表示当前还没有发送数据
Ack =0:初始建立连接值为0,已经收到包的数量,表示当前没有接收到数据
第二次握手的数据包
服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图
数据包的关键属性如下:
[SYN + ACK]: 标志位,同意建立连接,并回送SYN+ACK
Seq = 0 :初始建立值为0,表示当前还没有发送数据
Ack = 1:表示当前端成功接收的数据位数,虽然客户端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位。(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据)
第三次握手的数据包
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:
数据包的关键属性如下:
ACK :标志位,表示已经收到记录
Seq = 1 :表示当前已经发送1个数据
Ack = 1 : 表示当前端成功接收的数据位数,虽然服务端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据)。
就这样通过了TCP三次握手,建立了连接。开始进行数据交互
下面针对数据交互过程的数据包进行一些说明:
数据包的关键属性说明
Seq: 1
Ack: 1: 说明现在共收到1字节数据
Seq: 1
Ack: 1441: 说明现在服务端共收到1441字节数据
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG。如下
其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有DATA数据传输,RST表示连接重置。
Wireshark分析常用操作
调整数据包列表中时间戳显示格式。调整方法为View –>Time Display Format –> Date and Time of Day。调整后格式如下:
评论前必须登录!
注册