计算机网络之---TCP连接管理
TCP连接管理
TCP(传输控制协议)是面向连接的协议,在数据传输之前需要建立连接,在数据传输完成后需要断开连接。TCP连接的建立和断开都遵循特定的规则,分别称为三次握手(Three-Way Handshake)和四次挥手(Four-Way Handshake)。它们确保双方能够可靠地建立和关闭连接。
三次握手(TCP连接的建立)
三次握手是为了在客户端和服务器之间建立可靠的TCP连接。这个过程确保双方都能发送和接收数据,并且双方的缓冲区准备好接收数据。
三次握手的过程:
-
第一次握手:客户端发送SYN包(同步标志位),告诉服务器客户端请求建立连接。
- 客户端 -> 服务器:SYN = 1, seq = X(X为随机生成的序列号)
这一步表示客户端请求连接,并初始化一个序列号X。
-
第二次握手:服务器收到SYN包后,向客户端发送SYN-ACK包,表示愿意建立连接,并且确认收到客户端的请求。
- 服务器 -> 客户端:SYN = 1, ACK = 1, seq = Y(服务器随机生成的序列号), ack = X + 1(确认号,表示服务器已收到客户端的SYN包)
服务器会发送一个SYN包来表示自己准备好了,同时确认客户端的SYN包。
-
第三次握手:客户端收到服务器的SYN-ACK包后,向服务器发送ACK包,确认收到服务器的响应,并且连接建立。
- 客户端 -> 服务器:ACK = 1, seq = X + 1, ack = Y + 1
客户端向服务器确认自己的序列号,并最终完成连接建立。
至此,客户端和服务器之间的连接建立完成,可以开始数据传输。
四次挥手(TCP连接的断开)
四次挥手是为了安全地断开TCP连接,确保双方的通信都已结束。这个过程确保数据能够完全传输,并且双方都能正常关闭连接。
四次挥手的过程:
-
第一次挥手:客户端发送FIN包,表示它已经完成数据的发送请求,准备关闭连接。
- 客户端 -> 服务器:FIN = 1, seq = A
客户端告诉服务器自己已经没有数据发送了,要求关闭连接。
-
第二次挥手:服务器收到FIN包后,发送ACK包,确认客户端的关闭请求,并且自己仍然可以继续接收数据。
- 服务器 -> 客户端:ACK = 1, seq = B, ack = A + 1
服务器确认客户端的连接关闭请求,并且告知客户端自己准备好关闭连接。
-
第三次挥手:服务器发送FIN包,表示它已经完成数据的发送,也准备关闭连接。
- 服务器 -> 客户端:FIN = 1, seq = C
服务器告诉客户端自己已经没有数据发送了,准备关闭连接。
-
第四次挥手:客户端收到服务器的FIN包后,发送ACK包,确认收到服务器的关闭请求,完成连接的断开。
- 客户端 -> 服务器:ACK = 1, seq = A + 1, ack = C + 1
客户端确认服务器的关闭请求,最后断开连接。
至此,双方的连接关闭完成。
三次握手和四次挥手的区别
- 三次握手用于连接的建立,四次挥手用于连接的断开。
- 三次握手是为了确保客户端和服务器都准备好开始数据传输,而四次挥手是为了确保数据传输完毕并且双方都关闭连接。
- 在三次握手过程中,连接的状态是全双工的,双方可以发送数据。而在四次挥手过程中,虽然双方在不同的时间关闭连接,但都确保了数据可以可靠地传输完毕。
四次挥手什么时候断开
- 如果使用 HTTP/1.1 或 HTTP/2,且启用了长连接(默认情况下启用),则 TCP 连接 只会建立一次。它只会在第一次请求时建立一次,后续请求会复用该连接,直到超时或主动关闭连接。
- 如果使用 HTTP/1.0 且没有启用长连接,则每次请求会建立一个新的 TCP 连接。
相关文章:
计算机网络之---TCP连接管理
TCP连接管理 TCP(传输控制协议)是面向连接的协议,在数据传输之前需要建立连接,在数据传输完成后需要断开连接。TCP连接的建立和断开都遵循特定的规则,分别称为三次握手(Three-Way Handshake)和四…...
《CPython Internals》阅读笔记:p118-p150
《CPython Internals》学习第 8 天,p118-p150 总结,总计 33 页。 一、技术总结 补充一些本人整理的关于 Context-Free Grammar(CFG) 的知识。 1.symbol(符号) A mathematical symbol is a figure or a combination of figures that is used to repre…...
C/C++ 数据结构与算法【排序】 常见7大排序详细解析【日常学习,考研必备】带图+详细代码
常见7种排序算法 冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(…...
三只松鼠携手爱零食,社区零售新高峰拔地而起
合纵连横,这是当前零售行业发展的一个主旋律。从商超之王胖东来的全国调改,到社区零售正在进行的渠道变革,竞争的激烈和商业模式的升级令人目不暇接。 量贩零食赛道在过去一年就是如此,有杀伐,有并购,刀光…...
Java聊天小程序
拟设计一个基于 Java 技术的局域网在线聊天系统,实现客户端与服务器之间的实时通信。系统分为客户端和服务器端两类,客户端用于发送和接收消息,服务器端负责接收客户端请求并处理消息。客户端通过图形界面提供用户友好的操作界面,服务器端监听多个客户端的连接并管理消息通…...
Kibana操作ES基础
废话少说,开干!!!!!!!!!!!!截图更清晰,复制在下面 #库操作#创建索引【相当于数据库的库】 PUT /first_index#获…...
MYSQL8创建新用户报错:You have an error in your SQL syntax;check...
本文所用——MYSQL版本:8.0.25 baidu都是直接创建新用户并赋权,如下: GRANT ALL PRIVILEGES ON *.* TO 用户名% IDENTIFIED BY 密码 WITH GRANT OPTION;但是我用的MYSQL版本它就不行,会报错! 经查阅资料发现——MY…...
动漫周边商城系统|Java|SSM|VUE| 前后端分离
【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库…...
Vue 3 Diff 算法受 `v-for` 循环中的 `key` 属性影响
Vue 3 的 Diff 算法会受到 v-for 循环中的 key 属性的影响,key 的选择直接关系到 Diff 算法的效率和最终的 DOM 更新结果。 key 的作用 在 Vue 中,key 是一种标识,它用于唯一标记每个虚拟 DOM 节点。Diff 算法会根据 key 判断新旧节点是否是…...
江科大STM32入门——看门狗笔记整理
wx:嵌入式工程师成长日记 (一)简介 WDG(Watchdog)看门狗看门狗可以监控程序的运行状态,当程序因为设计漏洞(无法预料)、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及…...
【计算机网络】lab7 TCP协议
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 实验目的…...
计算机视觉:解锁未来智能世界的钥匙
计算机视觉:解锁未来智能世界的钥匙 在信息技术飞速发展的今天,计算机视觉作为人工智能领域的一个重要分支,正以前所未有的速度改变着我们的生活与工作方式。它使机器能够“看”并理解图像和视频中的信息,为自动驾驶、医疗影像分…...
Java的Stream流和Option类
1. Stream 流 背景 Stream是Java 8引入的一个用于处理集合(或其他数据源)中的元素的API。它提供了一种声明式的方式来处理数据,并可以链式调用。Stream支持惰性求值,也支持并行流处理。 1.1 创建 Stream 创建一个Stream可以通…...
深入理解ASP.NET Core 管道的工作原理
在 .NET Core 中,管道(Pipeline)是处理 HTTP 请求和响应的中间件组件的有序集合。每个中间件组件都可以对请求进行处理,并将其传递给下一个中间件组件,直到请求到达最终的处理程序。管道的概念类似于流水线,…...
多模态论文笔记——CLIP
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍这几年AIGC火爆的隐藏功臣,多模态模型:CLIP。 文章目录 CLIP(Contrastive Language-Image Pre-training)…...
brpc之baidu_protocol
简介 是brpc默认使用的协议 初始化 Protocol baidu_protocol { ParseRpcMessage,SerializeRequestDefault, PackRpcRequest,ProcessRpcRequest, ProcessRpcResponse,VerifyRpcRequest, NULL, NULL,CONNECTION_TYPE_ALL, "baidu_std" };协议定义 定义在baidu_rpc…...
LeetCode:39. 组合总和
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 cand…...
SOLID原则学习,开闭原则(Open Closed Principle, OCP)
文章目录 1. 定义2. 开闭原则的详细解释3. 实现开闭原则的方法4. 总结 1. 定义 开闭原则(Open-Closed Principle,OCP)是面向对象设计中的五大原则(SOLID)之一,由Bertrand Meyer提出。开闭原则的核心思想是…...
Unreal Engine 5 C++ Advanced Action RPG 七章笔记
第七章 Ranged Enemy 2-Ranged Enemy Starting Weapon 制作新敌人的流程准备 新敌人的武器起始的状态数据自己的战斗能力投射能力自己的行为树 创建角色,添加武器,添加数据,就是继承之前的基类敌人的 运行结果 3-Glacer Starting Stats 看看就行,就是复制曲线表格更改数…...
自动连接校园网wifi脚本实践(自动网页认证)
目录 起因执行步骤分析校园网登录逻辑如何判断当前是否处于未登录状态? 书写代码打包设置开机自动启动 起因 我们一般通过远程控制的方式访问实验室电脑,但是最近实验室老是断电,但重启后也不会自动连接校园网账户认证,远程工具&…...
避开这个坑!WPS2019添加VBA按钮的正确姿势(含宏录制技巧)
WPS 2019中VBA按钮添加全攻略:从宏录制到界面定制的完整流程 如果你是从Excel转向WPS的办公自动化用户,可能会惊讶地发现:熟悉的VBA按钮添加方式在WPS中竟然完全行不通。这不是你的操作问题,而是两个软件在设计理念上的本质差异。…...
C++ 智能指针在 STL 容器中的应用
C智能指针在STL容器中的应用 在现代C开发中,智能指针和STL容器是两大核心工具。智能指针通过自动管理内存,显著降低了资源泄漏的风险;而STL容器则提供了高效的数据存储和操作方式。将两者结合使用,既能确保内存安全,又…...
干货 | SpringBoot 全局异常拦截到底怎么用(附完整可复制代码)
一、前言 开发接口最烦啥?代码一报错,前端直接抛一堆 500 红码、后台堆栈日志满天飞、用户看页面一脸懵。要是每个接口都手动 try-catch,代码又臭又长、冗余到想吐。 Spring 全局异常拦截就是用来根治这个问题的:一次配置、全局…...
7分钟掌握WorkshopDL:打破平台壁垒的Steam创意工坊模组下载终极方案
7分钟掌握WorkshopDL:打破平台壁垒的Steam创意工坊模组下载终极方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在Epic Games Store或GOG平台购买了游戏&…...
Massa区块链终极资源指南:开发者、节点运营者与用户的完整工具清单
Massa区块链终极资源指南:开发者、节点运营者与用户的完整工具清单 【免费下载链接】massa The Decentralized and Scaled Blockchain 项目地址: https://gitcode.com/gh_mirrors/ma/massa Massa是一个去中心化且可扩展的区块链平台,为开发者、节…...
用JavaScript高效生成专业PPT:PptxGenJS深度解析与5种实战应用
用JavaScript高效生成专业PPT:PptxGenJS深度解析与5种实战应用 【免费下载链接】PptxGenJS Build PowerPoint presentations with JavaScript. Works with Node, React, web browsers, and more. 项目地址: https://gitcode.com/gh_mirrors/pp/PptxGenJS 在数…...
PE结构 --->8.PE对齐的概念 文件对齐VS磁盘对齐
目录 PE结构中对齐概念详解 原理 磁盘文件对齐(File Alignment, 0x200): 内存对齐(Section Alignment, 0x1000): 关系与CPU页管理: 详细步骤:PE文件加载到内存的对齐过程 读取…...
3步解锁音乐自由:NCMDump让NCM格式转换零门槛
3步解锁音乐自由:NCMDump让NCM格式转换零门槛 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 问题破局篇:被囚禁的音乐,你遇到过吗? 你是否经历过这些尴尬场景:下载了喜欢…...
HunterPie终极指南:免费提升怪物猎人世界游戏体验的完整教程
HunterPie终极指南:免费提升怪物猎人世界游戏体验的完整教程 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh_mirrors/hu/Hunter…...
基于QGIS分区统计与栅格重分类的GlobeLand30地表覆盖面积精准测算
1. 数据准备与预处理 做地表覆盖分析的第一步就是获取高质量的数据源。GlobeLand30作为国产30米分辨率全球地表覆盖数据,在精度和易用性上都有不错的表现。我去年参与的一个省级生态评估项目就用到了这套数据,实测下来分类效果相当可靠。 下载数据时有个…...
