通过抓包分析TCP协议的连接与断开

TCP的连接与断开

TCP连接“三次握手”

TCP是提供可靠的面向连接的服务,也正是“可靠”,所以在进行通信前,要进行TCP建立连接,即“三次握手”。

在这里插入图片描述

第一次“握手”:

客户端向服务端发送一段报文,包含标记位SYN,表示我要请求连接,值为1,序号seq随机生成。

第二次“握手”:

服务器端接收到之后,停止监听,并返回一段TCP报文,其中包括标记位SYN和ACK,将值置为1,表示确认客户端请求的报文seq有效,并且继续随机生成一个seq序列号,返回一个确认号ack为x+1。

第三次“握手”:

客户端收到服务器端请求确认后,返回一段TCP报文,其中包括标记位ACK,值为1,表示确认收到服务器的信号,返回一个序列号seq,表示确认收到服务器端确认号ack,并且将其作为值,确认号ack表示收到服务端的seq,并将值加1作为自己的值。
服务器端收到报文后,开始进行数据传输。

抓包

在这里插入图片描述

第一次握手

在这里插入图片描述

第二次握手

在这里插入图片描述

第三次握手

在这里插入图片描述

TCP断开连接“四次挥手”

TCP是提供可靠的面向连接的服务,也正是“可靠”,未防止断开连接时还有数据在传输,可能导致的数据丢失,所以在断开连接时,连接的双方都确认后,释放该连接。

在这里插入图片描述

第一次“挥手”:

客户端向服务端发送一段报文,包含标记位FIN,值为1,表示我要释放连接,序号seq随机生成。

第二次“挥手”:

服务段向客户端发送一段报文,包含标记位ACK,值为1,ack为上一段报文的序列号加1,表示收到客户端的seq,确认客户端的释放连接请求序列号seq有效,seq随机生成。此时为半连接状态,即服务端可以向客户端发送数据。

第三次“挥手”:

服务端向客户端发送一段报文,包含标记位FIN,ACK,值为1,表示服务端将释放连接,不再发送数据,,ack、seq和第二次“挥手”时相同。

第四次“挥手”:

客户段向服务端发送一段报文,包含标记位ACK,值为1,seq序列号为上一段报文的ack确认号,ack为上一段报文的seq +1,表示客户端对上一段报文序号为y的确认,此时,双方断开连接。释放连接。

在本次抓包实验中,发现TCP四次“挥手”阶段时,第二、三次“挥手”合并在一起,因为在本次实验中,服务端可能已没有数据要发送,所以合并在一起发送。

抓包

在这里插入图片描述

第一次挥手

在这里插入图片描述

第二、三次挥手

在这里插入图片描述

第四次挥手

在这里插入图片描述

posted @   whitehe  阅读(34)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示