TLS握手中的RTT

文章目录

  • TLS 1.2 握手过程中的 RTT 次数
  • TLS 1.3 1-RTT 初次
  • TLS1.3 0-RTT 握手过程
  • 总结

TLS 1.2 握手过程中的 RTT 次数

TLS 1.2 握手通常需要2 RTT 才能完成。具体步骤如下:

  1. 第一次 RTT

    • 客户端发送 ClientHello:客户端生成一个随机数(Client Random)并发送 ClientHello 消息。
    • 服务器响应 ServerHello:服务器生成一个随机数(Server Random),选择加密套件,发送 ServerHello 消息,可能还包括 CertificateServerKeyExchangeCertificateRequestServerHelloDone 消息。
  2. 第二次 RTT

    • 客户端响应 ServerHelloDone:客户端发送 ClientKeyExchangeChangeCipherSpecFinished 消息。
    • 服务器完成握手:服务器接收 ClientKeyExchangeChangeCipherSpecFinished 消息,并发送 ChangeCipherSpecFinished 消息。
      在这里插入图片描述

TLS 1.3 1-RTT 初次

TLS 1.3 握手过程中通常只需要 1 个 RTT 即可完成

  1. 第一次 RTT

    • 客户端发送 ClientHello:客户端生成一个随机数(Client Random),发送 ClientHello 消息,其中包括支持的加密套件列表、协议版本等信息,并附带公钥信息用于密钥交换。如果是 0-RTT 握手,还可以包含早期数据。
    • 服务器响应 ServerHello:服务器生成一个随机数(Server Random),选择加密套件,发送 ServerHello 消息,可能包括 EncryptedExtensionsCertificateCertificateVerifyFinished 消息。
  2. 客户端完成握手

    • 客户端发送 Finished:客户端接收服务器的 ServerHello 消息后,立即发送 Finished 消息,完成握手。

TLS1.3 0-RTT 握手过程

  • 零往返时间:在传统的握手过程中,客户端需要等待至少一个往返时间(RTT)才能发送数据。但是在 0-RTT 握手中,客户端可以在发送 ClientHello 消息的同时发送应用数据,而不需要等待服务器的响应。这意味着从客户端开始握手到发送数据的过程中,不需要等待任何往返,故称为 0-RTT
  1. 0-RTT 数据发送

    • 客户端发送 ClientHello 和早期数据:客户端发送 ClientHello 消息,并附带早期数据和之前会话的会话票据。
  2. 服务器处理 ClientHello 和早期数据

    • 服务器响应 ServerHello:服务器验证会话票据,恢复会话密钥,发送 ServerHello 消息,处理早期数据,并发送 Finished 消息。
  3. 客户端完成握手

    • 客户端发送 Finished:客户端接收 ServerHello 消息后,发送 Finished 消息,完成握手。

在 0-RTT 握手过程中,客户端可以在握手开始时就发送应用数据,从而实现 0 个 RTT 的数据传输延迟。

总结

  • TLS 1.2:通常需要 2 个 RTT 才能完成握手。
  • TLS 1.3:通常只需要 1 个 RTT 即可完成握手。
  • TLS 1.3(0-RTT):支持 0 个 RTT 数据传输(在之前已有会话的情况下)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【离散数学】图的随机生成和欧拉(回)路的确定(c语言实现)

实验要求 变量定义 因为如果我们使用局部变量,每一个函数都会使用这些变量,会让函数的参数越变越多。所以我们定义全局变量,这样就不用在参数中调用了。 #define MAX 100 int arrMap[MAX][MAX] { 0 };//图的矩阵 int degree[MAX] { 0 };…

GEO数据挖掘-富集分析、TinyArray简化流程、多组样本分析more

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 富集分析一些理论知识具体代码 富集不到的补救措施更多资料---问题数据和常见错误分析Part4-复杂数据及其分析多分组数据分析流程 tinyarray简化版本分析流程多分组…

ROS机器人虚拟仿真挑战赛持续学习笔记-20240619

cartographer 需要全手工编译……比较麻烦。 如果使用新版ceres-solver,版本2.x,需要修改源码,部分“接口代码”有改动。 稳妥使用ceres-solver-1.13.0,且需要安装abseil-cpp。 验证是否成功,使用roscd或roslaunch…

C语言| 数组元素的删除

同数组元素的插入差不多。 数组元素的插入,是先移动要插入元素位置后面的所有元素,再插入新元素,长度1。 C语言| 数组的插入-CSDN博客 数组元素的删除,是先删除元素,再把后面的元素往前移动一位,而本程序…

三国之家网站的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,论坛管理,公告管理,三国视频管理,基础数据管理,三国图文管理 前台账户功能包括:系统首页,个人中心&#…

2.树莓派4b+ubuntu18.04(ros版本melodic)+arduino mega自制两轮差速小车,实现建图导航功能

这篇文章介绍arduino使用和安装arduino_bridge 将arduino与树莓派连接 查看arduino的端口号,我们这里查看到的时ttyUSB0 ll /dev/ttyUSB*将当前用户添加进dialout组 sudo usermod -a -G dialout your_user_name然后重启树莓派,然后才能生效 然后如果你…

“Driver not loaded“问题解决方案

这两天又碰到了离谱的,愚蠢的,莫名其妙的,丧尽天良的错误。 之前已经解决过这个问题。这几天又碰上了,明明都已经把相应的dll放到了exe的同级目录,NND还是有问题!!!卡了我一个晚上加…

Linux C/C++ socket函数

目录 socket函数 函数原型 头文件 功能 返回值 参数 错误码 socket函数 函数原型 int socket(int domain, int type, int protocol); 头文件 #include <sys/types.h> #include <sys/socket.h> 功能 创建一个用于通信的端点&#xff0c;并返回一个文件描述符…

tensorRT C++使用pt转engine模型进行推理

目录 1. 前言2. 模型转换3. 修改Binding4. 修改后处理 1. 前言 本文不讲tensorRT的推理流程&#xff0c;因为这种文章很多&#xff0c;这里着重讲从标准yolov5的tensort推理代码&#xff08;模型转pt->wts->engine&#xff09;改造成TPH-yolov5&#xff08;pt->onnx-…

Linux - 探秘 Linux 的 /proc/sys/vm 常见核心配置

文章目录 PreLinux 的 /proc/sys/vm 简述什么是 /proc/sys/vm&#xff1f;主要的配置文件及其用途参数调整对系统的影响dirty_background_ratio 和 dirty_ratioswappinessovercommit_memory 和 overcommit_ratiomin_free_kbytes 实例与使用建议调整 swappiness设置 min_free_kb…

6.XSS-钓鱼攻击展示(存储型xss)

xss钓鱼演示 钓鱼攻击利用页面 D:\phpStudy\WWW\pikachu\pkxss\xfish 修改配置文件里面对应自己的入侵者的IP地址或者域名&#xff0c;对应的路径下的fish.php脚本如下&#xff1a; <?php error_reporting(0); // var_dump($_SERVER); if ((!isset($_SERVER[PHP_AUTH_USE…

分类预测 | Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测

分类预测 | Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测&…

嵌入式学习——数据结构(队列)——day50

1. 查找二叉树、搜索二叉树、平衡二叉树 2. 哈希表——人的身份证——哈希函数 3. 哈希冲突、哈希矛盾 4. 哈希代码 4.1 创建哈希表 4.2 5. 算法设计 5.1 正确性 5.2 可读性&#xff08;高内聚、低耦合&#xff09; 5.3 健壮性 5.4 高效率&#xff08;时间复杂度&am…

线程封装,互斥

文章目录 线程封装线程互斥加锁、解锁认识接口解决问题理解锁 线程封装 C/C代码混编引起的问题 此处pthread_create函数要求传入参数为void * func(void * )类型,按理来说ThreadRoutine满足,但是 这是在内类完成封装,所以ThreadRoutine函数实际是两个参数,第一个参数Thread* …

Python | Leetcode Python题解之第174题地下城游戏

题目&#xff1a; 题解&#xff1a; class Solution:def calculateMinimumHP(self, dungeon: List[List[int]]) -> int:n, m len(dungeon), len(dungeon[0])BIG 10**9dp [[BIG] * (m 1) for _ in range(n 1)]dp[n][m - 1] dp[n - 1][m] 1for i in range(n - 1, -1, …

Redis的实战常用一、验证码登录(解决session共享问题)(思路、意识)

一、基于session实现登录功能 第一步&#xff1a;发送验证码&#xff1a; 用户在提交手机号后&#xff0c;会校验手机号是否合法&#xff1a; 如果不合法&#xff0c;则要求用户重新输入手机号如果手机号合法&#xff0c;后台此时生成对应的验证码&#xff0c;同时将验证码进行…

C语言 | Leetcode C语言题解之第187题重复的DNA序列

题目&#xff1a; 题解&#xff1a; #define MAXSIZE 769/* 选取一个质数即可 */ typedef struct Node {char string[101];int index;struct Node *next; //保存链表表头 } List;typedef struct {List *hashHead[MAXSIZE];//定义哈希数组的大小 } MyHashMap;List * …

【百问大模型02】一文讲透RAG实战全解析

1.实时性无法更新&#xff0c;知识容易自相矛盾 2.大模型的缺点有哪些&#xff1f; 3.一个人的能力可以分为两种&#xff1a; 1&#xff09;大模型&#xff1a;推理能力&#xff0c;聪明&#xff0c;知识&#xff1b;很聪明但是缺少知识 2&#xff09;知识库&#xff1a;辅…

第一个Flask程序

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 一切准备就绪&#xff0c;现在我们开始编写第一个Flask程序&#xff0c;由于是第一个Flask程序&#xff0c;当然要从最简单的“Hello World&#xff…

打印机状态显示错误是什么原因?这5个有效方法要记好!

打印机是现代办公中不可或缺的设备之一&#xff0c;但在使用过程中&#xff0c;打印机状态显示错误是一个常见的问题。本文将详细探讨打印机状态显示错误的原因及其解决方法。 摘要 打印机状态显示错误的原因及解决方法如下&#xff1a; 1、网络连接问题&#xff1a;原因&…