当前位置: 首页 > news >正文

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

目录

前言:

建立连接

建立连接主要两个TCP状态:

断开连接

断开连接的两个重要状态

小结:


前言:

    TCP是如何建立对端连接,如何断开连接,这篇文章会详细介绍。

建立连接

    首先明确连接的概念:Socket明确对方Socket对象(互相明确,建立认同关系),建立连接。断开连接就是删除内核中对于对端数据存储的空间。

    TCP建立连接的过程称为 “三次握手”,断开连接的过程称为 “四次挥手”。每一次通信称为一次握手或者挥手。

    注意:建立连接发起的报文称为同步报文段,TCP报头中标志位用SYN表示。

注意:

    所谓三次握手本质上是四次,通信双方互相发送建立连接的请求SYN,互相都回应一个ACK。

    这里将中间两次通信的过程合并为了一次。是因为当接收方接收到SYN,需要返回应答报文ACK和连接请求SYN。由于这两步都是在内核中完成的,发送的时机一致,因此就将它们合并为一个报文发送了。也就是三次握手。

三次握手另外一个重要作用:

    验证通信双方各自的发送能力和接收能力是否正常。因为三次握手已经实现了通信双方的请求和响应。

注意:

    三次握手也一定程度上保证了TCP的可靠性,但只是辅助作用(核心是:确认应答,超时重传)。

三次握手的意义:

1)让通信双方各自建立对对方的“认同”。

2)验证通信双方各自的发送能力和接收能力是否正常。

3)在握手的过程中,双方协商一些重要参数。

建立连接主要两个TCP状态:

1)LISTEN(服务器状态)

    表示服务器已经准备就绪,随时可以进行连接。

2)ESTABLISHED(客户端,服务器都有)

    连接建立完成,接下来可以通信了。

断开连接

    通过四次挥手断开连接。

    注意:FIN为结束标志,意味着这个报文为断开报文。TCP报头标志位也有体现。

注意:

    很清楚看到四次挥手的中间两次通信没有合并。由于发送断开连接其实就是Socket的close方法或者进程结束,就会触发Socket发送FIN报文段。当客户端发送断开连接的请求,服务端返回ACK,这个过程是操作系统内核实现的。两者的执行时机不同,就不能合并。

断开连接的两个重要状态

1)CLOSE_WAIT(出现在被动断开的一方)

    等待关闭(等待Socket执行close方法)

2)TIME_WAIT(主动发送断开连接的一方)

    如果一切顺利,客户端进入TIME_WAIT状态。四次挥手已经挥完了。

存在一个问题:

    最后一次挥手ack如果丢包了,超时重传就会重新发送。如果已经断开了,就会无法接收FIN返回ACK。因此设置一个断开等待时间(2MSL)就算丢包了,也会顺利的进行超时重传。

    MSL为互联网上,最长两个节点,数据传输消耗的最大时间。通常为60s。这里设置2MSL的等待时间,就是由于发送一个ACK且接收一个FIN最大时间也就2MSL。因此重传的时间一定小于2MSL。

小结:

    三次握手和四次挥手形象的体现了TCP连接和断开的过程,让我们仔细的去思考和理解。

相关文章:

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

目录 前言: 建立连接 建立连接主要两个TCP状态: 断开连接 断开连接的两个重要状态 小结: 前言: TCP是如何建立对端连接,如何断开连接,这篇文章会详细介绍。 建立连接 首先明确连接的概念&#xff1a…...

前端—环境配置

前端开发建议用 Google Chrome 浏览器 vscode https://code.visualstudio.com 1、open in browser 插件:可以在 vscode 中直接运行查看浏览器效果 2、Live Server 插件:可以使代码修改浏览器页面实时刷新。 用户代码片段 … JavaScript 与 TypeScri…...

大学生常用python变量和简单的数据类型、可迭代对象、for循环的3用法

文章目录变量和简单的数据类型下划线开头的对象删除内存中的对象列表与元组debug三酷猫钓鱼记录实际POS机小条打印使用循环找乌龟可迭代对象📗理解一📘理解二2️⃣什么是迭代器✔️注意3️⃣迭代器对象4️⃣有关迭代的函数for循环的3用法🌸I …...

Java集合:Map的使用

1.Map框架l----Map:双列数据,存储key-value对的数据 ---类似于高中的函数: y f(x)|----HashMap:作为Map的主要实现类, 线程不安全的,效率高;可以存储null的key和value|----LinkedHashMap:保证在遍历map元素时,可以按照…...

【Datawhale图机器学习】第一章图机器学习导论

图机器学习导论 学习路径与必读论文清单 斯坦福CS224W(子豪兄中文精讲)知识图谱实战DeepwalkNode2vecPageRankGNNGCNGragh-SAGEGINGATTrans-ETrans-R 图无处不在 图是描述关联数据的通用语言 举例 计算机网络新冠肺炎流行病学调查传播链食物链地铁图…...

window 配置深度学习环境GPU

CUDA 11.6 CUDNN Anaconda pytorch 参考网址:https://zhuanlan.zhihu.com/p/460806048 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) 电脑信息 RTX 2060 GPU0 1. CUDA 11.6 1.1 确认信息 C:\Users\thzn>nvidia-smi (CUDA Versi…...

VS Code 用作嵌入式开发编辑器

使用 Keil MDK 进行嵌入式开发时,Keil 的编辑器相对于主流编辑器而言有些不方便,比如缺少暗色主题、缺少智能悬停感知(鼠标停在一个宏上,能自动展开最终的宏结果)、代码补全不好用等等,所以推荐使用 VS Cod…...

【Python】网络爬虫经验之谈

爬虫经验之谈对爬虫的认识网站分析技术选型JS逆向反爬机制结语近段时间,因为工作需要做一些爬虫的开发,分享一下走过的坑和实战的经验吧!对爬虫的认识 F12查看的网络请求,找到相应的接口查看一下json数据来源和构造。我爬取的网站…...

数学建模美赛【LaTeX】公式、表格、图片

数学建模美赛【LaTeX】公式、表格、图片 1 宏包 \package{ } 就是在调用宏包,对计算机实在外行的同学姑且可以理解为工具箱。 每一个宏包里都定义了一些专门的命令,通过这些命令可以实现对于一类对象(如数学公式等)的统一排版&a…...

【大数据】YARN节点标签Node Label特性

简介 YARN 的 Node-label 特性能够将不同的机器类型进行分组调度,也可以根据不同的资源要求进行分区调度。运维人员可以根据节点的特性将其分为不同的分区来满足业务多维度的使用需求。YARN的Node-label功能将很好的试用于异构集群中,可以更好地管理和调…...

C# SolidWorks二次开发 API-命令标签页的切换与按钮错乱问题

这是一个网友咨询的问题,说他想控制默认打开文件之后solidworks上方工具栏的当前激活标签页。 之前我们提到过,制作Solidworks的插件也会在上面增加一个标签页,用来放自己开发的命令,经常开发的人肯定会遇到有时候更新版本,或者标…...

ElasticSearch 7.6.1

疑问 ES为什么这么快? 全文检索 听过一个程序扫描文本的每一个单词,针对单词建立索引,并保存该单词在文本中的位置,以及出现的次数。在检索查询时候,通过建立好的索引进行查询,将索引中单词对应的文本位…...

Linux系列 操作系统安装及服务控制(笔记)

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.操作系统 1.Linux系统三大类 (1)ubu…...

Linux基础 - NTP时间同步

‍‍🏡博客主页: Passerby_Wang的博客_CSDN博客-系统运维,云计算,Linux基础领域博主 🌐所属专栏:『Linux基础』 🌌上期文章: Linux基础 - DNS服务进阶 📰如觉得博主文章写的不错或对你有所帮助…...

golang 入门教程:迷你 Twitter 后端

请记住,这个项目主要是为了稍微熟悉下Golang,您可以复制架构,但该项目缺少适当的 ORM,没有适当的身份验证或授权,我完全无视中间件,也没有测试。 我将在其自己的部分中讨论所有这些问题,但重要的…...

CPP2022-30-期末模拟测试03

6-1 引用作函数形参交换两个整数 分数 5 全屏浏览题目 切换布局 作者 李廷元 单位 中国民用航空飞行学院 设计一个void类型的函数Swap&#xff0c;该函数有两个引用类型的参数&#xff0c;函数功能为实现两个整数交换的操作。 裁判测试程序样例&#xff1a; #include <…...

华为OD机试真题Python实现【最多等和不相交连续子序列】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(Python)真题目录汇总华为OD机试(JAVA)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出说明示例二输入输出说明...

二叉搜索树

1.二叉搜索树 1.1.二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一颗空树&#xff0c;或者是具有一下性质的二叉树。 若它的左子树不为空&#xff0c;则左子树上的所有节点的值都小于根节点的值。若它的右子树不为空&#xff0c;则右子树上的所有节点的值都…...

数据结构(三):集合、字典、哈希表

数据结构&#xff08;三&#xff09;一、集合&#xff08;Set&#xff09;1.封装一个集合类2.集合常见的操作&#xff08;1&#xff09;并集&#xff08;2&#xff09;交集&#xff08;3&#xff09;差集&#xff08;4&#xff09;子集二、字典&#xff08;Map&#xff09;三、…...

Linux内核驱动开发(一)

Linux内核初探 linux操作系统历史 开发模式 git 分布式管理git clone 获取git push 提交git pull 更新 邮件组 mailing list patch 内核代码组成 Makfile arch 体系系统架构相关 block 块设备 crypto 加密算法 drivers 驱动&#xff08;85%&#xff09; atm 通信bluet…...

TQVaultAE终极指南:告别泰坦之旅仓库混乱,打造完美装备管理系统

TQVaultAE终极指南&#xff1a;告别泰坦之旅仓库混乱&#xff0c;打造完美装备管理系统 【免费下载链接】TQVaultAE Extra bank space for Titan Quest Anniversary Edition 项目地址: https://gitcode.com/gh_mirrors/tq/TQVaultAE 还在为《泰坦之旅》的仓库空间不足而…...

Python 爬虫进阶技巧:离线网页本地数据提取技巧

前言 在 Python 爬虫实际业务落地过程中&#xff0c;在线实时爬取常会遭遇网络波动、接口限流、IP 封禁、站点临时维护、访问超时等不可控问题&#xff0c;直接导致数据采集中断、重复请求浪费带宽资源、高频访问触发反爬风控。而离线网页本地化存储与本地数据提取&#xff0c…...

Hide Mock Location:三步解决Android模拟位置检测问题

Hide Mock Location&#xff1a;三步解决Android模拟位置检测问题 【免费下载链接】HideMockLocation Xposed module to hide the mock location setting. 项目地址: https://gitcode.com/gh_mirrors/hi/HideMockLocation Hide Mock Location是一款专为Android设备设计的…...

基于MCP协议构建LLM邮件助手:lettr-mcp项目实战与安全配置指南

1. 项目概述&#xff1a;一个为LLM开启“读信”能力的MCP服务器 如果你正在开发一个基于大语言模型&#xff08;LLM&#xff09;的智能体&#xff0c;并且希望它能帮你处理电子邮件&#xff0c;比如自动分类、总结、回复&#xff0c;或者从收件箱里提取特定信息&#xff0c;那…...

Boost电路空载时为什么会“炸管”?一个仿真实验带你看清电压失控全过程

Boost电路空载炸管现象全解析&#xff1a;从仿真实验到工程防护 Boost电路作为开关电源设计的核心拓扑之一&#xff0c;其空载状态下的电压失控问题一直是工程师们关注的焦点。当负载突然断开时&#xff0c;看似稳定的电路可能瞬间变成"电压炸弹"&#xff0c;轻则导致…...

3个创意方案:用Sunshine构建你的跨设备游戏串流中心

3个创意方案&#xff1a;用Sunshine构建你的跨设备游戏串流中心 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器&#xff0c;专为Moonli…...

AUTOSAR BSW模块速查手册:从ADC到XCP,一文搞懂所有缩写、文档和层级

AUTOSAR BSW模块速查手册&#xff1a;从ADC到XCP的工程实践指南 第一次打开AUTOSAR标准文档时&#xff0c;扑面而来的模块缩写就像加密电报——CanIf、Dem、NvM这些字母组合让人瞬间头大。更崩溃的是&#xff0c;当你试图在Stack Overflow提问时&#xff0c;连问题都描述不清&a…...

循证研发服务商怎么选?重点看这五项能力

营养健康赛道的竞争&#xff0c;正在从概念表达走向证据表达。新品越来越难只靠营销概念赢得市场&#xff0c;消费者会关注原料是否可靠、配方是否有依据、吸收是否经过验证&#xff1b;渠道方评估新品时&#xff0c;也会重视产品设计逻辑和证据可信度。对品牌方来说&#xff0…...

多智能体团队协作工程化模板:从角色设计到交付物驱动的工作流

1. 项目概述&#xff1a;一个为多智能体团队协作而生的工程化模板如果你正在尝试构建一个由多个AI智能体组成的协作系统&#xff0c;并且已经厌倦了那些只展示“模型调用”而忽略了“团队管理”复杂性的演示项目&#xff0c;那么haoyiyin/openclaw-team-template这个仓库可能会…...

百度网盘解析工具:3步实现高速下载,告别限速烦恼

百度网盘解析工具&#xff1a;3步实现高速下载&#xff0c;告别限速烦恼 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾经为百度网盘的下载速度而烦恼&#xff1f;是…...