首页/网络/协议速查/TLS 记录层

TLS 记录层

把上层数据切成 ≤16KB 的记录,逐条加密认证(AEAD)后交给 TCP;记录类型含 handshake/application_data/alert/change_cipher_spec。

协议速查网络更新于 2026-10-13

记录层做什么

记录层把上层数据切成不超过 16384 字节的记录,逐条加密并认证后交给传输层(RFC 8446 §5)。记录类型包括握手、应用数据、告警与更改密码规格,加密之后连类型本身也不再对外可见。

与传输层的关系

一条记录可能跨多个 TCP 段,多个记录也可能合进同一个段:两者没有一一对应关系。这也是为什么抓 HTTPS 只能看到包大小与节奏——除握手前半段之外,内容与结构都被加密保护了。

基本信息

最大记录16384 字节明文,加密后略有膨胀
结构类型、版本、长度、加密载荷与认证标签
与传输层记录与 TCP 段不一一对应
规范RFC 8446 §5

典型使用场景

  • 理解为什么抓包只能做流量分析
  • 排查大响应被拆成多段带来的性能问题
  • 学习握手段与应用数据段的分界
  • 分析加密流量的分片与重传特征

观察记录层

观察记录层
openssl s_client -connect example.com:443 -msg </dev/null 2>&1 | grep -c '<<<'   # 观察记录数量级
tcpdump -nn -X 'tcp port 443' -c 5                                              # 只能看到加密载荷
# 记录尺寸会影响分片与重传粒度:大响应通常被切成多条记录传输

记录类型

类型作用备注
握手协商参数与密钥加密后类型也不再可见
应用数据承载上层协议数据单条上限 16384 字节
告警关闭或错误通知正常关闭需要发送关闭通知
更改密码规格兼容旧版本的过渡消息新版本中只保留兼容语义
这就是抓包只能看到包大小与节奏的原因:除握手前半段之外,其余内容与结构都在加密保护之下。
「抓包看不到内容」不等于看不到任何信息:服务器名称、包大小与请求节奏依然可被分析,加密流量分析已经是很成熟的方向。
排查大响应问题时,把记录尺寸与传输层分段放在一起看:应用层的小记录会放大传输层的段数,进而放大开销与重传代价。

易错点

  • 以为加密后完全没有可观测信息:包大小与节奏仍会泄露大量特征
  • 把记录当 TCP 段:两者不一一对应,按记录推算网络行为会得出错误结论
  • 认为关闭连接只要断开传输层即可:缺少关闭通知会让对端无法分辨正常结束与截断
  • 忽略记录尺寸对性能的影响:过小的记录显著增加开销
  • 在抓包里直接找告警:新版本握手加密后必须先配置会话密钥才能解密

数据来源与参考

  • RFC 8446 §5(记录层)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌