TCP机制之连接管理(三次握手和四次挥手详解)

news2024/10/7 18:21:11

TCP的连接管理机制描述了连接如何创建以及如何断开!

建立连接(三次握手)

三次握手的过程

所谓建立连接就是通信双方各自要记录对方的信息,彼此之间要相互认同;这里以A B双方确立男女朋友关系为例:

从图中可以看出,通信双方各自向对方发起一个"建立连接"的请求,同时,再各自向对方回应一个ack,总共进行了四次通信交互(把每一次通信形象的比喻成一次握手),那为什么叫做三次握手呢?是因为其中第二次和第三次可以合并,合并之后的情况如图所示:

注意:

1,为什么是三次握手,而不是四次,中间两次可不可以不合并?

答:中间两次不可以不合并,四次比三次多一次通信的过程,每一次通信就会在网络上多一次封装分用的过程,开销更大成本更大.

2,三次握手可不可以简化成两次握手?

答:不能,因为两次的话必定会有一方不能建立对对方的连接.

三次握手的状态转换

在面试中,面试官可能让你动手画一下三次握手的一个简化过程,所以掌握三次握手的状态转换也是十分重要的,如图所示:

  • 建立连接之前,服务器端(被动建立连接的一方)处于LISTEN状态,表明此时客户端(主要建立连接的一方)可以发起建立连接的请求
  • 当客户端接收到服务器返回的ACK以及建立连接请求的SYN时,客户端就会处于一个ESTABLISHED状态
  • 当服务器接收到客户端返回的ACK时,服务器也会处于ESTABLISHED状态

三次握手的意义

  1. 让通信双方各自建立对对方的"认同"
  2. 验证通信双放方各自的发送能力和接收能力是否OK
  3. 在握手的过程中,双方协商一些重要的参数(TCP通信过程中,有些数据,通信双方要相互同步,此时就需要有这样的交互过程,恰好可以利用三次握手的机会,来完成数据的同步)

断开连接(四次挥手)

四次挥手的过程

所谓断开连接就会通信双方各自向对方发起一个断开连接的请求,再各自给对方一个回应,"挥手"和"握手"一样都是形象的叫法,都是客户端和服务器之间的交互;这里以男女朋友分手为例:

断开连接中间的两次通信过程不能合并!

注意:

为什么断开连接中中间两次通信不能合并?

答:因为在断开连接中的第一次通信返回的ACK是由内核控制的比较快,但是第二次通信是B向A发起断开连接的请求,不是由内核控制,而是应用程序调用socket的close方法(或者进程退出)才会触发,两者间隔时间比较长,一般不能合并(三次握手中中间两次通信过程都是由内核控制,间隔时间比较短,所以可以合并).

四次挥手的状态转换

  • CLOSED_WAIT(等待关闭状态)出现在被动发起断开连接的一方,等待调用close方法关闭socket
  • TIME_WAIT出现在主动发起断开连接的一方(上图假设的是客户端主动断开连接),当客户端进入TIME_WAIT状态的时候,相当于四次挥手已经完了
  • 客户端的TIME_WAIT状态要保持当前的TCP连接状态不要立即释放(原因:如果服务器没有收到客户端的ACK,服务器会认为是自己的FIN丢包了,就会重传,既然服务器要重传FIN,那么客户端需要能够针对这个重传的FIN进行ACK响应,如果刚才彻底把连接释放了,这样ACK就无法进行了)

所以更加详细记录四次挥手的图如下图所示:

TIME_WAIT具体保持多长时间才真正释放呢?一般约定的时间是2MLS,如果客户端经历了2MLS这个时间还没有收到重传的FIN,就认为这个ACK正常到达服务器了.

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

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

相关文章

Spring Security 安全框架NOTE

目录 1、什么是 Spring Security 安全框架? 2、关于 SpringSecurity 中的认证 3、关于 SpringSecurity 中的授权 3.1 从数据库中查询用户的权限信息 4、关于自定义失败处理 5、跨域问题 前提引入: 随着科技的完善,现在几乎所有的网站以及软件都需…

为大模型添加记忆体,GBASE南大通用驶入向量赛道

大数据产业创新服务媒体 ——聚焦数据 改变商业 理解、生成、逻辑、记忆是人工智能的四大核心能力。 一段人类的日常对话通常可以分解为引子、记忆、分析三个部分。计算机自然语言处理的解法,AI科学家归纳出一个CPV结构:以ChatGPT为代表的大模型承担“分…

Vmware 网络恢复断网和连接

如果你的 虚拟机无法联网了,比如: vmware 无法将网络更改为桥接状态: 没有未桥接的主机网络适配器 等各种稀奇古怪的问题; 按照下面操作 还远默认设置 包你解决各种问题!

Pycharm----将Anaconda建立的环境导入

首先打开项目设置,点击添加 随后点击现有环境,点击三个。。。号进行添加 最后找到你Anaconda安装文件夹,envs找到你建立的环境名称,找到python.exe将它导入即可让现在的python环境为你建立的环境,同时还需要更改终端方…

接口自动化测试系列-接口测试

接口测试工具-postman 利用postman完成接口测试:官网。 接口一般包含: url:请求地址,如:https://www.baidu.com/ method:请求方式,get,post,update,delete等 headers:请求头 body/params:请求体,post一般存在body中。get请求放在…

苹果手机隔空投送怎么用?隔空投送的使用教程来了!

如何实现苹果设备之间快速高效地传输各种数据?相信我,使用【隔空投送】是大家的不二选择。苹果手机的【隔空投送】功能,即大家口中常说的“Airdrop”,能够让苹果用户实现近距离传输照片、视频、文件等。苹果手机隔空投送怎么用&am…

安科瑞电能质量监测与治理系统的解决方案-安科瑞黄安南

01 电能质量问题及现象 02 电能质量标准及选型 03 安科瑞电能质量产品及服务 04 经典案例分析

实现卓越供应链:RFID技术的革命性应用

在现代制造业中,供应链和物流的高效运作至关重要,它不仅影响着生产效率,还直接关系到企业的竞争力和客户满意度。为了应对这些挑战,越来越多的企业开始关注智能制造RFID智能设备,将其应用于供应链和物流管理&#xff0…

在OpenStack私有云上安装配置虚拟机

文章目录 零、学习目标一、登录大数据实训云二、创建网络三、创建路由四、添加接口五、创建端口六、添加安全组规则七、创建实例(一)实例规划(二)创建实例 - ied(三)创建实例 - master、slave1与slave2&…

Cesium 根据鼠标点击生成点击点的坐标信息

Cesium 根据鼠标点击生成点击点的坐标信息 一、需求二、分析1. 创建鼠标点击事件2. 点击生成坐标但不是经纬度,而是笛卡尔坐标系下的坐标,这个时候需要做一次转换3. 完整代码 三、数据保存 一、需求 在日常开发中 ,会遇到根据鼠标点击生成对应…

MindSponge分子动力学模拟——使用迭代器进行系统演化(2023.09)

技术背景 在前面几篇博客中,我们已经介绍过使用MindSponge去定义一个系统以及使用MindSponge计算一个分子系统的单点能。这篇文章我们将介绍一下在MindSponge中定义迭代器Updater,并使用Sponge对系统进行演化,最后使用CallBack对输出结果进行…

Spring——Spring的控制反转IOC

摘要 IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;…

msvcp140.dll是什么东西?msvcp140.dll丢失的5个常用解决方法

今天,我将为大家带来计算机丢失msvcp140.dll修复教程。在我们的日常生活和学习中,计算机问题是无处不在的。有时候,我们可能会遇到一些困扰,比如计算机丢失msvcp140.dll文件。msvcp140.dll是Windows系统中非常重要的动态链接库文件…

代码随想录算法训练营第二十七天| 131.分割回文串

131.分割回文串 本题较难,大家先看视频来理解 分割问题,明天还会有一道分割问题,先打打基础。 代码随想录 视频讲解:带你学透回溯算法-分割回文串(对应力扣题目:131.分割回文串)| 回溯法精讲…

CS420 课程笔记 P6 - 游戏逆向中的虚拟内存

文章目录 IntroVirtual memoryExample!Static example Intro 在上个视频中,我们知道有些地址在你重进游戏时就会无效,有的有时有效,我们需要了解称为虚拟内存的东西 记住这些信息:当你双击打开 Squally.exe 游戏时,系…

【C++ 学习 ⑲】- 多态(下)

目录 一、虚函数表和多态的原理 1.1 - 虚函数表 1.2 - 多态的原理 二、单继承和多继承关系中的虚函数表 2.1 - 单继承关系中的虚函数表 2.2 - 多继承关系中的虚函数表 三、纯虚函数和抽象类 一、虚函数表和多态的原理 1.1 - 虚函数表 问:sizeof(b) 是多少&a…

使用docker部署db2

1.使用docker部署db2 1.1 拉db2镜像 将db2镜像拉起到本地。 docker pull ibmcom/db21.2启动容器 docker run -d -p 50000:50000 --name db2 --privilegedtrue -e DB2INST1_PASSWORDdbPassword DBNAMEjumpdb -e LICENSEaccept -v /usr/local/db2:/database ibmcom/db2实例化…

选择成都优优聚的优势是什么?

美团代运营是一种服务模式,旨在帮助商家提升线上销售业绩,并有效降低经营风险。通过专业团队的运营管理,商家可以获得更加稳定和可靠的线上业务经营。美团代运营提供了一整套解决方案,包括线上推广、店铺运营、商品管理、客户服务…

武汉旅游地

原文链接:https://www.cnblogs.com/MrFlySand/p/17678215.html 发表时间:2023年9月4日21:59:14 更新时间:2023年9月4日21:59:06 东湖飞鸟世界(动物园) 地址:东湖风景区沿湖大道20号时间:9:00-17:00交通:地铁…

远距离WiFi模组方案,实现移动设备之间高效通信,无人机远程图传应用

随着科技的不断进步,无线通信技术也在日新月异地发展。其中,WiFi技术已经成为现代生活中不可或缺的一部分。 从室内到室外,WiFi的应用场景正在不断扩大,为我们的日常生活和工业生产带来了极大的便利。 WiFi技术,即无…