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

三次握手和四次挥手

文章目录

  • TCP三次握手
      • 为什么要三次握手
      • 三次握手可以携带数据吗?
      • 三次握手失败,服务端会如何处理?
      • ISN代表什么,意义,何要动态随机
      • 什么是半连接队列
      • 第2次握手传回了ACK,为什么还要传回SYN?
  • 为什么要四次挥手


TCP三次握手

在这里插入图片描述

  • 客户端-发送带有SYN标志的数据包,中SYN=1,还有seq=一个随机数x 一次握手 服务端

  • 服务端-发送带有SYN/ACK标志的数据包,这时候回复的SYN和ACK都等于1,seq=另一 个随机数y,回复的
    ack标志是之前的随机数x+1,二次握手客户端

  • 客户端-发送带有带有ACK标志的数据包,ACK=1, seq=x+1, ack=y+1, 三次握手-服务端

    大写的ACK表示报文的类型是确认报文,小写的ack是报文里面的确认号,这个确认号是上一次握手对方的seq值加1得到

为什么要三次握手

三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。

第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常

第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常

第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常

所以三次握手就能确认双发收发功能都正常,缺一不可。

三次握手可以携带数据吗?

答:第一次、第二次握手不可以携带数据,而第三次握手是可以携带数据的。假设第一次可以携带数据,如果有人恶意攻击服务器,每次都在第一次握手中的SYN报文放入大量数据,重复发送大量SYN报文,此时服务器会花费大量内存空间来缓冲这些报文,服务器就更容易被攻击了

三次握手失败,服务端会如何处理?

答:握手失败的原因有两种,第一种是服务端没有收到SYN,则什么都不做;第二种是服务端回复了SYN+ACK后,长时间没有收到ACK响应,则超时后就会发送RST重置连接报文,释放资源

ISN代表什么,意义,何要动态随机

答:ISN全称是Initial Sequence Number,是TCP发送方的字节数据编号的原点,告诉对方我要开始发送数据的初始化序列号。ISN如果是固定的,攻击者很容易猜出后序的确认号,为了安全起见,避免被第三方猜到从而发送伪造的RST报文,因此ISN是动态生成的

什么是半连接队列

答:服务器第一次收到客户端的SYN之后,就会处于SYN_RECD状态,此时双方还没有完全建立连接。服务器会把这种状态下的请求连接放在一个队列里,我们把这种队列称之为半连接队列。当然还有一个全连接队列,就是已经完成三次握手,建立起来连接的就会放在全连接队列中,如果队列满了就有可能出现丢包现象

第2次握手传回了ACK,为什么还要传回SYN?

接收端传回发送端所发送的ACK是为了告诉客户端,我接收到的信息确实就是你所发送的信号了,这表明从客户端到服务端的通信是正常的。而回传SYN则是为了建立并确认从服务端到客户端的通信。”

SYN 同步序列编号(Synchronize Sequence Numbers) 是 TCP/IP 建立连接时使用的握手信号。在客户机和服务器之间建立正常的 TCP 网络连接时,客户机首先发出一个 SYN 消息,服务器使用 SYN-ACK 应答表示接收到了这个消息,最后客户机再以 ACK(Acknowledgement)消息响应。这样在客户机和服务器之间才能建立起可靠的 TCP 连接,数据才可以在客户机和服务器之间传递。

为什么要四次挥手

在这里插入图片描述

断开一个 TCP 连接则需要“四次挥手”:

  • 客户端发起FIN断开连接的报文,携带随机生成的seq值u,发送给服务端,并且自己处于FIN-WAIT状态,
    这是第一次挥手;
  • 服务端接收到FIN报文后,回复-个确认报文,其中ACK=1,随机生成一个seq,以及ack=u+1,这是第
    二次挥手;
  • 当服务端数据发送完了过后,再发送一个FIN报文给客户端,通知客户端,服务端准备关闭连接了,此报文
    FIN=1, ACK=1, ack=u+1, seq=w,这是第三次挥手;
  • 当客户端收到FIN确认报文时再发送一个FIN 的确认报文,其中ACK=1, seq=u+1, ack=w+1,并进入
    TIME-WAIT.状态,当等待2MSL后关闭连接,这是第四次挥手。

任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。

相关文章:

三次握手和四次挥手

文章目录TCP三次握手为什么要三次握手三次握手可以携带数据吗?三次握手失败,服务端会如何处理?ISN代表什么,意义,何要动态随机什么是半连接队列第2次握手传回了ACK,为什么还要传回SYN?为什么要四次挥手TCP…...

Jmeter常用断言之响应断言详解

响应断言是最常用的一种断言方法,主要是对响应结果中的文本内容进行断言,比如响应结果是否包含指定的值,或者是否等于指定的值。响应断言可以适用各种返回类型的响应结果,如:Test、html、application/json、applicatio…...

【Python学习笔记】36.Python3 MySQL - mysql-connector 驱动(1)

前言 MySQL 是最流行的关系型数据库管理系统,本章节为大家介绍使用 mysql-connector 来连接使用 MySQL, mysql-connector 是 MySQL 官方提供的驱动器。 Python3 MySQL - mysql-connector 驱动 我们可以使用 pip 命令来安装 mysql-connector&#xff1…...

计算机SCI论文课题设计需要注意什么? - 易智编译EaseEditing

课题设计就要本着严谨性和可行性来进行。实验设计的类型要选择准确,统计学的方法要运用合理,研究对象和观察指标的选择也要符合研究目的的要求,技术路线要清晰明了。 关于课题的设计的可行性也要综合考虑,比如前期的相关工作基础…...

Quartz入门教程

本文参考文章编写 Quartz 官网 Quartz 是 OpenSymphony 开源组织在 Job Scheduling 领域又一个开源项目,是完全由 Java 开发的一个开源任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时&#xff…...

TypeScript 学习之 function

函数可以实现抽象层,模拟类,信息隐藏和模块。 函数有:有名字的函数、匿名函数 在 JavaScript 中的函数 // 有名字的函数 function add(x, y) {return x y; }// 匿名函数 let myAdd function (x, y) {return x y; };函数类型 typescript 可…...

【云计算自学路线】

云计算包含的技术内容和涉及的方向比较多,一定要进行系统化的学习才能更好的掌握这门技术。 云计算作为互联网新技术领域,现阶段也是出于高速发展期,想学习加入云计算行业的小伙伴可以抓紧机会了,跟着小课一起来了解云计算以及它…...

code01 v2黑屏、花屏、死机、断电重启、休眠死机的进来

症状解决 长话简说,症状如下: 使用浏览器、播放视频等,遇到突然死机或花屏死机的情况 关闭硬件加速,如:浏览器中设置关闭硬件加速,出现这种症状的软件都需要设置 开机电流音、播放与暂停时喇叭吱吱想、打…...

分享107个HTML电子商务模板,总有一款适合您

分享107个HTML电子商务模板,总有一款适合您 107个HTML电子商务模板下载链接:https://pan.baidu.com/s/1VW67Wjso1BRpH7O3IlbZwg?pwd0d4s 提取码:0d4s Python采集代码下载链接:采集代码.zip - 蓝奏云 Aplustemplates 购物模板…...

Barra模型因子的构建及应用系列三之Momentum因子

一、摘要 在之前的Barra模型系列文章中,我们已经初步讲解、构建了Size因子和Beta因子,并分别创建了对应的单因子策略。通过回测发现,其中Size因子的小市值效应具有很强的收益能力。而本篇文章将在该系列下进一步构建Momentum因子。 二、模型…...

8.2.1.3 索引合并优化

索引合并访问方法检索具有多个范围扫描的行,并将其结果合并为一个。此访问方法仅合并来自单个表的索引扫描,而不是跨多个表的扫描。合并可以生成其基础扫描的合并、交叉或交叉的合并。 可以使用索引合并的查询示例: SELECT * FROM tbl_name…...

水雨情在线小能手-雨量水位报警站

雨量水位报警站由水位探测器、雨量传感器、报警灯、扩音器、太阳能板和采集传输控制器组成。实时采集水位等级,三个水位探测器对应3个水位等级,当现场水面浸没相应探测器时,本机会实时发出语音报警,同时可发送相应的预警/报警等级…...

【蓝桥杯集训4】双指针专题(6 / 6)

目录 3768. 字符串删减 - 滑动窗口ac 799. 最长连续不重复子序列 - 滑动窗口 800. 数组元素的目标和 - 二分ac 2816. 判断子序列 - 双指针 1238. 日志统计 - 滑动窗口 1240. 完全二叉树的权值 - 双指针 1、前缀和 - 通过了 5/12个数据 2、双指针 3768. 字符串删减 -…...

文件流,gzip解压,压缩

目录 文件画布 写入 (空文件Foutnew File(Parent,entry.getName());)FileOutputStream outnew FileOutputStream(Fout);BufferedOutputStream Boutnew BufferedOutputStream(out);其他流量基于基础包装文件--文件流---字节流 顺序pbf一般是形成后再压缩目…...

在线开会,来开开圆桌会议吧~

圆桌会议应用场景:适合内部培训、部门会议亦或是头脑风暴等较为轻松的场景,有兴趣的朋友可以联系我来测试哦~~ 上图: 图:圆桌会议应用截图 在圆桌布局之下,企业可以将每一位参会者和座位绑定,1:1模拟线下圆…...

使用营销自动化的 7 大主要优势

对于大多数企业家来说,自动化已成为在数字时代简化业务的必要条件。那么,您可以采取哪些步骤来实施营销自动化呢? 1. 社交媒体整合 拥有吸引人的社交媒体形象是成功的先决条件。您不可能完成所有社交媒体营销任务,使用自动化软件&…...

【图像分类】基于PyTorch搭建GRU实现MNIST手写数字体识别(单/双向GRU,附完整代码和数据集)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 在https://blog.csdn.net/AugustMe/article/details/128969138文章中,我们使用了基于PyTorch搭建LSTM实现MNIST手…...

day14_oop_抽象_接口

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、抽象 三、接口 零、 复习昨日 多态的好处: 扩展性强.加入新的功能,不需要改动代码降低代码耦合度(解耦合或者松耦合) 一、抽象类 1.1 抽象类…...

模式识别 | MATLAB实现DNN深度神经网络模式分类识别

分类预测 | MATLAB实现DNN全连接神经网络多特征分类预测 目录 分类预测 | MATLAB实现DNN全连接神经网络多特征分类预测基本介绍任务描述程序设计参考资料基本介绍 DNN的结构不固定,一般神经网络包括输入层、隐藏层和输出层,一个DNN结构只有一个输入层,一个输出层,输入层和输…...

【C++】类和对象三大特性--继承

文章目录1.继承的概念及定义1.1继承的概念1.2 继承定义1.2.1定义格式1.2.2继承关系和访问限定符1.2.3继承基类成员访问方式的变化2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数5.继承与友元6. 继承与静态成员7.复杂的菱形继承及菱形虚拟继承虚拟继承解决数…...

Python实战:温度转换小工具开发(附GESP考试真题解析)

Python实战:温度转换小工具开发与GESP考试技巧精讲 温度转换是编程入门阶段的经典案例,也是GESP考试中常见的题型。本文将从零开始构建一个功能完整的温度转换工具,同时深入解析GESP考试中可能遇到的类似题型,帮助初学者掌握Pytho…...

Claude Code安装保姆级教程!超简单上手就会!

Claude Code驾驶手册 文章目录 Claude Code驾驶手册0 前言1 Claude Code基本安装配置1.1 系统配置及安装1.2 启动Claude Code1.3 配置API 0 前言 AI Agent 称为智能体(或人工智能代理),本质是自动执行任务的程序,核心在于让模型不…...

Python项目依赖管理:pipreqs vs pip freeze,哪个更适合你的项目?

Python项目依赖管理:pipreqs vs pip freeze,哪个更适合你的项目? 在Python开发中,依赖管理是项目维护的重要环节。一个清晰、准确的依赖清单不仅能确保项目在不同环境中稳定运行,还能简化团队协作和部署流程。面对pip…...

解向量前33位是DG位置,后33位是无功补偿容量

3.基于遗传算法的配电网优化配置 主要内容:分布式电源、无功补偿装置接入配电网,考虑配电网经济性和电能质量为目标函数,使用遗传算法进行优化配置,在IEEE33节点,118节点系统进行了仿真验证。 文件夹内运行main函数。配…...

从学术研究到工业部署,Python张量框架选型决策树(含模型规模×硬件约束×团队能力×合规要求4维评估矩阵)

第一章:从学术研究到工业部署,Python张量框架选型决策树(含模型规模硬件约束团队能力合规要求4维评估矩阵)在将深度学习模型从论文实验推向生产环境的过程中,张量框架的选择远不止“谁更流行”的简单判断。它是一次多目…...

MT5中文数据增强神器:无需训练,直接生成多样化的句子变体

MT5中文数据增强神器:无需训练,直接生成多样化的句子变体 1. 为什么需要中文文本数据增强 在自然语言处理领域,数据是模型训练的基础。但获取高质量的中文标注数据往往面临三大难题: 数据稀缺:特定领域(…...

ncmdumpGUI:实现NCM格式自由转换的音频解决方案

ncmdumpGUI:实现NCM格式自由转换的音频解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 痛点剖析:NCM格式的技术民主化阻碍 格…...

OpenClaw+Qwen3-32B-Chat:3种模型调用方式对比与选型建议

OpenClawQwen3-32B-Chat:3种模型调用方式对比与选型建议 1. 为什么需要对比模型调用方式? 第一次在本地部署Qwen3-32B-Chat模型时,我遇到了一个典型的技术选择困境:究竟应该直接调用本地模型,还是通过API访问远程服务…...

LightOnOCR-2-1B GPU优化实践:vLLM推理引擎配置与显存占用压测报告

LightOnOCR-2-1B GPU优化实践:vLLM推理引擎配置与显存占用压测报告 你是不是也遇到过这样的烦恼?部署一个OCR模型,明明看着参数不大,但一跑起来,显存就蹭蹭往上涨,甚至直接爆掉。或者,服务启动…...

从PHY芯片到TCP/IP协议栈:用Wireshark抓包分析lwIP的ethernetif_input全流程

从PHY芯片到TCP/IP协议栈:用Wireshark抓包分析lwIP的ethernetif_input全流程 在嵌入式网络开发中,理解数据从物理层到协议栈的完整传输路径至关重要。本文将结合STM32F7开发板实战,通过Wireshark抓包与示波器波形双重验证,深入解析…...