网络安全的基础是网络,若连最基础的网络协议都搞不明白,何谈网络安全。针对核心的TCP协议,本文通过Wireshark工具抓取并分析TCP三次握手和四次挥手的详细过程,包括数据包捕获步骤,每个握手阶段和挥手阶段的数据包内容解析,以及TCP报文中的关键字段(如源地址、目的地址、SYN、ACK等)的用途,大家读完此文能彻底搞懂TCP的连续释放原理,有任何疑问欢迎评论区留言,知无不答!
1. TCP协议基础知识
1.1. 概念介绍
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。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 (访问密码: 6277)
- 图解HTTP-彩色版-上野宣.pdf (访问密码: 6277)