网络通信---四次挥手

TCP四次挥手过程 四次挥手 状态转化:A、B连接建立状态ESTABLISHED -> A终止等待1状态FIN-WAIT-1 -> B关闭等待状态2CLOSE-WAIT -> A终止等待2状态FIN-WAIT-2 -> B最后确认状态LAST-ACK -> A时间等待状态TIME-WAIT -> B、A关闭状态CLOSED 四次挥手过程 第一次挥手:A数据传输完毕需... 阅读详情

概述

之前写过网络编程的三次握手了。接下来聊聊四次挥手吧。

四次挥手

废话不多说,直接上图,如下:
四次挥手

第一次挥手:

主动关闭方发送一个FIN(结束)标志位被设置为1的TCP段,用来关闭主动方到被动方的数据传输。主动方进入FIN-WAIT-1状态。

第二次挥手:

被动关闭方接收到FIN后,发送一个ACK(确认)标志位被设置为1的TCP段作为回应,并且进入CLOSE-WAIT状态。主动关闭方接收到ACK后,进入FIN-WAIT-2状态。

第三次挥手:

被动关闭方发送一个FIN标志位被设置为1的TCP段,请求关闭其到主动关闭方的数据传输。

第四次挥手:

主动关闭方接收到这个FIN后,发送一个ACK标志位被设置为1的TCP段作为回应,并进入TIME-WAIT状态。经过一段时间(称为2MSL,即最大报文段生存时间的两倍)后,主动关闭方确保被动关闭方接收到了最终的ACK,然后关闭连接。

问题:为什么是四次,而不是三次?

TCP协议选择四次挥手而不是三次挥手来关闭连接,主要是基于以下几个原因:

确保数据传输完成:

四次挥手允许连接的两端独立地关闭各自的发送和接收通道。这意味着当一方完成数据发送并准备关闭连接时,另一方可能仍在发送数据。四次挥手确保了数据能够被完全传输和接收。

防止数据丢失:

在数据传输过程中,可能存在延迟的数据包。四次挥手通过TIME-WAIT状态,确保了发送方等待足够的时间,以便接收方能够接收所有在途的数据包。

避免旧连接干扰:

TIME-WAIT状态还有助于避免旧连接的数据包干扰新的连接。如果连接被重新建立,旧的延迟数据包可能会被误认为是新连接的一部分。

防止死锁:

三次挥手可能会导致死锁的情况。例如,如果双方同时发送FIN请求关闭连接,并且都等待对方的最终确认,那么如果没有额外的机制,它们可能会互相等待,导致死锁。

全双工通信:

TCP是全双工通信协议,这意味着数据可以在两个方向上独立流动。四次挥手允许每个方向独立关闭,确保了全双工通信的完整性。

有序关闭:

四次挥手提供了一个有序的关闭过程,确保了连接的两端都能够完成必要的数据传输和确认。

网络环境的不确定性:

网络环境可能存在各种不确定性,如延迟、丢包等。四次挥手通过额外的确认步骤,提高了关闭过程的健壮性。

符合TCP的设计理念:

TCP的设计目标是提供可靠、有序的数据传输服务。四次挥手机制符合这一设计理念,确保了连接关闭的可靠性和数据的完整性。

综上所述,四次挥手是TCP协议为了保证连接关闭的可靠性、有序性和数据完整性而采用的一种机制。

小结

本篇主要写了网络编程的四次挥手,先详细写了四次挥手的过程,以及每次挥手之后的tcp协议状态的改变;用以说明每次发生了什么以及原因。后边专门说明了为什么是四次挥手而不是三次。四次主要解决了哪些问题。本质上来说,三次挥手可以结束,但是基于安全,防止数据丢失等原因,还是采用了四次挥手。具体,可以参考上边答案。当然,也可以来学习学习。OK,本篇结束。

网络通信中的TCP三次握手与四次挥手:新手小白的入门指南 阅读详情

相关推荐

网络通信——TCP “三次握手“、“四次挥手“ 详解

TCP三次握手和四次挥手是面试题的热门考点,它们分别对应TCP的连接和释放过程!!!

m0_61927082的博客 772

TCP四次挥手详解

在开始之前可以先了解一下 TCP三次握手 TCP四次挥手过程和状态变迁 在断开连接之前客户端和服务器都处于ESTABLISHED状态,双方都可以主动断开连接,以客户端主动断开连接为优。 第一次挥手:客户端打算断开连接,向服务器发送FIN报文(FIN标记位被设置为1,1表示为FIN,0表示不是),FIN报文中会指定一个序列号,之后客户端进入FIN_WAIT_1状态。 也就是客户端发出连接释放报文段(FIN报文),指定序列号seq = u,主动关闭TCP连接,等待服务器的确认。 第二次挥...

LOOKTOMMER的博客 6万+

【网络通信】TCP三次握手、四次挥手

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP/IP协议族中,TCP协议负责在两个网络节点之间建立可靠的连接,并保证数据包的顺序传输和数据的完整性。

m0_74055118的博客 1676

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万+

网络通信的精髓:透彻理解 TCP/IP 的三次握手与四次挥手

服务器收到滞留的 SYN 报文段后,会误以为客户端要建立新的连接,并发送 SYN-ACK 报文段,建立连接。掌握 TCP/IP 协议栈,特别是 TCP 的握手挥手过程,才能更好地构建高效、可靠的网络应用,并在面对复杂的网络问题时,能够快速定位和解决问题。这意味着服务器已经收到了客户端的关闭连接请求,但可能还有数据要发送给客户端,因此服务器处于等待关闭的状态。在三次握手过程中,客户端和服务端都需要确认对方的序列号和确认号,确保双方都收到了对方的连接请求和确认信息,从而保证连接的可靠建立。

铭渊老黄 430

使用 ONLYOFFICE API 构建 Java 转换器,在 Word 和 PDF 之间进行转换

随着文档处理需求的增加,格式转换成为了一个重要的需求点。由于PDF格式具有跨平台、不易被篡改的特性,将Word格式(.docx)转换为PDF格式(.pdf)的需求尤为强烈。ONLYOFFICE作为一个强大的办公套件,提供了这样的转换功能,使得用户可以轻松地在Word和PDF之间进行转换。

ONLYOFFICE的官方博客 4569

计算机网络————“四次挥手”

概念:所谓“四次挥手”就是关闭TCP连接的过程,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认双方连接的断开。 意义:同样是保证TCP连接的全双工连接。 在socket编程中,这一过程由客户端或服务端任一方执行close来触发。   一、“四次挥手”示意图 简单口语描述: 第一次挥手:(客户):我要传送的数据包都发送出去了! 第二次挥手:(服务器):好的,收到...

追梦无惧 5621

拒绝无意义刷屏,打造高效率热点追踪,极空间部署『TrendRadar』

今天的这个项目确实不错,通过部署在极空间NAS之后,我们就能一直不间断的获取到自己想要看到的新闻或者信息。项目的设置项其实有很多,有兴趣的小伙伴可以在部署之后自己慢慢挖掘~目前年终大促正在火热进行中,极空间NAS不管是新品还是之前在售的畅销型号都有专属的优惠,并且还能叠加国补、平台优惠等福利,享受180天换新以及2年质保服务 ,更有抽奖、晒单等活动,喜欢的小伙伴赶快冲吧!

qq_63499861的博客 2290

TCP网络通信三次握手与四次挥手

为什么三次握手是三次? 三次握手指的是客户端在与服务端建立连接时发送三次信号,首先客户端给服务端发送SYN请求, 并且客户端进入SYN_SENT状态,这时候服务端监听到有新来的客户端要进行连接,于是服务端就给 客户端回复SYN和ACK请求,并且服务端进入SYN_RCVD状态;接下来客户端收到消息后就进入 ESTABLISHED状态,并且客户端给服务端发送ACK请求,当服务端接收...

X_simple的博客 355

自动驾驶仿真:python和carsim联合仿真案例

carsim内部有许多相关联合仿真的demo,simulink、labview等等都有涉及,这里简单介绍下python和carsim联合仿真的方法,虽然carsim官方有个Steer_Control.py相关的案例,但是感觉比较冗余,这里抽出重点部分和大家交流探讨下。提示:以下是本篇文章正文内容,下面案例可供参考1、这里关于solvers的细节其实都没说,因为里面确实也没什么内容好讲的,本质就是调用carsim.dll,如果你需要更多的函数解析其实可以看vs_api.h,路径在,具体内容如下图所示。

zataji的博客 9062

【技能---ubuntu20.04更换国内镜像源】

安装好ubuntu20.04后,在下载软件等安装包的时候,速度特别的慢,为此就想着更换一下镜像源,以此来增加下载的速度!!!下面是换源的具体流程!!!提示:以下是本篇文章正文内容,下面案例可供参考以上到这里就更换完软件源了,如有不足之处,请大家斧正!!!

fyc300的博客 1万+

网络通信与并发编程(一)网络通信、osi五层模型、tcp协议的三次握手与四次挥手

在同一个局域网中,由于源主机不知道目标主机的mac地址,源主机会一广播的方式发送arp报文给局域网的所有主机,当目标主机接收报文以后会缓存源主机的mac地址并发送arp报文回应,以此让源主机获取mac地址。四次挥手:当客户端发送完数据以后向服务端发送结束信息发送通道请求(FIN),服务端接收请求并发送回应信息(ACK),当服务端接收完数据以后会向客户端发送接收信息接收通道请求(FIN),客户端接收请求并发送回应(ACK),通信通道解除。mac地址是唯一的,可以用来标识计算机的身份信息。

m0_45491627的博客 1195

Disk Drill 使用教程

Disk Drill只需单击几下,即可恢复USB闪存驱动器上已删除的数据,包括丢失的照片,文档和其他文件类型。Disk Drill是真正的多合一应用程序,可在Mac上恢复闪存驱动器。Disk Drill将自动应用最佳的笔式驱动器恢复算法来恢复Mac数据。 USB闪存驱动器是一种传输和存储信息的好方法,但是如果错误地丢失或删除了存储在其中的文件,会发生什么呢?当您需要Mac的闪存驱动器数据恢复软件时,Disk Drill是您的最佳选择。Disk Drill将扫描您的USB闪存驱动器(也称为笔式驱动器)并查找

zjj778899的博客 1万+

网络通信协议下的 TCP(三次握手,四次挥手) 和 UDP socket 套接字

osi七层模型 互联网的核心就是由一堆协议组成,协议就是标准,标准就是大家都认可的,所有人都按照这个来,这样大家都能够互相了解,互相深入了~~~比如全世界人通信的标准是英语 五层通信流程: tcp协议:(TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若I...

alibba1234的博客 454

YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程

通过本教程,我们完整地学习了如何使用YOLO11-pose进行关键点检测任务的训练。从数据标注、格式转换到模型训练和评估,每个步骤都提供了详细的代码和说明。更高的精度:随着算法改进,关键点检测的精度将进一步提高实时性能:模型优化将使实时高性能关键点检测成为可能多模态融合:结合深度信息、热成像等多模态数据提升检测能力领域自适应:模型能够更好地适应不同场景和领域希望本教程能够帮助你在自己的项目中成功应用YOLO11-pose进行关键点检测。如果你有任何问题或建议,欢迎在评论区留言讨论!

QQ_778132974的博客 739

Python 对接钉钉获取员工上一篇日报或周报内容

摘要:本文介绍使用Python对接钉钉API获取员工日报/周报的方法。首先需创建钉钉应用并开通日志权限,获取员工UserID。通过获取AccessToken进行鉴权,调用topapi/report/list查询日志记录,筛选最新日报/周报后,使用topapi/report/details获取详细内容。需注意权限控制、时间范围筛选和模板匹配等问题。文末提供完整代码示例,并建议扩展自动化触发、数据存储等功能。该方法适用于企业自动化获取员工工作日志的场景。

从技术实践立足,从项目管理方法论延伸思考 808

网络通信原理简介--tcp/ip协议,tcp三次握手四次挥手,长连接和短连接

网络通信两大协议 1. tcp/ip 协议 1. 数据 + data 2. 应用层 + APP 3. 传输层 + tcp/udp套接字 + port(传输工具) 4. 网络层 + ip(网络地址) 5. 链路层 + MAC地址(物理地址) 2. osi 协议 1. 数据 2. 应用层 3..

weixin_38752686的博客 542

C#读取和写入excel表数据--手把手教详解

C#读写excel数据详解

如如水的博客 4055

python网络通信效率_Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)一丶CS/BS 架构C/S: 客户端/服务器定义:这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上对用户的电脑操作系统环境依赖较大比如:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用​优点:安全性高,个性化设置,功能全面,响应速度快缺...

weixin_39944944的博客 163

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

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

网络通信的三次握手四次挥手的个人理解

本文是自己基于学习三次握手四次挥手的个人理解。

weixin_40705467的博客 500

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

[网络通信与协议]三次握手与四次挥手

三次握手与四次挥手TCP报文结构TCP使用窗口机制进行流量控制窗口TCP的流控过程(滑动窗口)TCP连接全过程11个状态SYN_RECVCLOSE_WAITTIME_WAIT客户端状态流转服务器状态流转两个序号标志位三次握手作用初始状态图解具体步骤第一次握手第二次握手第三次握手四次挥手图解具体步骤第一次挥手第二次挥手第三次挥手第四次挥手另一种情况为什么需要四次挥手为什么需要三次握手半连接队列SYN...

teresa_cm的博客 340

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

网络通信之:TCP三次握手四次挥手详解

我们在学习TCP通信与UDP通信的时候知道:TCP通信是一种面向连接的、可靠的数据传输方式。UDP则是一种无连接的、不可靠的数据传输方式。以下是UDP传输数据时的大致图:可以看到在UDP通信中,发送端直接将数据包发送给接收端,不需要预先建立连接。那么,我们说TCP是一种面向连接的传输方式,那它到底是怎样面向连接的呢?接下来我们详细的讲解一下TCP在传输数据时的连接过程。

hih30250的博客 178

「Netty系列」使用wireshark对网络通信扑捉,进行三次握手和四次挥手原理分析(Netty前置二)

正常下班,文章走起。在网络的通信的时候,都有听说过三次握手四次挥手。但是对其原理是否清晰?本篇文章通过使用wireshark对网络通信扑捉,进行原理分析。 1 BIO代码实现 //服务端代码 publicclassServerSocket{ publicstaticvoidmain(String[]args)throwsException{ //创建ServerSocket对象,用于客户端的连接 java.net.ServerSo...

flowerAndJava的博客 478

TCP三次握手与四次挥手(网络通信篇)

三次的握手的目的就是。

栋哥修炼日记 196

网络通信:TCP三次握手和四次挥手

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。(1)基于流的方式;(2)面向连接;(3)可靠通信方

ReturnTmp的博客 537
上一篇: UE GamePlay框架
下一篇: UE5 Linux编译流程(实战)
1随便写写1
博客等级 码龄16年 2262粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值