一、TLS(Transport Layer Security)握手是建立安全通信通道的关键过程,确保客户端与服务器之间的通信加密和身份验证。以下是TLS 1.2和TLS 1.3的握手流程详解及对比:

TLS 1.2 握手流程


目标:协商加密套件、交换密钥、验证身份  
步骤:  
1. Client Hello 
- 客户端发送支持的TLS版本、加密套件列表(如`AES256-GCM-SHA384`)、随机数(Client Random)及扩展字段(如SNI)。
2. Server Hello  
- 服务器选择TLS版本、加密套件,并返回随机数(Server Random)和服务端证书(包含公钥)。
3. 证书验证
- 客户端验证服务器证书链(是否可信、是否过期、域名匹配等)。若启用双向认证,服务器会请求客户端证书。
4. Server Key Exchange 
- 若使用DH/ECDHE密钥交换,服务器发送临时公钥参数(如ECDHE公钥)和签名。
5. Server Hello Done  
- 服务器通知客户端初始协商完成。
6. Client Key Exchange  
- 客户端生成预主密钥(Pre-Master Secret),用服务器公钥加密(RSA)或发送临时公钥(DH/ECDHE)。
7. 密钥派生 
- 双方通过Client Random、Server Random和Pre-Master Secret生成会话密钥(Master Secret),再派生出加密密钥和MAC密钥。
8. 切换加密通信  
- 双方发送`Change Cipher Spec`通知,后续通信使用协商的密钥加密。
9. Finished 
- 双方发送加密的`Finished`消息,验证握手完整性。

TLS 1.3 握手流程

 优化目标:减少延迟(1-RTT或0-RTT)、移除不安全特性。  
关键改进:  
- 删除RSA密钥交换、静态DH,仅支持前向安全的ECDHE。  
- 合并多步骤为单条消息,支持1-RTT握手。  

步骤:  
1. Client Hello 
- 发送支持的加密套件、Client Random、密钥共享参数(如ECDHE公钥)。
2. Server Hello  
- 服务器选择参数,返回Server Random、密钥共享参数(ECDHE公钥),并附带证书和签名。  
- 直接生成会话密钥:双方通过ECDHE参数即时计算共享密钥。
3. 加密通信  
- 服务器立即发送`Finished`消息,客户端验证后即可开始加密通信(1-RTT)。  
- **0-RTT(可选)**:若之前连接过,客户端可在首次请求中携带加密数据(有重放攻击风险)。

二、DNS(Domain Name System)解析是将域名转换为IP地址的过程,以下是详细的解析流程:

---

1. 用户输入域名
用户在浏览器中输入域名,触发DNS解析请求。

---

2. 本地缓存查询
- 浏览器缓存:浏览器首先检查自身缓存中是否有该域名的解析结果。
- 系统缓存(Hosts文件):如果浏览器无缓存,操作系统会检查本地Hosts文件是否有对应的IP记录。
- 系统DNS缓存:操作系统查询本地DNS缓存。

> 若缓存命中且未过期:直接返回IP,解析结束。

---

3. 向递归DNS服务器发起请求
如果本地无缓存,系统会向递归DNS服务器(通常由ISP或公共DNS如`8.8.8.8`、`114.114.114.114`提供)发送查询请求。

- 递归DNS服务器缓存:递归服务器先检查自身缓存,若有记录则直接返回。
- 无缓存时:递归服务器开始迭代查询。

---

4. 迭代查询(根域名→顶级域→权威DNS)
递归服务器按层级依次查询以下DNS服务器:

(1) 根域名服务器(Root DNS)
- 全球共13组根服务器(逻辑上,实际通过任播扩展)。
- 返回`.com`顶级域(TLD)的DNS服务器地址(如`a.gtld-servers.net`)。

(2) 顶级域名服务器(TLD DNS)
- 管理`.com`、`.org`等顶级域的服务器。
- 返回`example.com`的**权威DNS服务器**地址(如`ns1.example.com`)。

(3) 权威域名服务器(Authoritative DNS)
- 由域名注册商或托管服务商(如Cloudflare、阿里云)提供。
- 返回`www.example.com`的IP地址(如`192.0.2.1`)。

---

5. 返回解析结果
- 递归DNS服务器将IP返回给用户,并缓存该记录(根据TTL值)。
- 操作系统和浏览器也缓存结果,加速后续访问。

---

6. 建立连接
用户获取IP后,通过TCP/IP协议(如HTTP/HTTPS)与目标服务器建立连接。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven本地仓库清缓存py脚本

清_remote.repositories、以及 .lastUpdated 缓存文件,避免换仓库or私服的时候一直往旧地方去download从而引起的failtodownlown问题 import os import sysdef delete_maven_metadata_files(directory):"""递归删除指定目录下的 _remote.repositorie…

职坐标:物联网解决方案实战指南

随着物联网技术的快速发展,其在智能家居、工业制造和农业领域的应用日益广泛,为解决实际挑战提供了高效方案。本文将围绕职坐标一站式IT培训就业服务平台推出的实战指南,系统解析物联网解决方案的核心内容。指南首先概述物联网解决方案的基本…

多云环境下的统一安全架构设计

关键词:多云安全、统一架构、零信任、深度防御、身份管理、威胁检测、SIEM、合规性 📚 文章目录 引言:多云时代的安全挑战多云环境面临的安全挑战统一安全架构设计原则核心安全组件架构多层防护体系设计统一身份管理与访问控制安全监控与威…

批量制作Word:如何根据表格数据的内容批量制作word,根据Excel的数据批量制作word文档的步骤和注意事项

企业批量制作员工劳动合同时,用 Excel 整理员工姓名、职位等信息,模板设对应占位符,系统快速填充生成合同;高校生成成绩单,Excel 存学生成绩数据,模板嵌入科目占位符,批量生成准确成绩单&#x…

STM32f103ZET6之ESP8266模块

一、ESP8265概述 官方网址:ESP8266 Wi-Fi MCU I 乐鑫科技 (espressif.com.cn) ESP8266模块---wifi模块 产品特点:ESP8266 是什么? ESP8266 是由乐鑫科技(Espressif Systems)开发的一款低成本、高性能的 Wi-Fi 微控制器…

前端设计模式应用精析

引言 设计模式是前端工程化架构的基石,通过抽象核心场景解法提升代码复用性与系统可维护性。本文精析 7 个核心模式,结合原生 JavaScript 与框架实践,揭示模式在现代前端架构中的底层映射与应用。1. 观察者模式(Observer&#xff…

【机器学习深度学习】Ollama vs vLLM vs LMDeploy:三大本地部署框架深度对比解析

目录 前言 一、为什么要本地部署大语言模型? 二、三大主流部署方案简介 三、核心对比维度详解 1️⃣ 易用性对比 2️⃣ 性能与并发能力 3️⃣ 模型支持与生态兼容性 4️⃣ 部署环境与平台支持 四、一览对比表 五、详细介绍与比较 ✅ 1. Ollama ✅ 2. vL…

AWS ML Specialist 考试备考指南

以下是针对AWS机器学习专家认证(AWS Certified Machine Learning - Specialty)的备考指南精简版,涵盖核心要点和高效备考策略: ‌一、考试核心要点‌ ‌四大核心领域‌: ‌数据准备(28%)‌:S3数据存储、Glue ETL、Feature Store、数据清洗与特征工程。 ‌模型开发(26%…

yolo8+ASR+NLP+TTS(视觉语音助手)

🧩 模块总览:步骤模块作用①麦克风录音(VAD支持)获取语音并判断是否有人说话②Whisper语音识别把语音内容识别为文字③DeepSeek 聊天接口发送用户提问并获取 AI 回复④edge-tts 朗读回答把 DeepSeek 回答读出来⑤整合成语音助手主…

Zabbix 分布式监控系统架构设计与优化

一、概念 1.核心概念 Zabbix是一个CS(服务端/客户端)架构的服务Zabbix-Agent获取数据-->发送给-->Zabbix-Server服务端--- >数据会被存放在数据库 <--- Zabbix Web 页面展示数据 2.部署流程 部署ngxphp环境并测试部署数据库 mariadb 10.5及以上 然后进行配置编…

QT——文件选择对话框 QFileDialog

QFileDialog概述QFileDialog是Qt框架中提供的文件对话框类&#xff0c;用于让用户选择文件或目录。它提供了标准的文件选择界面&#xff0c;支持文件打开、保存、多选等常见操作。基本使用方式QFileDialog提供了两种使用方式&#xff1a;静态方法&#xff1a;直接调用类方法快速…

Flask+LayUI开发手记(十一):选项集合的数据库扩展类

条目较少的选项集合&#xff0c;确实可以在程序中直接定义&#xff08;其实最合适的还是存储在一个分类别的数据库表里&#xff09;&#xff0c;但条目较多的选项集合&#xff0c;或者是复杂的树型结构选项集合&#xff0c;一般都是存储在数据库中的&#xff0c;这样维护起来比…

AI学习笔记三十二:YOLOv8-CPP-Inference测试(Linux版本)

若该文为原创文章&#xff0c;转载请注明原文出处。主要介绍如何在Linux系统上安装和部署基于YOLOv8的C推理项目一、服务器准备使用AutoDL平台租用服务器AutoDL有git加速&#xff0c;可以自行启用二、环境配件1、检查Opencv版本pkg-config --modversion opencv4如果版本为4.5&a…

113:路径总和 II

题目&#xff1a;给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。解答&#xff1a;用 go主要坑有两个&#xff0c;一个是二维结果切片传递用指针&#xff0c;一个…

Perl 数组

Perl 数组 在Perl编程语言中&#xff0c;数组是处理数据的一种强大工具。数组允许我们将多个值存储在单个变量中&#xff0c;从而简化了代码并提高了效率。本文将详细介绍Perl数组的创建、操作、遍历以及一些高级用法。 数组的创建 在Perl中&#xff0c;创建一个数组非常简单。…

优先队列的实现

目录 引言 堆的基本概念与特性 堆的插入与向上调整 堆的删除与向下调整 优先队列的设计思路 模板参数设计 比较器的作用 核心接口实现 push pop top 附录(完整代码) 引言 优先队列&#xff08;Priority Queue&#xff09;是一种特殊的队列数据结构&#xff0c;其中每…

现代CSS实战:用变量与嵌套重构可维护的前端样式

现代CSS实战&#xff1a;用变量与嵌套重构可维护的前端样式 引言 在传统CSS开发中&#xff0c;我们常常陷入「样式冗余」与「维护噩梦」的循环&#xff1a; 想调整主题色&#xff1f;得全局搜索所有 #3498db 手动替换&#xff0c;稍有不慎就漏改某个角落&#xff1b; 写嵌套…

DHTMLX Suite 9.2 重磅发布:支持历史记录、类Excel交互、剪贴板、拖放增强等多项升级

全球知名的 JavaScript UI 组件库 DHTMLX Suite 迎来 9.2 新版本&#xff01;此次更新虽为次版本号&#xff0c;却实质性提升了 Grid 网格组件的交互能力与用户体验&#xff0c;引入了包括历史记录管理、剪贴板操作、数据选择范围管理、Block 区块选择等多项高级模块&#xff0…

深入理解Java中的Map.Entry接口

文章目录深入理解Java中的Map.Entry接口1. 接口定义2. 核心方法解析2.1 基本方法2.2 Java 8新增的静态方法3. 基本使用示例3.1 遍历Map的条目3.2 修改Map中的值3.3 使用比较器排序4. Java 8/9增强特性4.1 与Stream API结合4.2 Java 9的equals和hashCode默认方法5. 实际应用场景…

AI培训学习2

不要打扰用户的习惯&#xff0c;比如APP右下角的我的&#xff0c;放到第一个就不合适 先抄再超 lifeTime value NPS: 评价 Product market 平衡 ARPU&#xff1a; LT活跃时长 游戏中好友的重要性 不花钱存活率很少 如何花钱&#xff0c;1分钱买东西 联影医疗 figma uizard…