今天学习了Wireshark工具,对于抓包有了极大的兴趣;特意通过抓包来加深一下TCP三次握手的过程,同时做以记录。

TCP报文段结构

CMCC portal 协议wireshark 抓包分析 wireshark抓tcp报文_tcp

过滤规则介绍

网络中包含着许多的数据报文,但是许多的都不是我们需要的。网上给的大多数规则不够具体,通过查阅资料,用下面的过滤规则可以更快的抓取TCP三次握手的包.

tcp.flags.syn == 0x02 || tcp.flags.ack == 0x02 && tcp.flags.fin != 0x02

CMCC portal 协议wireshark 抓包分析 wireshark抓tcp报文_wireshark_02

TCP的三次握手文字表述

####第一步:客户端的TCP首先向服务端的TCP发送一个特殊的TCP报文段。报文段中不包含应用层数据。但是在报文段的首部中的标志位SYN被值为1。这个特殊的报文段通常被称为SYN报文段。同时客户会随机选择一个初始序号(client_isn),并将该序号置于SYN报文段的序号字段中。
####第二步:包含TCP SYN报文段的IP数据报到达服务器主机,服务器会从该数据报中提取TCP SYN报文段,为该TCP连接分配TCP缓存和变量,并向该客户端TCP发送允许连接的报文段。首先,SYN字段被置1.其次该TCP报文段首部的确认号字段被置为client_isn+1;最后,服务器选择自己的初始序号(server_isn),并放入到该TCP的首部的序号字段中,该允许连接的报文段通常被称为SYNACK报文段。
####第三步:在接收到SYNACK报文段后,客户端也要给该TCP连接分配缓存和变量。客户主机想服务端发送另一个报文段;这最后一个报文段对服务器的允许连接的报文段进行了确认。客户端将值server_isn+1放入到TCP首部的确认号字段。因为连接已经建立了,所以SYN比特被置为0。

TCP三次握手抓包结果

CMCC portal 协议wireshark 抓包分析 wireshark抓tcp报文_三次握手_03


CMCC portal 协议wireshark 抓包分析 wireshark抓tcp报文_tcp_04

三次握手每个包中的具体数据

第一次握手数据报,可以看出SYN被置1

CMCC portal 协议wireshark 抓包分析 wireshark抓tcp报文_三次握手_05

第二次握手数据报,可以看出SYN被置1,ACK被置1,确认号字段被置1

CMCC portal 协议wireshark 抓包分析 wireshark抓tcp报文_wireshark_06

第三次握手数据报,SYN置0,ACK置1.序号和确认号被置1

CMCC portal 协议wireshark 抓包分析 wireshark抓tcp报文_三次握手_07

通过Wireshark工具抓包,对TCP的三次握手过程有了直观化的理解。