Wireshark验证TCP三次握手四次挥手

本文介绍如何通过Wireshark抓包工具验证TCP的三次握手四次挥手过程。

首先本地起了一个tomcat服务器,跑了一个简单的基于SpringMVC的rest服务。

打开Wireshark,捕获指定网卡的包,这里就是napcap loopback adapter。

Wireshark验证TCP三次握手四次挥手

显示过滤器里输入http,只展示http请求包。这会还没有http的数据包。

Wireshark验证TCP三次握手四次挥手

postman里进行一下调用。

Wireshark验证TCP三次握手四次挥手

这时可以看到Wireshark抓到了两个包,一个是我们的请求,一个是服务器返回的响应:

Wireshark验证TCP三次握手四次挥手

我们随便选择其中一个来跟踪其具体的流程,比如选择第一个,也就是请求包,右键选择跟踪流->TCP流,可以看到如下:

Wireshark验证TCP三次握手四次挥手

我们知道的TCP三次握手流程是:

Wireshark验证TCP三次握手四次挥手

可以看到458、459、460的包正与这个过程对应,然后463包便是发出去的HTTP包。

接下来TCP连接并没有立即断开,而是等到获取了HTTP响应。

再接下来是若干心跳包,因为我们是HTTP/1.1协议(见上上图,下面解析出来的数据中可以看到是HTTP/1.1协议),HTTP/1.1默认是长连接的,底层也是基于的TCP长连接,需要客户端与服务端不断发送探测包KeepAlive进行保活探测。

Wireshark验证TCP三次握手四次挥手

一段时间之后,由于没有再进行数据交互,所以长连接断开:

Wireshark验证TCP三次握手四次挥手

可以看到最下面4个TCP请求就是四次挥手过程,与我们所熟知的下图一致:

Wireshark验证TCP三次握手四次挥手