Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >33. 传输层TCP协议十大主要特性(3) —— 连接管理(三次握手四次挥手)

33. 传输层TCP协议十大主要特性(3) —— 连接管理(三次握手四次挥手)

作者头像
小雨的分享社区
发布于 2022-10-26 07:51:52
发布于 2022-10-26 07:51:52
2210
举报
文章被收录于专栏:小雨的CSDN小雨的CSDN

连接管理

连接管理是分为两大块的: 1.建立连接:三次握手的过程 2.断开连接:四次挥手的过程

为什么要建立连接?

1.为了更好的保证可靠性,建立连接的过程就是让通信双方都确认验证一下各自的发送和接受能力是否能够正常 2.协商一些重要参数

建立连接:三次握手

假设我们现在在打电话,那么通信双方刚接通电话的时候就会有这样的情景:

TCP的实际连接过程中,是需要经历一下过程的:

三次握手中几个重要的状态: LISTEN:相当于手机打开了,有信号了,可以随时有人打电话进来 SYN_SEND/SYN_RCND:建立简介过程期间,如果建立连接顺利,这两个状态都是一瞬间就会消失的 ESTABLISHED:表示建立连接完成,可以开始正是通信了

断开连接:四次挥手

用两人分手的例子再来向大家做一些解释:

在TCP的实际连接过程中,是需要经历一下过程的:

对于CLOSE_WAIT的解释: 一般而言,对于服务器上出现大量的 CLOSE_WAIT 状态, 原因就是服务器没有正确的关闭 socket, 导致四次挥手没有正确完成. 这是一个 BUG. 只需要加上对应的 close 即可解决问题。(文件泄露问题)(一些文件出现相关异常也可能会导致跳过了close方法)

对于TIME_WAIT的解释: 谁主动断开连接,谁就进入了TIME_WAIT状态,到这一步的时候该主机已经完成了四次挥手的过程,但是仍然不能立刻释放资源,而是要以TIME_WAIT状态来保持一段时间的连接后在彻底释放资源(为了处理ACK丢包之后自动重传的问题,TIME_WAIT的时间是2MSL)

提问:

将三次握手改成两次行不行? 【不行,主机A还要给主机B应答,这样才能保证双方都能确认连接】 将三次握手改成四次行不行? 【行,但是没必要,因为ACK和SYN都在内核中,是同一时间发送的,把两个包合并成一个比较高效】 将四次握手改成三次行不行? 【ACK实在内核中的,FIN是需要处理完一些数据之后才会发送,ACK和FIN发送的时期不同,如果出发了延时应答机制(让ACK晚一会发送),就可以】

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
10分钟开发一个npm全局依赖包(上)
今天在逛网页的时候看到了一个古诗词的API,然后突发奇想,用了10分钟的时间做了一款npm全局依赖包。你可以使用npm install -g pome-cli来先玩一玩。有好东西当然要跟大家分享一下啦,现在从0开始给大家简绍打造这款全局依赖包。
kai666666
2020/10/17
1.5K0
Node.js 命令行程序开发教程
一种编程语言是否易用,很大程度上,取决于开发命令行程序的能力。 Node.js 作为目前最热门的开发工具之一,怎样使用它开发命令行程序,是 Web 开发者应该掌握的技能。 最近,Npm的网志有一组系列
ruanyf
2018/04/12
1.3K0
Node.js 命令行程序开发教程
2024年Node.js精选:50款工具库集锦,项目开发轻松上手(二)
Node.js的力量源自于庞大的NPM生态圈,拥有超过150万个包。没有NPM,Node.js虽然仍然可以使用,但其功能将大打折扣。在本系列文章中,我们将探索每位开发者都应该了解的常用NPM包。本篇,我们继续介绍第11至20款工具库,让你在Node.js项目开发中如虎添翼。
前端达人
2024/03/11
7690
2024年Node.js精选:50款工具库集锦,项目开发轻松上手(二)
使用Node.js编写命令行工具
闲来无事,在浏览 GitHub 时无意中看到了 commander.js 这个工具,16k 的 start,就看了看 commander 的官方文档。cammander 文档内容很少,而且很容易入门,它是一个用来创建命令行程序的 Nodejs 库。 commander 的 API 没有几个,本文主要用到了其中的 option 方法。而天气信息则是使用的高德天气的开放 web 接口,注册登录高德开放平台后就可以使用里面的免费 API 接口了。
多云转晴
2019/11/18
3.5K0
使用Node.js编写命令行工具
Week3-脚手架核心流程开发
2-4 高端操作:脚手架架构设计+绘制架构图 / 2-5 架构设计图绘图技巧分享
六个周
2022/10/28
9760
Week3-脚手架核心流程开发
一些小众却有用的 Node.js 包
yargs 是一个用来处理命令行参数的包,可以帮你处理自行设置的命令行标志和输入的任何类型的数据,其中包括布尔值、浮点数和字符串等。这个包非常简单明了,不需要在项目中编写大量的样板代码。
疯狂的技术宅
2020/10/22
9100
一些小众却有用的 Node.js 包
Chalk-控制台输出着色Nodejs库
可以使用转义序列在控制台中为文本的输出着色。 转义序列是一组标识颜色的字符。 例如:
ccf19881030
2020/07/02
1.5K0
Chalk-控制台输出着色Nodejs库
chalk.js(node终端样式库)
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="javascript" contenteditable="true" cid="n33" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">const chalk = reuquire("chalk") const log = console.log ​ // 颜色字体 log( chalk.red("红色") ) ​ // 背景色 log( chalk.bgBlue("蓝色背景") ) ​ // 样式字体 log( chalk.bold("加粗") ) ​ // 多参数 log( chalk.blue("name", "age", "job") ) ​ // ES6 多行文本 log( // 多行文本将保留缩进格式 chalk.blue(name: Rogan age: ${25} job: ${ 'IT' }) ) ​ ​ // 其他颜色设置方式 log(chalk.keyword("orange")(' keyword ')) // 关键字 log(chalk.rgb(100, 100, 100)(' rgb ')) // rgb log(chalk.hex('#ffffff')(' hex ')) // hex ​ ​ ​ // 样式组合 log(colors: ${chalk.blue('blue')}, ${chalk.red('red')}) // 拼接 ​ log(chalk.blue.bold("Title")) // 链式组合 ​ log( chalk.bgYellow(error: ${chalk.red(" chalk is undefined ")}) ) // 嵌套 ​ ​ ​ // 自定义组合 const error = chalk.bgRed; const warning = chalk.yellow.bold;</pre>
copy_left
2019/08/21
2.9K0
code-server code-server arm
请访问 最新版 已兼容 Mac M1 Run docker run -it -d \ --name vs-db \ -p 31005:3306 \ --hostname vs-db \ -e "MYSQL_ROOT_PASSWORD=123456" \ mariadb:latest docker run -it -d \ --name code-server \ -v /yourpath/www/html:/www/wwwroot/html \ -p 31001:8080 \ -p 31002:22 \
XRSec
2022/02/11
1.9K0
code-server code-server arm
我掌握了少数人才知道持续集成系统的日志密码
前段时间在使用 Travis CI 的时候发现它的部署日志包含了很多带色彩的日志。
秋风的笔记
2021/10/26
6890
「create-?」每个前端开发者都可以拥有属于自己的命令行脚手架
为什么要写这篇文章呢?是因为最近一直在搞Strve.js生态,在自己捣鼓框架的同时也学到了很多东西。所以就本篇文章给大家介绍一种更加方便灵活的命令行脚手架工具,以及如何发布到NPM上。
Vam的金豆之路
2021/12/21
1.2K0
「create-?」每个前端开发者都可以拥有属于自己的命令行脚手架
「前端工程化」从0-1搭建react,ts脚手架(自动化收集,进程通信,深拷贝文件等全流程)
①node实现终端命令行 ②终端命令行交互 ③深copy整个文件夹 ④nodejs执行终端命令 如 npm install ⑤建立子进程通信 ⑥webpack底层操作,启动webpack,合并配置项 ⑦编写一个plugin,理解各阶段 ⑧require.context实现前端自动化
用户6835371
2021/06/01
2.1K0
「前端工程化」从0-1搭建react,ts脚手架(自动化收集,进程通信,深拷贝文件等全流程)
Next.js学习
举例:在page下创建一个biao.js的文件 访问路径为:localhost:8080/biao
biaoblog.cn 个人博客
2022/08/11
1.9K0
【CodeBuddy】三分钟开发一个实用小功能之:霓虹灯管菜单导航
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接: 腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
Jimaks
2025/05/23
690
【CodeBuddy】三分钟开发一个实用小功能之:霓虹灯管菜单导航
手把手教你写一个前端脚手架
脚手架是什么,相信各位已经熟悉得不能再熟悉了,毕竟无论是vue开发者(vue-cli)还是react(create-react-app)开发者,他们都有各自的脚手架,个人虽是用react更多,但不得不说是更喜欢vue-cli的,它的插件机制非常有意思,虽不如webpack的plugin那么方便,但也很强大。不过再讲这强大的功能之前,原谅我先水一篇脚手架的基础。
winty
2024/07/11
3650
手把手教你写一个前端脚手架
Week5-脚手架创建项目流程设计和开发
注:由于我本地之前已经配好了,所以我本地的启动方式为:mongod --config /usr/local/etc/mongod.conf 查看mongodb.conf文件,我本地的dbpath路径为:/usr/local/var/mongodb 安装第三方工具:Robot 3T 连接到本地后:
六个周
2022/10/28
8000
Week5-脚手架创建项目流程设计和开发
开发一个Node命令行小玩具全过程--高颜统计工具
命令行工具对于我们来说非常的熟悉,一些命令行的操作也极大的简化了我们的日常工作。本文就基于我写的一个Node命令行代码计数器来进行展开。
秋风的笔记
2020/10/27
6410
开发一个Node命令行小玩具全过程--高颜统计工具
41·灵魂前端工程师养成-数据可视化echarts
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
6890
41·灵魂前端工程师养成-数据可视化echarts
Vue 开发必须知道的 36 个技巧【近1W字】
Vue 3.x 的Pre-Alpha 版本。后面应该还会有 Alpha、Beta 等版本,预计至少要等到 2020 年第一季度才有可能发布 3.0 正式版; 所以应该趁还没出来加紧打好 Vue2.x 的基础; Vue基本用法很容易上手,但是有很多优化的写法你就不一定知道了,本文从列举了 36 个 vue 开发技巧; 后续 Vue 3.x 出来后持续更新.
火狼1
2019/10/09
1.3K0
真-从零开始搭建自己的开源项目
在线体验 https://cssbattle.wuwenzhou.com.cn/index 来试一试,真的勇士看自己能下多少层!!! 需求分析 在看youtobe发现的https://cssbattle.dev/ 这个练习css的网站(如需访问大家记得访问国外网站)。这是很好的想法,也触发了我自己的想法,其实这个事情在icon上面是一个很好的应用。因为用css绝对是表达web样式的最佳实践之一。 优势:使用 Web Components和css3的新特性绝对比现在的icon方案,更少的资
吴文周
2022/03/09
2930
真-从零开始搭建自己的开源项目
推荐阅读
相关推荐
10分钟开发一个npm全局依赖包(上)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档