0. 原材料

抓包工具:wireshark
许多文章都是使用浏览器去访问一个网站,抓http的包,进而分析下层的tcp协议过程,但是数据比较多,不清晰,所以我采用了TCP调试助手,这样的话,没有http数据的干预,比较清晰。

1. 环境

借用www.huawei.com的ip地址183.66.110.167

因为这个ip地址开了http服务,又因为http协议下层采用的tcp,所以这个ip的80端口一定有TCP服务在监听。

使用TCP调试助手,创建一个连接

  • 连接类型:TCP
  • 目标IP:183.66.110.167
  • 端口:80

点击【确定】后

至此,环境配置完毕。

2. 抓包

首先打开wireshark,选择要监听的网卡,然后在过滤器中输入ip.addr == 183.66.110.167,目的是要过滤出这个IP地址的数据包。

三次握手过程

然后在点击TCP调试工具中的【连接】

之后,wireshark中可以看到3个数据包,这3个就是TCP的三次握手过程了。

【第一次握手】
Client发给Server
SYN = 1, seq = 0

【第二次握手】
Server发给Client
SYN= 1, ACK = 1, Seq = 0, Ack = 1

【第三次握手】
Client发给Server
ACK = 1, Ack = 1, Seq = 1

四次挥手过程

点击【断开连接】,会再出现4个数据包,这是四次挥手的数据包。

【第一次挥手】
FIN = 1, ACK = 1, Seq = 1, Ack = 1(这里的ACK和Ack不重要)

【第二次挥手】
ACK = 1, Seq = 1, Ack = 2

【第三次挥手】
FIN = 1, ACK = 1, Seq = 1, Ack = 2

【第四次挥手】
ACK = 1, seq = 2, Ack = 2

发送数据测试

连接的百度服务器,连接成功后,快速发送两条消息,两条消息内容都是admin,然后断开连接,抓包数据如下:

可以看到,除了握手和挥手外,每次的消息都有确认回复。