Tcp三次握手四次挥手和SSL/TLS
1.Tcp三次握手四次挥手:
1.1基本概念:
TCP(三次握手和四次挥手)是用于建立和终止可靠传输连接的过程。TCP协议是一种面向连接的传输层协议,确保数据在网络上可靠、有序地传输。下面详细解释三次握手和四次挥手的工作机制。
1.2 TCP 三次握手(建立连接)
TCP 三次握手用于在客户端和服务器之间建立可靠的连接。这个过程确保双方都可以发送和接收数据,并同步彼此的初始序列号,以便在数据传输时能够正确排序和确认。三次握手过程如下:
(1).第一次握手:SYN
- 客户端发送一个SYN(同步序列号)包给服务器,表示想要建立连接。该包包含客户端的初始序列号(
Seq = x
),用于数据传输时的确认。
(2).第二次握手:SYN-ACK
- 服务器收到客户端的SYN包后,回复一个SYN+ACK包,表示同意建立连接,并返回自己的初始序列号(
Seq = y
)。同时,确认客户端的SYN包(Ack = x+1
)。
(3).第三次握手:ACK
- 客户端收到服务器的SYN+ACK包后,发送ACK包,确认服务器的SYN包(
Ack = y+1
),并表示连接已经成功建立。
此时,客户端和服务器之间的连接已经建立,可以开始进行数据的传输。
1.3 TCP 四次挥手(断开连接)
当客户端或服务器任何一方希望终止连接时,TCP 采用四次挥手机制来确保双方都能正确断开连接。由于TCP连接是全双工的(即双方可以同时发送和接收数据),每一方都需要单独关闭各自的数据传输通道,确保连接的安全终止。
(1).第一次挥手:FIN
客户端(或服务器)发送一个FIN(Finish)包,表示不再发送数据,但仍可以接收数据。此时,客户端进入
FIN_WAIT_1
状态。
(2).第二次挥手:ACK
服务器收到FIN包后,回复一个ACK包,表示已收到请求,进入
CLOSE_WAIT
状态。此时,客户端进入FIN_WAIT_2
状态,等待服务器关闭连接。
(3).第三次挥手:FIN
服务器也向客户端发送一个FIN包,表示服务器也不再发送数据,准备关闭连接。此时,服务器进入
LAST_ACK
状态。
(4).第四次挥手:ACK
- 客户端收到服务器的FIN包后,回复一个ACK包,表示确认服务器关闭连接。此时,客户端进入
TIME_WAIT
状态,等待一定时间后完全关闭连接。服务器在收到ACK包后,立即关闭连接。
1.3 三次握手和四次挥手的作用
(1).三次握手确保客户端和服务器都能够确认对方准备好建立连接,并且可以同步初始序列号,以保证数据传输的有序性和完整性。
(2).四次挥手则确保双方都能够安全地关闭连接,避免数据丢失。客户端在收到服务器的FIN后,进入TIME_WAIT
状态,继续等待一段时间,以处理可能出现的延迟数据包。
1.4 三次握手与四次挥手的区别
(1).三次握手是为了建立连接,而四次挥手是为了断开连接。
(2).三次握手中的双方可以同步初始序列号,保证数据传输的可靠性。
(3).四次挥手中的每一方都需要单独关闭自己的数据传输通道,因此需要四步。
2.SSL/TLS
2.1 基本概念:
SSL(Secure Sockets Layer,安全套接字层)和TLS(Transport Layer Security,传输层安全协议)是用于保护网络通信安全的加密协议。它们提供了一种在客户端(如浏览器)和服务器之间建立安全通信的方式,确保数据传输的保密性、完整性和真实性。
2.2 SSL与TLS的区别:
- SSL是最早开发的安全协议,但由于安全漏洞,已经逐渐被弃用。
- TLS是SSL的升级版本,更加安全和高效。TLS 1.0 基于 SSL 3.0,但随着时间的推移,TLS协议得到了更多的改进,目前常用的版本是 TLS 1.2 和 TLS 1.3。
2.3 SSL/TLS 的主要功能
SSL/TLS 通过以下三个方面保障通信的安全性:
加密(Confidentiality):通过加密技术,保护传输的数据不被第三方窃听。
完整性(Integrity):通过消息认证码(MAC),确保传输的数据在传输过程中没有被篡改。
身份验证(Authentication):通过数字证书确保通信双方的身份是合法的。
2.4 SSL/TLS 握手过程
SSL/TLS 握手是客户端和服务器之间建立安全连接的过程。握手主要用于协商安全参数和共享加密密钥。典型的TLS握手过程如下:
- 客户端Hello:客户端向服务器发送包含协议版本、支持的加密算法、随机数等信息的
ClientHello
消息。- 服务器Hello:服务器响应
ServerHello
消息,包含选择的加密算法、服务器证书等信息。- 证书验证:服务器发送数字证书,客户端验证该证书的合法性。
- 密钥交换:双方协商会话密钥,用于加密后续通信。这个过程可能使用非对称加密算法(如RSA)或密钥交换协议(如Diffie-Hellman)。
- 客户端完成:客户端生成一个会话密钥并加密发送给服务器,服务器用自己的私钥解密。双方确认加密通信通道已建立。
3.关系:
TCP三次握手:用于建立可靠的传输层连接,确保数据包的顺序和完整性。
SSL/TLS握手:在应用层和传输层之间执行,通常在TCP三次握手完成后进行,用于建立安全的加密通信。
相关文章:
Tcp三次握手四次挥手和SSL/TLS
1.Tcp三次握手四次挥手: 1.1基本概念: TCP(三次握手和四次挥手)是用于建立和终止可靠传输连接的过程。TCP协议是一种面向连接的传输层协议,确保数据在网络上可靠、有序地传输。下面详细解释三次握手和四次挥手的工作机…...

大棚分割数据集,40765对影像,16.9g数据量,0.8米高分二,纯手工标注(arcgis标注)的大规模农业大棚分割数据集。
数据集名称: )“Greenhouse Segmentation Dataset (GSD)” 数据集规模: 包含40,765对用于大棚分割的影像数据,每对影像包括一张原始图像和相应的分割标签图。 数据量: 总数据量约为16.9GB,适合存储在现…...

Jenkins插件安装失败时这么做就搞定啦!
1.网络或墙的问题导致插件下载安装失败 这种错误提示很明显,就是无法连接到插件下载地址,导致插件下载失败。 解决方法 为Jenkins更换源 点击Jenkins主页面左侧列表中【系统管理】—— 下拉找到【管理插件】 选择【高级】选项卡 替换最下方【升级站点…...

优化器与现有网络模型的修改
文章目录 一、优化器是什么二、优化器的使用三、分类模型VGG16四、现有网络模型的修改 一、优化器是什么 优化器(Optimizer)是一个算法,用于在训练过程中调整模型的参数,以便最小化损失函数(Loss Function)…...
kafka 超详细的消息订阅与消息消费几种方式
kafka 消息订阅与消息消费几种方式 本文主要内容 消费者订阅几种方式 订阅多个主题 按正则表达式订阅 消息消费几种方式 按分区消费 按主题消费 不区分 “ 笔者建议一开始学习Kafka最好不要用SpringBoot 集成方式,因为SpringBoot推崇用注解方式,比如KafkaList…...

C++ 第三讲:内存管理
C 第三讲:内存管理 1.C内存分布2.内存管理方式2.1C语言内存管理方式2.2C内存管理方式2.2.1new\delete操作内置类型2.2.2new\delete操作自定义类型 3.operator new与operator delete函数4.new和delete实现原理4.1内置类型4.2自定义类型 5.定位new5.1内存池的基本了解…...
LeeCode打卡第二十九天
LeeCode打卡第二十九天 第一题:岛屿数量(LeeCode第200题): 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只…...
阿里云专业翻译api对接
最近我们一个商城项目涉及多语言切换,默认中文。用户切换语言可选英语和阿拉伯语言,前端APP和后端返回动态数据都要根据用户选择语言来展示。前端静态内容都做了三套语言,后端商品为了适用这种多语言我们也进行了改造。每一件商品名称&#x…...

基于Spring Boot的能源管理系统+建筑能耗+建筑能耗监测系统+节能监测系统+能耗监测+建筑能耗监测
介绍 建筑节能监测系统是基于计算机网络、物联网、大数据和数据可视化等多种技术融合形成的一套节能监测系统。 系统实现了对建筑电、水、热,气等能源、资源消耗情况的实时监测和预警、动态分析和评估,为用户建立了科学、系统的节能分析方法,…...

大数据新视界 --大数据大厂之 Cassandra 分布式数据库:高可用数据存储的新选择
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

ROS第五梯:ROS+VSCode+C++单步调试
解决问题:在ROS项目中进行断点调试。 第一步:创建一个ROS项目或者打开一个现有的ROS项目。 第二步:修改c_cpp_properties.json 增加一段命令: "compileCommands": "${workspaceFolder}/build/compile_commands.json"第三…...

SLA 概念和计算方法
SLA 概念和计算方法 SLA SLA:服务等级协议(简称:SLA,全称:service level agreement) 网站服务可用性的一个保证 9越多代表全年服务可用时间越长服务更可靠,停机时间越短,反之亦然…...

C++比大小游戏
目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好,我叫这是我58。 程序 #include <iostream> #include <Windows.h> using namespace std; int main() {int ir 1;char chparr[2] { 0 };int ip1 0;int ip2 0;int i 1;c…...

PCIe进阶之TL:Memory, I/O, and Configuration Request Rules TPH Rules
1 Memory, I/O, and Configuration Request Rules 下述规则适用于 Memory 请求、IO 请求和配置请求。 除了公共的 header 字段外,所有 Memory 请求、IO 请求和配置请求还包括以下字段: (1)Requester ID[15:0] 和 Tag[9:0],组成了 Transaction ID 。 (2)Last DW BE[3:0]…...

【初阶数据结构】一文讲清楚 “堆” 和 “堆排序” -- 树和二叉树(二)(内含TOP-K问题)
文章目录 前言1. 堆1.1 堆的概念1.2 堆的分类 2. 堆的实现2.1 堆的结构体设置2.2 堆的初始化2.3 堆的销毁2.4 添加数据到堆2.4.1 "向上调整"算法 2.5 从堆中删除数据2.5.1 “向下调整”算法 2.6 堆的其它各种方法接口函数 3. 堆排序3.1 堆排序的代码实现 4. TOP-K问题…...

sqli-lab靶场学习(二)——Less8-10(盲注、时间盲注)
Less8 第八关依然是先看一般状态 http://localhost/sqli-labs/Less-8/?id1 然后用单引号闭合: http://localhost/sqli-labs/Less-8/?id1 这关的问题在于报错是不显示,那没办法通过上篇文章的updatexml大法处理。对于这种情况,需要用“盲…...

Dijkstra算法和BFS算法(单源最短路径)
基于你设计的带权有向图,从某一结点出发,执行Dijkstra算法求单源最短路径。用文字描述每一轮执行的过程 文字描述:用BFS算法求单源最短路径的过程 Dijkstra 算法 BFS算法 广度优先算法...

在WordPress中最佳Elementor主题推荐:专家级指南
对于已经在WordPress和Elementor上有丰富经验的用户来说,选择功能强大且高度灵活的主题,能大大提升网站的表现和定制能力。今天,我们来介绍六款适合用户的专家级Elementor主题:Sydney、Blocksy、Rife Free、Customify、Deep和Laye…...
关于RabbitMQ消息丢失的解决方案
RabbitMQ如何保证消息的可靠性传输 一、消息丢失的原因 1. 生产者端 网络问题: 原因:生产者与RabbitMQ服务器之间的网络连接不稳定或中断,导致消息在传输过程中丢失。解决方案:确保网络连接稳定,监控网络状态&#x…...

c语言动态内存分配
前言 我们已经掌握的内存开辟⽅式有: int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间 但是上述的开辟空间的⽅式有两个特点: • 空间开辟⼤⼩是固定的。 • 数组在申明的时候,必须指定数组的…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
Java并发编程实战 Day 11:并发设计模式
【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天,今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案,它们不仅提供了优雅的设计思路,还能显著提升系统的性能…...

云原生安全实战:API网关Envoy的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口,负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...

MeshGPT 笔记
[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭!_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...