boringssl中0-RTT的错误码

天翼云开发者社区
• 阅读 3

本文分享自天翼云开发者社区《boringssl中0-RTT的错误码》.作者:沈****扬

在TLS协议中,0-RTT(零往返时间)是指在某些情况下,客户端可以在第一个往返(RTT)中就开始发送加密的应用数据,而不需要等待完整的TLS握手完成。这种机制允许客户端在重新连接到服务器时,利用之前会话中缓存的信息(如会话票据、密钥等),来减少连接建立的延迟。

0-RTT主要分为session和session ticket两种方式。在实际应用中,我们经常需要统计0-RTT比率和0-RTT建连失败的原因。如果你使用的是boringssl库进行ssl加解密,可以使用boringssl读取early_data_reason,来定位0-RTT是否成功以及失败的原因。

enum ssl_early_data_reason_t BORINGSSL_ENUM_INT {
  // The handshake has not progressed far enough for the 0-RTT status to be
  // known.
  ssl_early_data_unknown = 0,
  // 0-RTT is disabled for this connection.
  ssl_early_data_disabled = 1,
  // 0-RTT was accepted.
  ssl_early_data_accepted = 2,
  // The negotiated protocol version does not support 0-RTT.
  ssl_early_data_protocol_version = 3,
  // The peer declined to offer or accept 0-RTT for an unknown reason.
  ssl_early_data_peer_declined = 4,
  // The client did not offer a session.
  ssl_early_data_no_session_offered = 5,
  // The server declined to resume the session.
  ssl_early_data_session_not_resumed = 6,
  // The session does not support 0-RTT.
  ssl_early_data_unsupported_for_session = 7,
  // The server sent a HelloRetryRequest.
  ssl_early_data_hello_retry_request = 8,
  // The negotiated ALPN protocol did not match the session.
  ssl_early_data_alpn_mismatch = 9,
  // The connection negotiated Channel ID, which is incompatible with 0-RTT.
  ssl_early_data_channel_id = 10,
  // Value 11 is reserved. (It has historically |ssl_early_data_token_binding|.)
  // The client and server ticket age were too far apart.
  ssl_early_data_ticket_age_skew = 12,
  // QUIC parameters differ between this connection and the original.
  ssl_early_data_quic_parameter_mismatch = 13,
  // The application settings did not match the session.
  ssl_early_data_alps_mismatch = 14,
  // The value of the largest entry.
  ssl_early_data_reason_max_value = ssl_early_data_alps_mismatch,
};

这边使用常用的状态码举例:

(1)ssl_early_data_accepted,表示0-rtt建立按成功

(2)ssl_early_data_alpn_mismatch,表示请求的alpn没有匹配上

(3)ssl_early_data_no_session_offered,表示请求没有提供相关的session信息,无法建立0-RTT连接

点赞
收藏
评论区
推荐文章
PostgreSQL:psql 介绍
本文分享自天翼云开发者社区《》,作者:周平psql命令是与PostgreSQL服务器交互的客户端程序,要登录到数据库服务器,需要使用psql客户端工具或者第三方客户端工具如PostgreSQLforNavicat,pgAdmin,Visualizer等等。
云备份技术解析:云容灾 CT-CDR 关键技术介绍
本文分享自天翼云开发者社区《》,作者:沈军1、CDP存储快照,实现秒级RPO(1)CDP技术:云容灾CTCDR(CloudDisasterRecovery)采用CDP(ContinueDataProtection)技术,能够在IO级别进行复制能极大的提升
云备份技术解析:备份删除&合并原理
本文分享自天翼云开发者社区《》,作者:沈军在删除备份副本时,需要根据备份副本包含的数据块以及数据块的引用关系来进行空间的释放。当云硬盘的第一个备份副本删除后,全量备份的属性会顺延到后面的第一个增量备份。如果此时云硬盘没有创建备份,在云盘下次创建的新备份时也
边缘云特点、应用实践和发展趋势浅析
本文分享自天翼云开发者社区《》,作者:JinnyPeng引言:随着物联网、人工智能和5G技术的快速发展,云计算正在迎来一场革命性的变革。在传统云计算架构中,数据和计算主要集中在大型数据中心中进行处理,这在某些场景下存在一定的局限性。为了满足实时性、低延迟和
flinkcdc中checkpoint不成功问题排查
本文分享自天翼云开发者社区《》,作者:徐东使用flink1.16和flinkcdc3.0进行数据接入,采用standalone模式。运行一段时间后checkpoint开始失败,但日志中没有报错信息。因savepoint和checkpoint机制一致,使用手
Nginx的ngx_thread_pool模块解析:提升性能与可伸缩性
本文分享自天翼云开发者社区《》.作者:云海Nginx是一个备受欢迎的开源Web服务器和反向代理服务器,以其出色的性能和可伸缩性而著称。在处理高并发请求时,Nginx的ngxthreadpool模块发挥了关键作用,允许您有效地利用多核CPU,提高并发处理性能
Nginx 缓存的工作原理
本文分享自天翼云开发者社区《》.作者:云海Nginx缓存的工作原理Nginx缓存分为多种类型,最常见的是代理缓存(ProxyCache)。1.代理缓存(ProxyCache)代理缓存的核心原理是:当客户端请求到达Nginx时,Nginx会检查缓存中是否存在
在nginx中实现回源日志的功能
本文分享自天翼云开发者社区《》.作者:尹聪nginx中已经提供了访问日志的功能,主要对客户端的访问状态等进行记录,比如响应给客户端的状态码,请求uri,请求协议等。而对于回源(或者回后端)的请求状态记录较少,如后端的地址、端口、状态码等这些有记录。在反向代
quic协议监听与Alt-Svc响应头的应用
本文分享自天翼云开发者社区《》.作者:沈扬QUIC是快速UDP网络连接(英语:QuickUDPInternetConnections)的缩写,是一种基于UDP协议实现的应用层可靠传输协议。目前已经被确定为HTTP3.0标准(RFC9000和RFC9114)
nginx中同一端口不同tls版本与加密套件
本文分享自天翼云开发者社区《》.作者:zn1.问题描述需要在nginx中使用2个域名同时监听443端口,域名a只允许使用tls1.2,域名b允许tls1.2,tls1.3。实际运行发现原生nginx无法实现nginx.conf配置如下workerproce
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
987
粉丝
16
获赞
40