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
,然后断开连接,抓包数据如下:
可以看到,除了握手和挥手外,每次的消息都有确认回复。