简述三次握手和四次断开

news/2024/10/11 19:57:37/文章来源:https://blog.csdn.net/Will_1130/article/details/142152230

在计算机网络中,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.ldbm.cn/p/441198.html

如若内容造成侵权/违法违规/事实不符,请联系编程新知网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据之Flink(三)

9.3、转换算子 9.3.1、基本转换算子 9.3.1.1、映射map 一一映射 package transform;import bean.WaterSensor; import org.apache.flink.streaming.api.datastream.DataStreamSource; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; impor…

电竞社交平台

#计算机项目设计#vue项目实战 #java项目 #计算机项目 #电竞 #支付宝沙箱支付 #邮件发送 电竞社交平台 技术栈 开发工具:IDEA , VsCod 程序框架:SpringBoot、Mybatis、Vue 运行环境:Windows 数 据 库:MySQL 8.0.32 支付宝沙箱and邮…

C#笔记10 Thread类怎么终止(Abort)和阻止(Join)线程

Thread类 C#笔记8 线程是什么?多线程怎么实现和操作?-CSDN博客 C#笔记9 对线程Thread的万字解读 小小多线程直接拿下!-CSDN博客 上次说过怎么简单的使用多线程,怎么创建多线程,但是没有具体分析它的终止和释放。 线…

全国各地身份证号开头6位数字及地区对照表

具体请前往:全国各地身份证号开头6位数字-省市县/区对照表

【云备份】可视化客户端----QT开发➕QT数据库编程

文章目录 一、 需求分析二、 概念结构设计三、逻辑结构设计1. 用户表 (users)2. 客户端本地文件信息表 (upload_files)3. 备份记录表 (backup_records)4. 服务端备份文件信息表 (backup_files) 四、 开发工具五、具体实现(一) 客户端程序运行演示 一、 需…

校园水电费管理|基于java的校园水电费管理小程序系统 (源码+数据库+文档)

校园水电费管理 目录 基于java的校园水电费管理小程序系统 一、前言 二、系统设计 三、系统功能设计 小程序端 后台功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕…

等待唤醒机制和阻塞队列

1. 等待唤醒机制 由于线程的随机调度,可能会出现“线程饿死”的问题:也就是一个线程加锁执行,然后解锁,其他线程抢不到,一直是这个线程在重复操作 void wait() 当前线程等待,直到被其他线程唤醒 void no…

STM32F407VET6 学习笔记2:定时器、串口、自定义串口打印函数

今日继续学习使用嘉立创购买的 立创梁山派天空星,芯片是 STM32F407VET6 因为已经有学习基础了,所以学习进度十分快,这次也是直接一块学习配置定时器与串口了,文章也愈来愈对基础的解释越来越少了...... 文章提供测试代码讲解、完…

计算机毕业设计选题推荐-项目评审系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

python程序使用nohup后台执行不能实时输出到定向文件的解决方法

问题描述:使用nohup命令后台执行python,但python中print方法打印结果不能实时输出到nohup后台定向文件,只能在程序结束时一次性输出。典型问题样例:在python中使用了os.system(command)方法,command命令打印的结果可以…

快速入门游戏领域,开发游戏需要哪些技术?

在这个充满创意和技术的时代,游戏行业成为众多创新人才追求梦想的热土。对于准备踏入这个充满挑战与机遇的领域的新人来说,了解游戏开发流程是至关重要的。 游戏市场蓬勃发展,游戏行业未来行情可观,在这个充满创意和技术的时代&a…

Open CASCADE学习|通过指定点的曲线

在OpenCASCADE中,如果你想通过一系列指定的点来创建一条曲线,你可以使用Geom2dAPI_Interpolate类来实现二维曲线的插值,或者使用GeomAPI_Interpolate类来实现三维曲线的插值。这些类允许你定义一条B样条曲线,这条曲线将精确地通过…

说说精益生产管理咨询公司排名的那些事

面对市场上琳琅满目的精益生产管理咨询公司,企业如何做出明智选择,避免陷入“坑”中,成为了一个值得探讨的话题。本文将从多个维度出发,为大家揭晓精益生产管理咨询公司排名的那些事,助您找到最适合的合作伙伴。 一、认…

三种方式可以将彩色图像转成灰度图对比

有三种方式可以将彩色图像转成灰度图 1、直接imread(“1.jpg” , 0);直接读取灰度图像 2、读取彩色图像然后 灰度 0.299 * 红色 0.587 * 绿色 0.114 * 蓝色进行转换 3、调用cvtColor函数cvtColor(srcImg, imgShow, COLOR_BGR2GRAY); 通过测试来对比三者的区别&…

ctf.show靶场ssrf攻略

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 web351 解析:post传入url参数他就会访问。 解法: hackbar传入url参数写入https://127.0.0.1/flag.php web352 解析:post传入url参数,不能是127.0.0.1和localhost 解法:缩写127.1传入 web353 解析…

QT设置闹钟超时播报

头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTimerEvent> #include<QTime> #include<QTextToSpeech>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic…

党务政务服务|基于SprinBoot+vue的党务政务服务热线系统(源码+数据库+文档)

党务政务服务热线系统 目录 基于SprinBootvue的党务政务服务热线系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 管理员功能模块 管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博…

使用QT界面运行roslaunch,roslaunch,roscore等

QT通过界面运行rosrun,roslaunch,roscore等 QT 运行roslaunch加入ui界面修改cmakelist运行 使用qt界面运行rosrun&#xff0c;roscore,roslaunch等方法一方法二方法三 QT 运行roslaunch 首先需要使用QT安装好ROS插件&#xff0c;并且配置好环境&#xff0c;这个在之前的文章已…

webctf

熟悉robots.txt协议&#xff0c;可能存在一些敏感信息(sql在登录时候的万能密码a’ or true#)熟悉phps文件&#xff0c;phps文件就是 php 的源代码文件&#xff0c;通常用于提供给用户&#xff08;访问者&#xff09;查看 php 代码&#xff0c;因为用户无法直接通过 Web 浏览器…

所有即将登陆iPhone 16的Apple智能功能以及预期发布时间

苹果即将在9月9日的“Glowtime”&#xff08;闪耀时刻&#xff09;发布会上揭示和&#xff0c;这是本年度最值得期待的iPhone。 据悉&#xff0c;今年的iPhone将推出更大的屏幕、更快的芯片、更好的摄像头、新的颜色以及更多的内部升级。但是&#xff0c;除了这些硬件提升外&a…