TCP的三次握手四次挥手

news2024/10/2 1:40:50

TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。

三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。

四次挥手:即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。


 TCP三次握手、四次挥手时序图

1、三次握手
       

       TCP协议位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP协议采纳三次握手策略。 

三次握手原理:

第1次握手:客户端发送一个带有SYN(synchronize)标志的数据包给服务端;

第2次握手:服务端接收成功后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了;

第3次握手:客户端再回传一个带有ACK标志的数据包,表示我知道了,握手结束。

其中:SYN标志位数置1,表示建立TCP连接;ACK标志表示验证字段。

可通过以下趣味图解理解三次握手:

 

三次握手过程详细说明:

1、客户端发送建立TCP连接的请求报文,其中报文中包含seq序列号,是由发送端随机生成的,并且将报文中的SYN字段置为1,表示需要建立TCP连接。(SYN=1,seq=x,x为随机生成数值);

2、服务端回复客户端发送的TCP连接请求报文,其中包含seq序列号,是由回复端随机生成的,并且将SYN置为1,而且会产生ACK字段,ACK字段数值是在客户端发送过来的序列号seq的基础上加1进行回复,以便客户端收到信息时,知晓自己的TCP建立请求已得到验证。(SYN=1,ACK=x+1,seq=y,y为随机生成数值)这里的ack加1可以理解为是确认和谁建立连接;

3、客户端收到服务端发送的TCP建立验证请求后,会使自己的序列号加1表示,并且再次回复ACK验证请求,在服务端发过来的seq上加1进行回复。(SYN=1,ACK=y+1,seq=x+1)。

2、四次挥手

 
        由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

四次挥手原理:

第1次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态;

第2次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态;

第3次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态;

第4次挥手:客户端收到FIN后,客户端t进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,服务端进入CLOSED状态,完成四次挥手。

其中:FIN标志位数置1,表示断开TCP连接。

可通过以下趣味图解理解四次挥手:

 

四次挥手过程详细说明:

1、客户端发送断开TCP连接请求的报文,其中报文中包含seq序列号,是由发送端随机生成的,并且还将报文中的FIN字段置为1,表示需要断开TCP连接。(FIN=1,seq=x,x由客户端随机生成);

2、服务端会回复客户端发送的TCP断开请求报文,其包含seq序列号,是由回复端随机生成的,而且会产生ACK字段,ACK字段数值是在客户端发过来的seq序列号基础上加1进行回复,以便客户端收到信息时,知晓自己的TCP断开请求已经得到验证。(FIN=1,ACK=x+1,seq=y,y由服务端随机生成);

3、服务端在回复完客户端的TCP断开请求后,不会马上进行TCP连接的断开,服务端会先确保断开前,所有传输到A的数据是否已经传输完毕,一旦确认传输数据完毕,就会将回复报文的FIN字段置1,并且产生随机seq序列号。(FIN=1,ACK=x+1,seq=z,z由服务端随机生成);

4、客户端收到服务端的TCP断开请求后,会回复服务端的断开请求,包含随机生成的seq字段和ACK字段,ACK字段会在服务端的TCP断开请求的seq基础上加1,从而完成服务端请求的验证回复。(FIN=1,ACK=z+1,seq=h,h为客户端随机生成)
至此TCP断开的4次挥手过程完毕。

为什么要三次握手?


        三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。
        第一次握手:Client 什么都不能确认;Server 确认了对方发送正常
        第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己接收正常,对方发送正常
        第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送接收正常
        所以三次握手就能确认双发收发功能都正常,缺一不可。

为什么连接的时候是三次握手,关闭的时候却是四次握手?


        因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

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

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

相关文章

flyway快速入门

flyway快速入门 一、flyway是什么?二、flyway使用目的1. 使用原因:2. 举个例子: 三、flyway工作原理四、flyway使用约定和命名规则1. 数据库版本文件整体约定2. 数据库版本文件夹管理约定3. 数据库版本文件命名约定4. 禁止项 五、flyway配置和…

微信多开(双开三开均可,且不局限于微信,其他设备亦可)

1.鼠标右键“微信”,属性 如上图,自动选取的,别动,然后CtrlC,,,,结果如下 "C:\Program Files (x86)\Tencent\WeChat\WeChat.exe" 2.创建文本,电脑桌面空白处单击,新建,文本档案&#…

Java版工程行业管理系统源码-专业的工程管理软件-em提供一站式服务 em

​ Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目…

安卓:BottomNavigationBar——底部导航栏控件

目录 一、BottomNavigationBar介绍 二、BottomNavigationBar的常用方法及其常用类 (一)、常用方法 1. 添加菜单项 2. 移除菜单项 3. 设置选中监听器 4. 设置当前选中项 5. 设置徽章 6. 样式和颜色定制 7. 动画效果 8. 隐藏底部导航栏。 9、设…

局域网新大陆?

操作后,即可实现局域网互通。

【java】民营医院、门诊部、连锁集团、公立医疗云HIS系统源码

基于云计算技术的B/S架构的医院管理系统(简称云HIS),为医疗机构提供标准化的、信息化的、高效可靠的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。利用云计算平台的技术优势,建立统一的云HIS、云病历、云P…

性能监控工具-Grafana安装和使用方法

Grafana是一款开源的数据可视化和监控平台。它提供了丰富的可视化方式,如图表、仪表盘、警报等,支持多种数据源,包括Prometheus、InfluxDB、Graphite等,适用于各种规模的系统监控和数据分析。Grafana还有一个强大的插件生态系统&a…

视频监控汇聚平台EasyCVR视频分享页面WebRTC流地址播放不了是什么原因?

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多…

淘宝店铺数据API接口 店铺详情数据API 店铺所有商品API接口

引言 在电商平台上,店铺所有商品API接口是一项非常重要且有着广泛应用的技术。它使得开发者能够方便地获取和管理店铺中的所有商品信息,进而实现自动化的商品管理和数据分析。本文将详细介绍店铺所有商品API接口的定义、功能以及调用流程,并附…

王道《操作系统》学习(二)——进程管理(三)

2.3.1 进程同步、进程互斥 (1)进程同步 (2)进程互斥 “同时”指的是宏观上的同时,微观上可能这些进程是交替地在访问这些共享资源的 当“上锁”后,其他的进程想要访问临界资源时,在进入区进行检…

js修改png图片颜色

思路是利用canvas 改变图片颜色 /*** 将png图片转成目标颜色* param imgUrl 可传入图片URL 或者 Base64* param RGBArr 要换成的目标颜色RGB 数组格式[R,G,B]* param Functon callback回调*/ function changeImageColor(imgUrl, RGBArr, callback) {let image new Image();im…

人工智能大模型中token的理解

“token”是当前语言类模型的数据单位。当前的自回归语言模型是根据 token 来作为单位进行数据处理和计算,分词(tokenization)就是将句子、段落、文章这类型的长文本分解为以 token 为单位的数据结构,把文本分词后每个词表示成向量…

小白入门Java第一天

当你对 Java语言有了一些了解后,你就可以开始着手学习Java了。 作为你的Java 学习第一天,所需掌握内容如下述目录: 文章目录 1. 注释1. 三种注释1.1 单行注释1.2 多行注释1.3 文档注释 2. 标识符和关键字2.1 标识符的组成:2.2 那…

C++11新特性lambda 表达式

lambda 表达式 lambda 表达式 lambda 表达式 Lambda 表达式的基本语法是:[] (参数列表) -> 返回值类型 {函数体}。 方括号([])表示捕获列表,用来指定在 lambda 表达式中可以访问的外部变量。 参数列表和返回值类型与普通函数的参数列表和返回值类型相…

写字楼门禁如何管理?最最新方法来了!

在现代社会,随着城市化和商务发展的蓬勃推进,大厦写字楼作为繁忙的商业中心和办公场所,其安全管理和员工考勤变得尤为重要。为了应对这一挑战,人脸门禁考勤机应运而生,成为大厦写字楼的安全保障和工时管理的关键工具。…

翻译公司提供哪些口译服务,北京翻译哪里比较专业?

我们知道,口译服务是一种即席的现场翻译活动,在涉外沟通交流中起着至关重要的作用。那么,如何做好口译工作,翻译公司提供哪些口译服务,北京翻译哪里比较专业? 据了解,相对于笔译,口译…

《吐血整理》高级系列教程-吃透Fiddler抓包教程(27)-Fiddler如何抓取Android7.0以上的Https包-中篇

1.简介 上一篇中,讲解和分享了一些如何快速解决的临时应急的的方法,但是小伙伴或者童鞋们是不是觉得是一些头痛医头脚痛医脚的方法,治标不治本,或者是一些对于测试人员实现起来比较有一定难度。所以今天宏哥再介绍和分享一下治本…

长相思·罚站墙Vue

优化前 看效果图 Vue长相思 刚学Vue&#xff0c;正好在追剧&#xff0c;看到这个小案例觉得挺好玩的&#xff0c;第一天学&#xff0c;代码太简陋了 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta…

海外版金融理财系统源码 国际投资理财系统源码 项目投资理财源码

海外版金融理财系统源码 国际投资理财系统源码 项目投资理财源码

RF手机天线仿真介绍(三):调谐开关分析

目录 简介调谐开关RON、COFF的影响分析不同位置的调谐器件coff影响分析不同位置的调谐器件Ron影响分析Coff引起谐振的解决示例 调谐开关VPEAK分析调谐开关Vpeak示例 简介 孔径调谐能调节天线的电长度&#xff0c;可将其谐振点切换到所需支持的工作频段。天线孔径调谐器通过改变…