TCP四次挥手关闭连接的图解与实践总结

《网络协议》图解 TCP 连接建立与释放 TCP 是面向连接的、可靠的字节流协议。因此,在传输数据之前通信双方必须建立一个 TCP 连接,建立 TCP 连接需要在服务器和客户端之间进行三次握手。通信双方数据传输完毕之后进行连接释放,释放连接需要在通信双方之间进行四次挥手。 阅读详情

TCP的关闭连接比TCP连接的建立稍微复杂一些,下面我把个人的学习和理解写下来分享。

(参考《计算机网络》,第6版,谢希仁著)。

1、TCP关闭连接的步骤


假设现有客户端A和服务端B,客户端A向服务端B发出关闭连接请求。

步骤一:客户端A主动向服务端B发送请求关闭连接报文段,FIN=1,seq=u,并进入FIN-WAIT-1状态,

步骤二:服务端B接受到客户端A的请求之后返回一个确认报文段,ACK=1,ack=u+1,seq=v进入到CLOSE-WAIT状态,并通知应用程序在传送完剩余数据之后关闭连接,

步骤三:客户端A接受到服务端B的确认报文段之后就进入FIN-WAIT-2状态,

步骤四:当服务端B的剩余数据传送完毕之后服务端B被动关闭连接,即向客户端A发送关闭连接报文段,FIN=1,ACK=1,seq=w(因为之间可能传送了一些数据消耗了一些序列号),ack=u+1,并进入到LAST-ACK状态,

步骤五:当客户端A接收到B的关闭连接报文段之后便返回一个确认报文段,ACK=1,ack=w+1,seq=u+1,并进入到TIME-WAIT状态(持续2MSL时间),

步骤六:当服务端B接收到A的确认报文段之后便进入到CLOSED状态,表示B到A这个方向的连接已关闭,

步骤七:客户端A在经历2MSL时间之后,没有接收到服务端B的超时重传的话便进入CLOSED状态,如果收到B的超时重传的报文,就重新发送确认报文段,并重新计算2MSL时间,直到2MSL时间过了。这时候TCP连接便完全关闭 了。


图解如下




2、TCP四次挥手的详细信息

下面通过抓包软件wireshark来查看TCP关闭连接时的步骤和报文段的详细信息

先交代背景

客户端IP:14.215.177.38

服务端IP:192.168.1.3


从wireshark中看TCP断开连接时的信息如下


NO.10829 客户端A向服务端B发送的请求关闭连接的报文段,此时TCP报文首部详细信息如下图


从上图可以看出 FIN=1,seq=4655,但是这里有个疑问,为什么ACK=1?后来通过去查看之前的其他包发现是对之前已经接收到的数据包的字节流进行确认


NO.10830是服务端B收到客户端的请求关闭连接的报文段之后返回的确认报文段,此时TCP报文首部详细信息如下图

从上图可以看出,ACK=1,seq=30939,ack=4656(前一个报文段的seq+1)


NO.10831是服务端B在传送玩剩下的数据之后被动关闭连接发出的报文段,此时TCP报文首部详细信息如下图




从上图可以看出FIN=1,ACK=1,seq=30939,ack=4656(跟前一个报文段一样)


NO.10832是客户端A在接收到服务端B的关闭连接报文段后返回的确认报文段,此时TCP的报文首部详细信息如下图

从上图可以看出ACK=1,seq=4656,ack=30940



3、第四次挥手后客户端A等待2MSL原因

1.确保服务端B能够收到客户端A的确认报文段

2.防止“已失效的连接请求报文段”出现下一个连接中














TCP协议三次握手和四次挥手的过程 1、名词解释 1) TCP(Transmission Control Protocol)传输控制协议 TCP是主机对主机层传输控制协议,为提供可靠的连接服务,采用三次握手来确认建立一个连接。 采用四次挥手来进行协议的终止。 2) 位码 TCP标志位,有以下6种标示: 标志位 英文 含义 SYN synchronouse 建立连接 ACK acknowledgement 确认标志... 阅读详情

相关推荐

wireshark分析TCP连接的“三次握手”与“四次挥手”

wireshark分析TCP连接的“三次握手”与“四次挥手”一、TCP协议二、TCP的“三次握手“和“四次挥手“(一)“三次握手”(二)“四次挥手”前"两次挥手"既让服务器端知道了客户端想要释放连接,也让客户端知道了服务器端了解了自己想要释放连接的请求。于是,可以确认关闭客户端到服务器端方向上的连接了三、Fiddler抓包分析HTTPS网站的TCP连接四、参考链接 一、TCP协议 传输控制协议(TCP,Transmission Control Protocol)是为了在不可靠的互联网络上提供可靠的端到端字

TBMmagic的博客 1215

tcp要点学习-断开连接

主要部分,四次握手: 断开连接其实从我的角度看不区分客户端和服务器端,任何一方都可以调用close(or closesocket)之类的函数开始主动终止一个连接。这里先暂时说正常情况。当调用close函数断开一个连接时,主动断开的一方发送FIN(finish报文给对方。有了之前的经验,我想你应该明白我说的FIN报文时什么东西。也就是一个设置了FIN标志位的报文段。FIN报文也可能附加用户数据,如果

yysdsyl的专栏 2226

TCP三次握手及四次挥手详细图解

TCP三次握手及四次挥手详细图解。

dvlinker的技术专栏 1万+

TCP 连接关闭状态图

TCP 连接关闭状态图

yefeng12的专栏 390

STC89C52RC单片机原理图详解

左侧A0和右侧B0为一 一对应的关系,左上角DIR为控制数据方向端口,如果DIR接高电平是将左侧数据A0~A8送到右侧B0~B8,如果DIR接低电平,是将右侧数据B0~B8送到左侧A0~A8,由于在电路板上LE始终与VCC连接,因此这里。74HC595是串行输入,并行输出的移位寄存器,可用3根线输入串行数据,8根线输出并行数据,多片级联后,可输出16位、24位、32位等,常用于I/O口扩展。由于数码管为共阴极,给数码管下面接口输入阳码时,LED才亮,但是直接将P0~P7的高电平输入到数码管时,

m0_50562428的博客 6万+

4G+GNSS定位模块DX-CT511N-B:AT指令实战与多协议通信指南

本文详细介绍了4G+GNSS定位模块DX-CT511N-B的AT指令实战应用与多协议通信配置。内容涵盖TCP/UDP通信、MQTT协议集成、HTTP服务交互以及GNSS定位功能的深度解析,为开发者提供从基础指令到高级调试的完整指南,助力物联网设备开发。

hope8的博客 289

TCP连接与断开,状态迁移图详解

总结下TCP迁移图的各个状态,着重三次握手与四次挥手!

hjlogzw的博客 1995

Win10 Rational Rose 安装教程

在此教程中我们需要四个文件,点此下载[提取码:ig33] 其中第一个为2007的安装包,第二个为破解文件 前言 很多小伙伴反应说会出现几天后就到期的问题,包括我也出现了该问题,如果你已在其他地方安装好了文件且破解成功,且但几天后到期,如果可以使用更改时间的方式打开,那么可以跳过接下来的教程,直接看第三节,我们采用批处理的形式一键完成从修改时间到打开最后改回来的方法解决此问题 一、安装软件 解压缩两个安装包,进入 Rational Rose文件夹 选择setup.exe开始安装 按照图示依次点击

CoderJiang 2万+

TCP四次挥手详解(含常见面试题)

TCP四次挥手过程 客户端发起fin位为1的FIN报文,此时客户端进入FIN_WAIT_1状态 服务端接受到FIN 报文后,发送ack应答报文,此时服务端进入close_wait状态 客户端接受到ack应答报文后,进入FIN_WAIT_2状态 服务端处理完数据后,向客户端发送FIN报文,此时服务端进入LAST_ACK状态 客户端接受到FIN报文后,客户端发送应答ack报文,进入TIME_WAIT阶段 服务端接受到ack报文后,断开连接,处于close状态 客户端过一段时间后,也就是2MSL后,进入clos

small_engineer的博客 2万+

Windows Server 2012评估版过期自动关机问题:两种高效解决方案详解

本文针对Windows Server 2012评估版过期导致的自动关机问题,提供了两种高效解决方案。一是通过slmgr.vbs命令重置授权,临时延长评估期;二是使用DISM工具将评估版转换为正式版,一劳永逸。文章详细解析了两种方法的操作步骤、注意事项及适用场景,帮助用户快速恢复服务器稳定运行。

pytorchlight8的博客 1195

Sobel原理及计算过程详解

该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。首先,我们需要构建一个Sobel算子,通常是一个 3x3 的矩阵。Sobel算子可以分别计算水平和垂直方向的梯度值,然后将两者合并得到总梯度值。索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度近似值。所以,我们假设选择图像矩阵中的点A(1, 1),即第二行第二列的元素,对应的。接下来,我们将使用Sobel算子计算这个点的梯度值。

2301_76461741的博客 1万+

超超超详细讲解TCP三次握手与四次挥手(大图解),值得收藏

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的;可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端;字节流:用户消息通过 TCP 协议传输时,消息可能会被操作系统「分组」成多个的 TCP 报文,如果接收方的程序如果不知道「消息的边界」,是无法读出一个有效的用户消息的。

senlin1202的博客 8739

【WLAN】【基础知识】WIFI那些事儿之AP扫描周边AP和STA

如本文对你有些许帮助,欢迎大佬打赏: 支付宝及微信打赏方式

一介草民,只为生活。 2881

Wireshark图解TCP三次握手与四次挥手

三次握手 四次挥手 四次挥手关闭连接,关闭连接的目的:防止数据丢失;与应用层交互 面试题1: 问:握手过程中可以携带数据吗? 答:从上面的过程可以发现第三次握手是可以携带数据的,前两次握手是不可以携带数据的 面试题2: 问:SYN攻击是占用服务端具体什么资源呢,SOCKET连接嘛? 答: 半连接队列,由net.ipv4.tcp_max_syn_backlog控制 ...

临江仙我亦是行人 2052

Day 01: 与Python的第一次亲密接触

环境搭建 、第一个程序 Hello, World!、以及Python之禅 (The Zen of Python) 的解读。

杨小扩的博客 220

【unity】【WebRTC】从0开始创建一个Unity远程媒体流app-构建可同步场景

本文介绍了如何利用Unity和WebRTC技术实现远程画面传输。通过配置Render Streaming组件、设置信令管理器和视频流发送器,构建了一个可同步的Unity场景。文中详细说明了从场景搭建到浏览器端测试的完整流程,并提供了常见问题排查方法。该方案适用于远程调试、云游戏、VR共享等场景,具有低延迟、高兼容性等特点。文章还包含项目源码下载链接,方便读者实践操作。最终实现了Unity端到浏览器端的实时画面传输,为后续实现双向互动奠定了基础。

每日出拳老爷子的博客 1841

详解 TCP 连接的“三次握手”与“四次挥手”

详解 TCP 连接的“三次握手”与“四次挥手”前言TCP的三次握手(Three-Way Handshake)1.”三次握手”的详解2.“三次握手”的通俗理解3.为什么要进行第三次握手TCP的四次挥手(Four-Way Wavehand)1.“四次挥手”的详解2.“四次挥手”的通俗理解为什么“握手”是三次,“挥手”却要四次?为什么客户端在TIME-WAIT阶段要等2MSL? 前言 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西; 由于TCP不存在连接的概

spade_Kwo的博客 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

tcp四次挥手图解

TCP建立连接是通过三次握手方式,断开连接则是通过四次挥手方式。TCP是一种面向连接的协议,关闭连接的过程比建立连接要复杂一些,需要四次报文交互,这是为了保证数据的可靠传输和双向的关闭。下图展示的是TCP四次挥手的全过程,用于断开一个已建立的连接。下面我会逐项解释图中各个阶段的状态变迁及术语所代表的含义及作用。

qqlsz147369的博客 2050

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

图解TCP连接建立与释放

1.前言 2.TCP状态机 3.TCP连接的建立 4.同时打开连接请求 5.TCP连接释放 6.同时关闭连接 7.TCP相关疑问1.前言  TCP是面向连接的,可靠的字节流协议。因此,在传输数据之前通信双方必须建立一个TCP连接,建立TCP连接需要在服务器和客户端之间进行三次握手。通信双方数据传输完毕之后连接释放,释放连接需要在通信双方之间进行四次挥手。2.TCP状态机  TCP所谓的“

oyhy_的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ”

客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西; 由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它们之间都是经过由TCP创建的一个从客户端发起,服务器接收的类似连接的通道,这个连接可以一直保持,http请求是在这个连接的基础上发送的; 在一个TCP连接上是可以发送多个http请求的,不同的版本这个模式不一样。 在HTTP/1.0中这个TCP连接是在http请求创建的时候同步创建的,http请求发送到服务器端,服务器端响应了之后,这个T

craftsman2020的博客 8392

tcp的三次握手和四次挥手(详解+图片)

TCP的连接和建立都是采用客户服务器方式。主动发起连接建立的应用进程叫作客户(Client) 被动等待连接建立的应用进程叫作服务器(Server),建立TCP需要三次握手才能建立,而断开连接则需要四次挥手。 整个过程如图所示: 一、三次握手 在TCP/IP中,采用三次握手建立一个连接,连接过程就像打电话的过程 第一次握手:Client(客户端主机A)向Server(服务器主机B)发送一个连接请求...

Atao_tao的博客 1万+

图解 TCP 四次挥手|深度解析|为什么是四次|为什么要等2MSL

首先我们可以确定一点TCP是全双工的,四次挥手是保证了双方都知道并且都已经断开连接。四次挥手过程的目的是确保数据在关闭过程中能够被完整传输,同时也允许延迟的数据包在关闭后仍然能够被接收。TIME_WAIT 状态的存在是为了处理可能的重复数据包,以确保连接的完全关闭。⚠️ 注意一点:关闭连接时,客户端A向服务端B发送 FIN 时,仅仅表示客户端不再发送数据了但是还能接收数据。为什么握手要三次,挥手却要四次呢?

面向生活编程 5115

TCP 三次握手与四次挥手超详细图解

TCP(传输控制协议)是计算机网络中最核心的协议之一,核心特点是面向连接、可靠传输。只要是基于TCP的通信(比如HTTP、HTTPS、Socket),都离不开两个关键操作:建立连接 → 用三次握手断开连接 → 用四次挥手这是面试必考、开发必懂的基础知识点,很多新手被“SEQ、ACK、SYN、FIN”搞得头晕,本文用「最通俗的语言 + 最清晰的流程图」,一次性讲透,看完就能记住、能讲明白!提示:本文不堆砌复杂概念,只讲核心逻辑,适合零基础入门、面试突击复习。

weixin_72188539的博客 2202

图解TCP连接建立与释放(三次挥手四次握手)

简单图解TCP连接与释放,详细解读三次握手四次挥手全过程。

Nimrod__的博客 5278

TCP四次挥手(图解)-为何要四次挥手

当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次挥手”。 第一次挥手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2

daguairen的博客 3万+
上一篇: TCP三次握手图解与实践总结
下一篇: 设计模式之单例模式的优化
ZengBlog
博客等级 码龄10年 29粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值