简述三次握手和四次断开

news/2025/3/15 16:35:36/

在计算机网络中,TCP(Transmission Control Protocol)是一种面向连接的协议,它通过三次握手(Three-Way Handshake)建立连接,并通过四次挥手(Four-Way Wave)断开连接。下面分别简述这两个过程。

三次握手(Three-Way Handshake)
三次握手的过程是为了确保双方都准备好进行通信,并且可以正确地发送和接收数据。以下是三次握手的具体步骤:

SYN(同步序列编号)
客户端向服务器发送 SYN 报文:客户端首先发送一个带有 SYN 标志位的 TCP 数据包给服务器,表示请求建立连接。这个数据包还包含了一个初始序列号(ISN),用于后续的数据传输。
客户端:SYN(seq=x)
SYN-ACK(同步确认)
服务器向客户端发送 SYN-ACK 报文:服务器接收到客户端的 SYN 报文后,会发送一个带有 SYN 和 ACK 标志位的 TCP 数据包给客户端。这个数据包包含了一个确认号(ack=x+1),表示确认收到了客户端的序列号,并且包含了服务器自己的初始序列号。
服务器:SYN-ACK(seq=y, ack=x+1)
ACK(确认)
客户端向服务器发送 ACK 报文:客户端接收到服务器的 SYN-ACK 报文后,会发送一个带有 ACK 标志位的 TCP 数据包给服务器。这个数据包包含了一个确认号(ack=y+1),表示确认收到了服务器的序列号。
客户端:ACK(seq=x+1, ack=y+1)
至此,三次握手完成,TCP 连接建立成功。

四次断开(Four-Way Wave)
四次断开的过程是为了确保双方都完成了数据的发送和接收,并且可以安全地断开连接。以下是四次断开的具体步骤:

FIN(终止标志)
客户端向服务器发送 FIN 报文:客户端决定关闭连接时,会发送一个带有 FIN 标志位的 TCP 数据包给服务器。这个数据包包含了一个序列号,用于标识这是最后一个数据包。
客户端:FIN(seq=u)
ACK(确认)
服务器向客户端发送 ACK 报文:服务器接收到客户端的 FIN 报文后,会发送一个带有 ACK 标志位的 TCP 数据包给客户端,确认收到了客户端的 FIN 报文。
服务器:ACK(seq=v, ack=u+1)
FIN(终止标志)
服务器向客户端发送 FIN 报文:服务器完成数据发送后,会发送一个带有 FIN 标志位的 TCP 数据包给客户端,表示服务器也准备关闭连接。
服务器:FIN(seq=v, ack=u+1)
ACK(确认)
客户端向服务器发送 ACK 报文:客户端接收到服务器的 FIN 报文后,会发送一个带有 ACK 标志位的 TCP 数据包给服务器,确认收到了服务器的 FIN 报文。
客户端:ACK(seq=u+1, ack=v+1)
至此,四次断开完成,TCP 连接完全关闭。

为什么需要三次握手?
确保双方都已经准备好:三次握手确保了双方都已经准备好进行数据传输,并且确认了对方的通信能力。
避免失效的连接请求:三次握手可以防止已失效的连接请求报文突然又传送到了服务端,导致不必要的错误连接。
为什么需要四次断开?
确保双方都完成数据传输:四次断开确保了双方都已经完成了数据的发送和接收,确保没有遗漏的数据。
确保连接的可靠关闭:四次断开确保了双方都已经确认对方的数据发送完毕,可以安全地关闭连接。
总结
三次握手:用于建立 TCP 连接,确保双方都准备好进行数据传输。
四次断开:用于关闭 TCP 连接,确保双方都完成了数据的发送和接收,并且可以安全地断开连接。


http://www.ppmy.cn/news/1526949.html

相关文章

图像处理 -- ISP功能之局部对比度增强 LCE

局部对比度增强(LCE) 局部对比度增强(Local Contrast Enhancement, LCE)是一种图像处理技术,旨在通过调整图像的局部区域对比度,增强图像细节和视觉效果。LCE 的实现方式多种多样,以下是几种常…

godotenv拜读

简介 应用提倡将配置存储在环境变量中。任何从开发环境切换到生产环境时需要修改的东西都从代码抽取到环境变量里。 但是在实际开发中,如果同一台机器运行多个项目,设置环境变量容易冲突,不实用。godotenv库从.env文件中读取配置,…

项目实战应用Redis分布式锁

Redis分布式锁 一、前言二、Redis分布式锁过期处理三、Redis分布式实现3.1 基于Jedis 的API实现分布式锁3.1.1 基础命令3.1.2 基于Jedis API的分布式锁3.1.3 基于Lua脚本实现分布式锁 四、Redisson的使用五、Redision锁 核心源码分析六、总结 一、前言 对于项目中使用Redis分布…

Boot header格式描述详细信息。CSU DMA用于数据传输。安全流开关允许数据移动。PL配置通过PCAP接口。PL bit流包含设备配置数据。

在Boot header中的一些重要字段包括: - Reserved for interrupts: 用于存储中断相关信息,特别是在LQSPI地址空间中的默认0x01F中断向量被更改时,在XIP启动模式下使用。 - Quad-SPI宽度检测: 用于描述Quad-SPI宽度的字段。 - 加密状态: 用于…

128. 最长连续序列-LeetCode(C++)

128. 最长连续序列 2024.9.12 题目 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 提示&#xff1a; 0 < nums.length < …

DFS:深搜+回溯+剪枝实战解决OJ问题

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一 排列、子集问题 1.1 全排列I 1.2 子集I 1.3 找出所有子集的异或总和 1.4 全排列II 1.5 字母大小写全排列 1.6 优美的排列 二 组合问题 2.1 电话号码的数字组合 …

git编译安装报错

编译安装步骤 卸载旧的 yum -y remove gitcd /usr/local/src/wget https://www.kernel.org/pub/software/scm/git/git-2.15.1.tar.xztar -vxf git-2.15.1.tar.xzcd git-2.15.1make prefix/usr/local/git allmake prefix/usr/local/git installecho "export PATH$PATH:/usr…

【无人机设计与控制】四旋翼无人机俯仰姿态保持模糊PID控制(带说明报告)

摘要 为了克服常规PID控制方法在无人机俯仰姿态控制中的不足&#xff0c;本研究设计了一种基于模糊自适应PID控制的控制律。通过引入模糊控制器&#xff0c;实现了对输入输出论域的优化选择&#xff0c;同时解决了模糊规则数量与控制精度之间的矛盾。仿真结果表明&#xff0c;…