结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载) 2025-04-06 网络 暂无评论 32 次阅读 > 网络安全的基础是网络,若连最基础的网络协议都搞不明白,何谈网络安全。针对核心的TCP协议,本文通过Wireshark工具抓取并分析TCP三次握手和四次挥手的详细过程,包括数据包捕获步骤,以及TCP报文中的关键字段(如源地址、目的地址、SYN、ACK等)的用途,大家读完此文能彻底搞懂TCP的连接释放原理,有任何疑问欢迎评论区留言,知无不答! #1. TCP协议基础知识 ##1.1. 概念介绍 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP是互联网核心协议之一,位于OSI模型的传输层,负责在互联网上的计算机之间提供可靠的数据传输服务。  TCP协议在OSI七层网络模型中的位置(第四层) ##1.2. TCP协议的工作原理 TCP连接的建立与断开,正常过程至少需要客户端与服务端来回发送7个包(请求)才能完成。其中客户端发送4个(1、3、4、7),服务端发送3个(2,5,6),具体原理参照下图。  ###1.2.1. 三次握手建立连接 TCP建立连接的过程,包括客户端和服务器总共发送3个包,此过程称为三次握手: - 第一次握手:客户端发送一个带有SYN标志的TCP段,请求与服务器建立连接。 - 第二次握手:服务器接收到SYN请求后,发送一个带有SYN和ACK标志的TCP段作为响应。 - 第三次握手:客户端接收到服务器的SYN+ACK响应后,发送一个带有ACK标志的TCP段,完成连接建立。 > 三次握手完成后便建立了TCP连接,便可进行数据传输,TCP负责将数据分割为多个段(Segment),并按顺序发送。 ###1.2.2. 四次挥手断开连接 TCP断开连接的过程,包括客户端和服务器总共发送4个包,此过程称为四次挥手: - 第一次挥手:客户端发送一个带有FIN标志的TCP段,请求断开连接; - 第二次挥手:服务器接收到FIN请求后,发送一个带有ACK标志的TCP段作为响应; - 第三次挥手:服务器发送一个带有FIN标志的TCP段,请求断开连接; - 第四次挥手:客户端接收到服务器的FIN请求后,发送一个带有ACK标志的TCP段,完成连接断开。 #2. 通过Wireshark抓包来详解TCP三握四挥 Wireshark是一款最流行和强大的开源数据包抓包与分析工具,可以截取各种网络数据包,并可以查看网络数据包详细信息。接下来我们就用这款工具来抓取百度网站的数据包。 1)打开Wireshark,开启抓包,然后打开cmd窗口,执行命令`curl www.baidu.com`访问百度来触发TCP三次握手。  2)在cmd中执行命令`ping www.baidu.com` 获取百度的IP地址。  3)为避免其他无用的数据包影响分析,可在显示过滤器(display filter)输入过滤条件tcp and ip.addr== 36.155.132.76,过滤TCP协议的数据包。  > 说明:tcp and ip.addr== 36.155.132.76 表示只显示TCP协议且源主机IP或者目的主机IP为36.155.132.76的数据包。 ##2.1. Wireshark数据包分析  三次握手与四次挥手 1)前三个包完成了三次握手,建立了连接。  - 第一个包是「第一次握手」:我(192.168.3.25)向百度(36.155.132.76)发送一个 SYN ,表示这是一个「建立连接的请求」; - 第二个包是「第二次握手」:百度(36.155.132.76)响应我(192.168.3.25)一个 SYN+ACK ,表示这是一个「接受连接的应答」; - 第三个包是「第三次握手」:我(192.168.3.25)向百度(36.155.132.76)发送一个 ACK ,表示这一个「确认请求」。 > 发送完确认请求后,我开启到百度的单向连接通道,百度收到我的确认请求后,就开启到我这边的单向连接通道,两边通道都开启以后,就可以通信了。 2)最后四个包通过四次挥手断开了连接。  - 第一个包是「第一次挥手」:我(192.168.3.25)向百度(36.155.132.76)发送一个「FIN+ACK」,表示这是一个「释放连接」的请求; - 第二个包是「第二次挥手」:百度(36.155.132.76)向我(192.168.3.25)响应一个「ACK」,表示这是一个「确认请求」,我收到后,就会释放我到百度的单向连接; - 第三个包是「第三次挥手」:百度(36.155.132.76)向我(192.168.3.25)发送一个「FIN+ACK」,表示这是一个「释放连接」的请求; - 第四个包是「第四次挥手」:我(192.168.3.25)向百度(36.155.132.76)响应一个「ACK」,表示这是一个「确认请求」,百度收到后,就会释放到我这边的单向连接。 > 双向的连接都释放后,TCP连接就关闭了(对于本例来说就是百度响应结束),此次通信结束。 若想了解更多关于网络协议基础及其工作原理,可以关注下方博主公众号,持续更新。或参阅如下文档: 图解TCP/IP-全彩版(第5版).pdf (下载链接:`https://url25.ctfile.com/f/1848625-1349828864-466fdc?p=6277`,访问密码: 6277) 图解HTTP-彩色版-上野宣.pdf (下载链接:`https://url25.ctfile.com/f/1848625-1347530453-282eac?p=6277`,访问密码: 6277) 转自https://mp.weixin.qq.com/s/eBhKcFlJROrPvrhJ-odHAg 标签: tcp 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。