TCP三次握手、四次挥手(简易版)

news2025/3/15 15:29:19

TCP是面向连接的:在真正通讯之前,必须先建立一条通讯线路,必须先完成连接。
TCP完成连接的过程:(保证通讯线路畅通)

建立连接:
   三次握手基本过程
   ①客户端首先向服务器发送一个建立连接的请求,SYN被设置为1,为请求建立连接报文段。
   ②服务器在接收到建立连接的请求后会给客户端回馈消息,传回ACK=1,告诉客户端服务器收到了SYN,防止客户端重传SYN。服务器再向客户端回馈SYN,回馈可以连接。
   ③ 客户端向服务器发送ACK,对SYN的确认。

在这里插入图片描述
   三次握手状态变化
   ①客户端发起连接,将状态设置为SYN_SENT不同状态代表不同阶段
   ②服务器接收到SYN,将ACK,SYN发送出去后处于SYN_RCVD状态,即接收到客户端发送的SYN
   ③当客户端将ACK发送出去并且接收到了ACK,SYN处于已连接(ESTABLISHED)状态
   ④ 当服务收到ACK后,也处于已连接(ESTABLISHED)状态

在这里插入图片描述
问题:为什么是三次握手,不能是两次握手?
1.如果没有最后的一个ACK,则服务器会不断地超时重传ACK/SYN(第二个报文段)
2.若为2次会浪费服务器的资源(SYN溢出攻击或网络环境影响 客户端的SYN会被重传多次)

断开连接:
   四次挥手基本过程
   不分服务器与客户端,因为服务器与客户端都有可能断开,所以我们将其分为主动断开方与被动断开方。
   ①主动断开方向被动断开方发送一个请求断开连接报文FIN。(关闭主动方到被动方的传输通道)
   ②被动方收到FIN后,向主动断开方只回馈一个ACK消息。
   ③ 当过了一段时间以后,被动断开方向主动断开方再发送一个请求断开连接FIN报文。(关闭被动方到主动发的传输通道)
   ④主动断开方接收到FIN向被动断开方再回馈一个ACK,连接断开。

   问题:为什么要进行两次FIN?
   因为为全双工信道,任意时刻双方互相通讯,至少有2条通讯信道,一个FIN只能关一条,所以得有两个FIN。
在这里插入图片描述
   四次挥手状态变化
   ①主动方将FIN发送出去后处于FIN_WAIT_1状态
   ②当被动方接收到FIN并将ACK发出去后处于CLOSE_WAIT(等待关闭)状态
   ③当主动断开方接收到ACK后处于FIN_WAIT_2状态
   ④当被动方将最后一个FIN发出去后处于LAST_ACK(等待最后一个ACK)状态
   ⑤当主动方在收到了FIN并且将ACK发送出去后,处于TIME_WAIT状态
   ⑥当被动方接收到ACK后处于CLOSED状态
   ⑦主动断开方必须再等待一段时间到达CLOSE状态

   TIME_WAIT的意义(存在时间大约是2MSL:MSL为报文段在网络中最大生存时间):
         1.保证迟来的数据能被识别并丢弃
         2.保证可靠的终止TCP连接,防止对后续运行的程序造成影响(TIME_WAIT存在时间内,主动断开方无法用相
         同的IP地址端口号再启动一个网络通讯)

   TIME_WAIT与CLOSE_WAIT的区别:
         CLOSE_WAIT:处于被动断开方,仅仅属于断开过程中的一种状态
         TIME_WAIT:处于主动断开方,是一种特殊的状态

在这里插入图片描述
问题:有没有可能是三次挥手?有可能!
被动断开方的ACK与FIN在一起发向主动断开方,即它们同时断开连接,中间等待时间为0,即为三次挥手。

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

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

相关文章

中科星图——LANDSAT_8/02/T1/TOA的Landsat8_C2_TOA类数据集

简介 数据名称: Landsat8_C2_TOA 数据来源: USGS 时空范围: 2020年1月-2023年3月 空间范围: 全国 数据简介: Landsat8_C2_TOA数据集是将数据每个波段的辐射亮度值转换为大气层顶表观反射率TOA,是…

小苯的数组切分 ---- 牛客月赛

题目描述 qionghuaqionghuaqionghua 给了小苯一个长度为 n 的数组 a&#xff0c;希望小苯将数组 aaa 分为恰好非空的三段。即&#xff1a;[1,l−1],[l,r],[r1,n]这三段&#xff0c;其中 1< l≤r<n。接着&#xff1a; ∙ 第一段的所有数字做 ⊕&#xff08;按位异或&…

Acwing二分和前缀和(二)

机器人跳跃问题 原题链接&#xff1a;https://www.acwing.com/activity/content/problem/content/1570/ 二分查找更新条件只有两种&#xff1a; Rmid;else Lmid1&#xff1a;mid(LR)/2Lmid;else R mid-1&#xff1a;mid(LR1)/2 这两种更新条件的结果是一样的。 #include<…

STL:优先级队列的实现

STL中优先级队列本质上就是堆。在上一篇博客中讲到过&#xff1a;堆是一种完全二叉树&#xff0c;逻辑结构上看起来像树&#xff0c;但在物理结构中是存储在线性表中。与普通线性表不同的是&#xff0c;堆中数据大小是规律排列的&#xff1a;小堆中每个节点都大于它的父节点&am…

FPGA中的模块调用与例化

目录 一、模块调用与实例化 1.1 模块调用 1.2 模块实例化 1.3 Verilog例化语句及其用法 1.3.1 例化语句的基本格式 1.3.2 实例化三种不同的连接方法 二、模块调用实例-全加器与半加器 2.1 半加器模块 2.2 全加器模块 三、参数定义关键词与整数型寄存器 3.1 参数定义关…

《区块链公链数据分析简易速速上手小册》第10章:未来趋势和挑战(2024 最新版)

文章目录 10.1 区块链技术的发展方向10.1.1 基础知识10.1.2 重点案例&#xff1a;构建一个简单的智能合约步骤1: 创建智能合约步骤2: 部署智能合约步骤3: 使用Python与智能合约交互结语 10.1.3 拓展案例 1&#xff1a;探索 DeFi 应用准备工作实现步骤步骤1: 获取Compound市场数…

代码随想录算法训练营第二十天|530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

tips&#xff1a; 二叉搜索树一定是中序遍历&#xff0c;因为只有中序遍历二叉搜索树它的元素才是有序的。 回溯法则使用后序遍历方式&#xff0c;左右中&#xff0c;主要处理逻辑在中。采用后序是因为中的处理逻辑需要左分支和右分支递归带回来的处理结果&#xff0c;从而通过…

MySQL 基础知识(九)之视图

目录 1 视图的介绍 2 视图算法 3 创建视图 4 查看视图结构 5 修改视图 6 删除视图 7 参考文档 1 视图的介绍 视图是一张并不存储数据的虚拟表&#xff0c;其本质是根据 SQL 语句动态查询数据库中的数据。数据库中只存放了视图的定义&#xff0c;通过 SQL 语句使用视图时…

OpenHarmony系统解决方案 - 配置屏幕方向导致开机动画和Launcher显示异常

问题环境 系统版本&#xff1a;OpenHarmony-3.2-Release 问题现象 配置设备默认方向&#xff0c;例如修改为横屏显示&#xff0c;修改文件display_manager_config.xml的buildInDefaultOrientation参数值为2(Orientation::HORIZONTAL)。 源码中文件位于foundation/window/win…

[AIGC ~ coze] Kafka 消费者——从源码角度深入理解

Kafka 消费者——从源码角度深入理解 一、引言 Kafka 是一个分布式的流处理平台&#xff0c;广泛应用于大规模数据处理和实时数据管道。在 Kafka 生态系统中&#xff0c;消费者扮演着至关重要的角色&#xff0c;它们从 Kafka 主题中读取数据并进行处理。本文将深入探讨 Kafka …

Linux工具篇Vim

分享Linux的一些基础的工具&#xff0c;今天分享的就是Linux下的vim&#xff0c;vim其实是一个编辑器。我们可以理解为Windows下的一个记事本。 这个是vim的键盘图。 Linux编辑器-vim使用 vi/vim 的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是 vim 是…

【机器学习笔记】11 支持向量机

支 持 向 量 机 &#xff08; Support Vector Machine,SVM &#xff09; 支 持 向 量 机 是 一 类 按 监 督 学 习 &#xff08; supervisedlearning&#xff09;方式对数据进行二元分类的广义线性分类器&#xff08;generalized linear classifier&#xff09;&#xff0c;其…

Codeforces Round 919 (Div. 2)题解(A-E)

https://codeforces.com/contest/1920 A Satisfying Constraints 链接&#xff1a;A - Satisfying Constraints 代码 #include <bits/stdc.h> using namespace std; int main() {int T;cin >> T;while(T--){int n;scanf("%d", &n);vector<int&…

RK3399平台开发系列讲解(USB篇)USB 枚举和断开过程

🚀返回专栏总目录 文章目录 一、连接与检测二、USB设备枚举三、断开过程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢介绍 USB 枚举/断开过程。 一、连接与检测 二、USB设备枚举 USB设备枚举一

A股上市公司绿色化转型指数(2007-2022)

数据来源&#xff1a;上市公司年报、上市公司网站信息、上市公司社会责任报告 时间跨度&#xff1a;2007-2022年 数据范围&#xff1a;中国A股上市公司 数据指标 参考Loughran & Mcdonald&#xff08;2011&#xff09;的研究&#xff0c;利用年报中披露的文本信息测量企业…

【机器学习】逻辑回归(二元分类)

文章目录 感知器的种类sigmoid&#xff08;logistics&#xff09;函数代价/损失函数&#xff08;cost function&#xff09;——对数损失函数&#xff08;log loss function&#xff09;梯度下降算法&#xff08;gradient descent algorithm&#xff09;正则化逻辑回归&#xf…

web 发展阶段 -- 详解

1. web 发展阶段 当前处于 移动 web 应用阶段。也是个风口&#xff08;当然是针对有能力创业的人来说的&#xff09;&#xff0c;如 抖音、快手就是这个时代的产物。 2. web 发展阶段引出前后端分离的过程 2.1 传统开发方式 2.2 前后端分离模式 衍生自移动 web 应用阶段。 3.…

第9讲重写登录成功和登录失败处理器

重写登录成功和登录失败处理器 common下新建security包&#xff0c;再新建两个类&#xff0c;LoginSuccessHandler和LoginFailureHandler Component public class LoginSuccessHandler implements AuthenticationSuccessHandler {Overridepublic void onAuthenticationSuccess…

论文阅读:四足机器人对抗运动先验学习稳健和敏捷的行走

论文&#xff1a;Learning Robust and Agile Legged Locomotion Using Adversarial Motion Priors 进一步学习&#xff1a;AMP&#xff0c;baseline方法&#xff0c;TO 摘要&#xff1a; 介绍了一种新颖的系统&#xff0c;通过使用对抗性运动先验 (AMP) 使四足机器人在复杂地…

实战 | 使用CNN和OpenCV实现数字识别项目(步骤 + 源码)

导 读 本文主要介绍使用CNN和OpenCV实现数字识别项目,含详细步骤和源码。 前 言 在当今世界,深度学习和图像处理技术正在各个应用领域得到利用。在这篇博文中,我们将使用卷积神经网络 (CNN) 和 OpenCV 库完成数字识别项目。我们将逐步掌握该项目如何执行。 项目准…