三次握手和四次握手到底有啥区别?

news2024/12/23 22:23:09

1. 三次握手

TCP 协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保 证连接的可靠。

  1. • 第一次握手,客户端向服务器端发起 TCP 连接的请求
  2. • 第二次握手,服务器端发送针对客户端 TCP 连接请求的确认
  3. • 第三次握手,客户端发送确认的确认

三次握手和四次握手描述(来自尚硅谷) 

1、客户端会随机一个初始序列号 seq=x,设置 SYN=1 ,表示这是 SYN 握手报文。然后就可以把这个 SYN 报文发送给服务端了,表示 向服务端发起连接,之后客户端处于同步已发送状态。 2、服务端收到客户端的 SYN 报文后,也随机一个初始序列号 (seq=y),设置 ack=x+1,表示收到了客户端的 x 之前的数据,希望客 户端下次发送的数据从 x+1 开始。 设置 SYN=1 和 ACK=1。表示这 是一个 SYN 握手和 ACK 确认应答报文。最后把该报文发给客户端,该 报文也不包含应用层数据,之后服务端处于同步已接收状态。

3、客户端收到服务端报文后,还要向服务端回应最后一个应答报文, 将 ACK 置为 1 ,表示这是一个应答报文 ack=y+1 ,表示收到了服务 器的 y 之前的数据,希望服务器下次发送的数据从 y+1 开始。 最后 把报文发送给服务端,这次报文可以携带数据,之后客户端处于 连接 已建立 状态。服务器收到客户端的应答报文后,也进入连接已建立状 态。

        完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由 于这种面向连接的特性,TCP 协议可以保证传输数据的安全,所以应用十分广 泛,例如下载文件、浏览网页等。

2 四次挥手

TCP 协议中,在发送数据结束后,释放连接时需要经过四次挥手。

  1. • 第一次挥手:客户端向服务器端提出结束连接,让服务器做最后的准备工作。此 时,客户端处于半关闭状态,即表示不再向服务器发送数据了,但是还可以接受数 据。
  2. • 第二次挥手:服务器接收到客户端释放连接的请求后,会将最后的数据发给客户 端。并告知上层的应用进程不再接收数据。
  3. • 第三次挥手:服务器发送完数据后,会给客户端发送一个释放连接的报文。那么客 户端接收后就知道可以正式释放连接了。
  4. • 第四次挥手:客户端接收到服务器最后的释放连接报文后,要回复一个彻底断开的 报文。这样服务器收到后才会彻底释放连接。这里客户端,发送完最后的报文后,会 等待 2MSL,因为有可能服务器没有收到最后的报文,那么服务器迟迟没收到,就会 再次给客户端发送释放连接的报文,此时客户端在等待时间范围内接收到,会重新发 送最后的报文,并重新计时。如果等待 2MSL 后,没有收到,那么彻底断开。

1、客户端打算断开连接,向服务器发送 FIN 报文(FIN 标记位被设置为 1,1 表示为 FIN,0 表示不是),FIN 报文中会指定一个序列号,之后 客户端进入 FINWAIT1 状态。也就是客户端发出连接释放报文段(FIN 报文),指定序列号 seq = u,主动关闭 TCP 连接,等待服务器的确 认。

2、服务器收到连接释放报文段(FIN 报文)后,就向客户端发送 ACK 应 答报文,以客户端的 FIN 报文的序列号 seq+1 作为 ACK 应答报文段 的确认序列号 ack = seq+1 = u + 1。接着服务器进入 CLOSEWAIT(等 待关闭)状态,此时的 TCP 处于半关闭状态(下面会说什么是半关闭状 态),客户端到服务器的连接释放。客户端收到来自服务器的 ACK 应答 报文段后,进入 FINWAIT_2 状态。

3、服务器也打算断开连接,向客户端发送连接释放(FIN)报文段,之后 服务器进入 LASK_ACK(最后确认)状态,等待客户端的确认。服务器的 连接释放(FIN)报文段的 FIN=1,ACK=1,序列号 seq=m,确认序列号 ack=u+1。

4、客户端收到来自服务器的连接释放(FIN)报文段后,会向服务器发送 一个 ACK 应答报文段,以连接释放(FIN)报文段的确认序号 ack 作为 ACK 应答报文段的序列号 seq,以连接释放(FIN)报文段的序列号 seq+1 作为确认序号 ack。

之后客户端进入 TIMEWAIT(时间等待)状态,服务器收到 ACK 应答报文 段后,服务器就进入 CLOSE(关闭)状态,到此服务器的连接已经完成 关闭。客户端处于 TIMEWAIT 状态时,此时的 TCP 还未释放掉,需要 等待 2MSL 后,客户端才进入 CLOSE 状态。

3.二者区别

  • 三次握手是建立连接的过程,四次握手是关闭连接的过程。
  • 建立连接时,客户端和服务器需要交换三个数据包;关闭连接时,需要交换四个数据包。
  • 四次握手中,最后一个ACK是为了确认服务器已经接收到了客户端的关闭请求,防止出现丢失的情况。在三次握手中,最后一个ACK是用来确认客户端已经接收到服务器的同意连接请求。

总体来说,三次握手和四次握手是TCP连接的建立和关闭的标准过程,确保通信双方的状态同步和数据的可靠传输。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1222762.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FISCO BCOS 3.0【01】搭建第一个区块链网络

官方技术文档:https://fisco-bcos-doc.readthedocs.io/zh-cn/latest/index.html 我们在官方技术文档的基础上,进行,对文档中一些不清楚的地方进行修正 搭建Air版本FISCO BCOS联盟链 本节以搭建单群组FISCO BCOS链为例操作,使用开…

NPDP 02组合管理

NPDP 产品经理认证知识体系指南解读,02组合管理 第二章 组合管理 公司战略或经营战略以及创新战略,为竞争性创新投资之间的权衡决策提供了整体方向和框架。在发展和持续性维护一个组织的产品组合时,总要面对一系列彼此竞争资源和投资的项目。…

Spring Cloud学习(九)【Elasticsearch 分布式搜索引擎01】

文章目录 初识 elasticsearch了解 ES倒排索引ES 的一些概念安装es、kibana安装elasticsearch部署kibana 分词器安装IK分词器ik分词器-拓展词库 索引库操作mapping 映射属性索引库的 CRUD 文档操作添加文档查看、删除文档修改文档Dynamic Mapping RestClient 操作索引库什么是Re…

Docker之DockerFile解析

DockerFile解析 是什么 Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。 概述 官网 https://docs.docker.com/engine/reference/builder/ 构建三步骤 编写Dockerfile文件 docker build命令构建镜像 docker run依镜像运…

轻地图+数据闭环加速落地,觉非科技获多家头部车企定点

‍作者 |张祥威 编辑 |德新 智能驾驶日益普及,「轻地图」和「数据闭环」成为各家能力比拼的关键,车企对此的需求也逐渐迫切。 11月16日,觉非科技宣布已与多家头部主机厂达成量产定点合作,围绕轻地图与数据闭环服务,支…

人工智能Keras的第一个图像分类器(CNN卷积神经网络的图片识别)

CNN卷积神经网络是人工智能的开端,CNN卷积神经网络让计算机能够认识图片,文字,甚至音频与视频。CNN卷积神经网络的基础知识,可以参考:CNN卷积神经网络 LetNet体系结构是卷积神经网络的“第一个图像分类器”。最初设计用于对手写数字进行分类,上期文章我们分享了如何使用k…

.Net6 部署到IIS示例

基于FastEndpoints.Net6 框架部署到IIS 环境下载与安装IIS启用与配置访问网站 环境下载与安装 首先下载环境安装程序,如下图所示,根据系统位数选择x86或者x64进行下载安装,网址:Download .NET 6.0。 IIS启用与配置 启用IIS服务 打开控制面板&#xff…

深度学习基础知识——从人工神经网络开始

一、介绍 您知道第一个神经网络是在 20 世纪 50 年代初发现的吗? 深度学习 (DL) 和神经网络 (NN) 目前正在推动本世纪一些最巧妙的发明。他们从数据和环境中学习的令人难以置信的能力使他们成为机器学习科学家的首选。 深度学习和神经网络是自动驾驶汽车、图像识别软…

AI先行者第三辑:石油专家正在加速“吸入”AI养分

AI对于石油行业而言,绝不是一个非此即彼、非黑即白、有用或者无用的简单命题,而是一个如何不断深入去提升效率,逐步证明自己价值的过程。 本篇作者安鹏,中国海洋石油集团有限公司信息技术中心 技术中台工程师;AICA首席…

22款奔驰S450L升级钢琴内饰板 完美的融合进去

钢琴拉丝桃木面板装车让人眼前一亮,内饰的豪华度和高级感立马提升一个等级,带条纹的亮面烤漆,温润高端。 为什么升级更换桃木饰板?因为升级桃木饰板可以更换掉一些镀铬银色的装饰件,这样就可以让整车的豪华感大大的提升…

qt library创建和使用

1、创建library 2、修改library中的代码 3、把library进行编译,编译后会生成相关文件 4、把编译后的文件拷贝到主程序目录下面。 5、并把library中的testlib头文件拷贝到主程序,并在pro文件加入(这里在后面使用library中函数有关&#xff0…

基于LeNet实现手写体数字识别实验

目录 1 数据 1.1 数据预处理 2 模型构建 2.1 自定义算子实现 2.2 Pytorch框架实现 2.3 测试两个网络的运算速度 2.4 两个网络加载同样的权重,两个网络的输出结果是否一致? 2.5 计算模型的参数量和计算量。 3 模型训练 4 模型评价 5 模型预测 总结…

专攻数学的Prompt:使GPT-3解数学题准确率升至92.5%

专攻数学的Prompt:使GPT-3解数学题准确率升至92.5% 写在最前面示例(试过了,难点的和普通输出差不多;只能说,比简单的题目输出内容更丰富一些)MathPrompter解题示例 机理MathPrompter是怎么工作的&#xff0…

秋招算法高频算法笔试题

自己在秋招过程中遇到的算法笔试题,包含中大厂,都附解析! 汽水瓶 如果汽水瓶数目为1或者0,那么一瓶都喝不到 如果汽水瓶数目为2或者3,那么只能喝到一瓶 如果为2,喝到一瓶后手里一个瓶子都没有了&#xff…

Flume学习笔记(3)—— Flume 自定义组件

前置知识: Flume学习笔记(1)—— Flume入门-CSDN博客 Flume学习笔记(2)—— Flume进阶-CSDN博客 Flume 自定义组件 自定义 Interceptor 需求分析:使用 Flume 采集服务器本地日志,需要按照日志…

for,while,do-while,死循环,嵌套循环,跳转关键字,随机数

1.for循环 public class ForDemo1 {public static void main(String[] args) {for (int i 0; i < 5; i) {System.out.println("HelloWorld");}System.out.println("--------------------------------------------");for (int i 1; i <10 ; i) {Sy…

SELF-RAG: 让LLM集检索,生成跟评判等多种能力于一身

SELF-RAG: 让LLM集检索&#xff0c;生成跟评判等多种能力于一身 提纲 1 简介 2 SELF-RAG 3 实验结论 4 讨论 参考文献 1 简介 尽管基础能力出众&#xff0c;但是大模型只能依赖于被压缩到模型参数中的知识&#xff0c;所以经常会生成不符合事实的回复。针对这种事实性错…

【LeetCode刷题-滑动窗口】-- 795.区间子数组个数

795.区间子数组个数 class Solution {public int numSubarrayBoundedMax(int[] nums, int left, int right) {return lessEqualsThan(nums,right) - lessEqualsThan(nums,left - 1);}private int lessEqualsThan(int[] nums,int k){int len nums.length;int res 0,left 0,ri…

wpf devexpress 绑定数据编辑器

定义视图模型 打开前一个项目 打开RegistrationViewModel.cs文件添加如下属性到RegistrationViewModel类 [POCOViewModel] public class RegistrationViewModel {public static RegistrationViewModel Create() {return ViewModelSource.Create(() > new RegistrationVie…

抖音直播招聘报白是一种新颖、高效的招聘方式增加曝光度和吸引力

总之&#xff0c;抖音招聘是一种新颖、高效的招聘方式&#xff0c;它可以为公司带来更大的曝光度和吸引力&#xff0c;帮助公司吸引更多优秀的人才。通过抖音直播招聘报白&#xff0c;企业或者人力资源公司可以利用抖音的短视频流量红利&#xff0c;触达到每天超过8亿的活跃用户…