【计算机网络】三次握手 四次挥手

目录

1.三次握手

2.四次挥手

3.总结


三次握手和四次挥手是有连接特有的。三次握手,四次挥手指的是TCP有连接特点的中的步骤。建立连接(三次握手),断开连接(四次挥手)。建立连接操作一般都是客户端主动发起,断开连接操作客户端和服务器都可以主动发起。

1.三次握手

举个例子:如下图:A先向B发送 对于客户端,服务器而言,一般是客户端发起。

  1. 第一次握手A向B发送你好,B收到后 B就会知道A的发送和自己的接收功能是没问题的,但是A还不知道。
  2. 第二次握手B向A发送回复收到,A收到后,A就知道,B已经收到自己发送的信息了,,所以A就知道自己的发送和B的发送和接收功能是好的,但是B这这边还不知道A有没有收到自己的回复也就是不知道A的接收功能是否完好。
  3. 第三次握手A再次向B发送一下回应,B收到后,B就知道A的接收和自己的发送也是好的。至此,A,B都知道自己和对方的接受和发送是正常的。三次握手完成。建立连接完成。

 

两边closed,listen,syn_ack是TCP的状态。建立连接阶段,主要有两个状态:

1.listen 服务器的状态 表示服务器已经准备就绪,客户端随时都可以连接。

2.established 客户端和服务器都有。表示建立连接完成,三次握手完成。

 三次握手的核心作用:

  1. 双方建立对对方的认同。(即保存对方的信息)。
  2. 验证通信双方各自的发送能力和接收能力是否正常。
  3. 让通信双方,在握手的过程中,针对一些重要的参数,进行协商。

 区分确认应答和三次握手的区别?

TCP的特点有可靠性传输,有连接。UDP的特点是不可靠传输,无连接。

确认应答是可靠性传输的核心,而三次握手是有连接中的步骤,有连接包含连接的建立(三次握手),断开(四次挥手),维护等等。确认应答和三次握手虽然过程很相似,但其实毫无联系。确认应答体现的是"可靠性传输",与连接不连接无关系。就算不连接也能可靠性传输。比如企业微信发一条消息,会出现已读,这个过程没有建立连接,也是可靠性传输,"已读"相当于ack(应答报文)。


2.四次挥手

如下图:可以是A先跟B说,也可以是B先跟A说。这个客户端和服务器都可以发起。

比如下面:A先跟B说:我要删除你了(1)。B回复说:好的(2)。然后B又跟A说:我也要删除你了(3)。A回复说:好的(4)。

四次挥手中有两个主要的状态

1.CLOSE_WAIT 等待关闭 出现在被动断开连接的一方。

2.TIME_WAIT 出现在主动断开连接的一方。意味着主动断开连接的这一方的所做的事基本已做完,但还不能立即close,等待一定时间后(等待是为了保证客户端这边最后发送的ack能够达到对面,防止ack丢包),然后才进行close操作。丢包就会引发超时重传,假设最后一次的ack丢包了,那么服务器这边在过了一定时间后,发现ack没来,就会猜测是客户端发来的ack丢了,还是我刚才发送的fin丢了。在不确定的情况下,服务器这边就会重新发送fin请求。客户端再回传ack。

                     

那么TIME_WAIT具体保持多长时间呢,才真正释放呢?

假设网络上两个节点通信消耗的最大时间为MSL(可配置的参数),此时TIME_WAIT的保持时间最多为2MSL。MSL这个值一般是60s。以上面图为例,如果客户端这边等待了2MSL,还没收到服务器那边传来的FIN,就会认为服务器那边已经成功接收到自己的ack,进行close了,客户端这边也就不等待了,也会进行close。

ACK:确认序号是否有效。

SYN:请求建立连接,携带这个标识的称为同步报文段。synchronize,有点像锁,但这里翻译为同步,毫无关联。

FIN:通知对方,本端要关闭了。携带FIN标识的称为结束报文段


3.总结

面试画图

1.为啥会有三次握手,四次挥手?

原因是TCP是一个有连接的协议。其中连接建立的过程是三次握手,连接断开的过程是四次挥手。

2.三次握手的意义:

  1. 通信双方互相保存对方的信息。
  2. 验证通信双方得发送和接收能力。
  3. 协商一些关键参数。

4.三次握手中间两次能够合并的原因?四次握手中间两次不能合并的原因?

能不能合并主要看两个数据发送的时机相不相同。相同才能合并。

三次握手这三次交互过程( ack的发送,syn的发送 )是纯内核中完成的。应用程序感知不到,干预不了。服务器的内核系统收到syn后,就会立即发送ack,并且立即发送syn。所以中间这两次可以合并发送,其实也可以不合并,但合并会提高效率。所以就合并了。

而四次挥手中FIN的发送不是内核控制的,而是由应用程序(代码)控制的,当其调用socket的close方法或者进程结束,才会触发FIN。ACK是由内核控制的,收到FIN后,就会立即返回ACK。所以应用程序发生的时机会与你代码里的逻辑相关。代码越逻辑复杂(从接收到FIN还要执行其他代码逻辑才close操作),一个是立即返回,另一个是还要执行耗时。这两步操作完成的间隔越大,这种情况下合并就会等待另一个完成。若是时间长了,还会引发不必要的超时重传。所以通常情况下都是分开发送的。不过特殊情况下也是可以的,比如代码逻辑简单的时候。

上面实际上也回答了握手为啥是三次,挥手为啥是四次。

5.三次握手为啥不能是四次?或者不能是两次?

5.四次挥手为啥是四次?

6.TIME_WAIT的意义和作用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux shell编程学习笔记17:for循环语句

Linux Shell 脚本编程和其他编程语言一样,支持算数、关系、布尔、字符串、文件测试等多种运算,同样也需要进行根据条件进行流程控制,提供了if、for、while、until等语句。 之前我们探讨了if语句,现在我们来探讨for循环语句。 Li…

rem设置 vscode设置rem 适配 px转rem

1、下载安装 2、 二、 如果代码里面设置 就按代码里面来 -- 20 代码: // 基准大小 const baseSize 20 // 设置 rem 函数 function setRem() {// 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改。const scale document.documentElement.clientWidth / …

学会吃亏,也是善良

《六祖坛经》上说:一切福田,都离不开心地。 心田上播下善良的种子,总有一天,会开花结果。 所以,心地善良是一种福祉,是对生命最好的感恩与回报,心存善念,便是最好的修行!…

【Java每日一题】——第四十三题:编程用多态实现打印机.。分为黑白打印机和彩色打印机,不同类型的打印机打印效果不同。(2023.10.30)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

RK3568-适配at24c04模块

将at24c04模块连接到开发板i2c2总线上 i2ctool查看i2c2总线上都有哪些设备 UU表示设备地址的从设备被驱动占用,卸载对应的驱动后,UU就会变成从设备地址。at24c04模块设备地址 0x50和0x51是at24c04模块i2c芯片的设备地址。这个从芯片手册上也可以得知。A0 A1 A2表示的是模块对…

【鸿蒙软件开发】ArkTS基础组件之Select(下拉菜单)、Slider(滑动条)

文章目录 前言一、Select下拉菜单1.1 子组件1.2 接口参数 1.3 属性1.4 事件1.5 示例代码 二、Slider2.1 子组件2.2 接口参数:SliderStyle枚举说明 2.3 属性2.4 事件SliderChangeMode枚举说明 2.5 示例代码 总结 前言 Select组件:提供下拉选择菜单&#…

地球系统模式CESM

目前通用地球系统模式(Community Earth System Model,CESM)在研究地球的过去、现在和未来的气候状况中具有越来越普遍的应用。CESM由美国NCAR于2010年07月推出以来,一直受到气候学界的密切关注。近年升级的CESM2.0在大气、陆地、海…

Linux高级命令(扩展)

一、find命令 1、find命令作用 在Linux操作系统中,find命令主要用于进行文件的搜索。 2、基本语法 # find 搜索路径 [选项 选项的值] ... 选项说明: -name :根据文件的名称搜索文件,支持*通配符 -type :f代表普通文…

基于小安派AiPi-Eye-S1的Nes游戏机

1.作品展示 作品功能可见以下B站视频 外壳可以使用灰太狼大佬提供的外壳STL文件。在嘉立创三维猴上打印(外壳12元快递6元)。 外壳从以下的帖子中获取: 模型分享 2.作品说明 2.1 硬件部分 硬件上使用到了AiPi-Eye-S1开发板以及3.5寸 240*3…

ElasticSearch快速入门实战

全文检索 什么是全文检索 全文检索是一种通过对文本内容进行全面索引和搜索的技术。它可以快速地在大量文本数据中查找包含特定关键词或短语的文档,并返回相关的搜索结果。全文检索广泛应用于各种信息管理系统和应用中,如搜索引擎、文档管理系统、电子…

安防监控项目---CGI接口的移植和使用

文章目录 前言一、CGI二、CGI的具体移植步骤2.1 cgi源码下载2.2 搭建交叉编译环境2.3 注意事项 三、测试结果总结 前言 书接上期,上期与大家分享的是boa服务器的移植,那么几天要和大家介绍的呢是一款接口,哈哈哈,用起来也是有点难…

NSS刷题 js前端修改 os.path.join漏洞

打算刷一遍nssweb题(任重道远) 前面很简单 都是签到题 这里主要记录一下没想到的题目 [GDOUCTF 2023]hate eat snake 这里 是对js的处理 有弹窗 说明可能存在 alert 我们去看看js 这里进行了判断 如果 getScore>-0x1e9* 我们结合上面 我觉得是6…

人工智能基础_机器学习008_使用正规方程_损失函数进行计算_一元一次和二元一次方程演示_sklearn线性回归演示---人工智能工作笔记0048

自然界很多都是正态分布的,身高,年龄,体重...但是财富不是. 然后我们来看一下这个y = wx+b 线性回归方程. 然后我们用上面的代码演示. 可以看到首先import numpy as np 导入numby 数据计算库 import matplotlib.pyplot as plt 然后导入图形画的库 然后: X = np.linspace(0,…

文件正在使用,操作无法完成。windows查看占用文件的程序

查看占用 tasklist /m IDMShellExt64.dll 映像名称 PID 模块explorer.exe 7452 IDMShellExt64.dll杀死进程 taskkill /f /PID 7452 成功: 已终止 PID 为 7452 的进程。重启explorer explorer

20.3 OpenSSL 对称AES加解密算法

AES算法是一种对称加密算法,全称为高级加密标准(Advanced Encryption Standard)。它是一种分组密码,以128比特为一个分组进行加密,其密钥长度可以是128比特、192比特或256比特,因此可以提供不同等级的安全性…

OpenCV—自动驾驶实时道路车道检测(完整代码)

自动驾驶汽车是人工智能领域最具颠覆性的创新之一。在深度学习算法的推动下,它们不断推动我们的社会向前发展,并在移动领域创造新的机遇。自动驾驶汽车可以去传统汽车可以去的任何地方,并且可以完成经验丰富的人类驾驶员所做的一切。但正确地训练它是非常重要的。自动驾驶汽…

计算机考研 | 2013年 | 计算机组成原理真题

文章目录 【计算机组成原理2013年真题43题-9分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2013年真题44题-14分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2013年真题43题-9分】 某32位计算机&a…

sql-50练习题6-10

sql练习题6-10题 前言数据库表结构介绍学生表课程表成绩表教师表 0-6 查询"李"姓老师的数量0-7 查询学过"李四"老师授课的同学的信息0-8 查询没学过"李四"老师授课的同学的信息0-9 查询学过编号为"01"并且也学过编号为"02"的…

SMART PLC梯形速度曲线轨迹规划(追剪从轴控制)

在介绍本专栏之前,大家可以参考另一篇博图PLC的梯形加减速点动功能块介绍文章 梯形加减速点动功能块(博途SCL)_RXXW_Dor的博客-CSDN博客文章浏览阅读184次。SMART PLC斜坡函数SMART PLC斜坡函数功能块(梯形图代码)_RXXW_Dor的博客-CSDN博客斜坡函数Ramp的具体应用可以参看下…

港联证券:注册制意味着什么?

跟着我国本钱商场变革的不断深化,注册制在近年来成为了备受关注的论题。注册制的施即将改动原有的核准原则,关于股票和债券的发行,将由事后监管转变为事前挂号审理。那么,注册制意味着什么呢?本文将从经济、商场和出资…