Page 465 - 《软件学报》2025年第7期
P. 465
3386 软件学报 2025 年第 36 卷第 7 期
行压缩, 并作为 HEADERS 帧单独传输; H2_Frame_Headers len 代表一个 HTTP/2 帧的头部的长度; N H2 指承载 CDU
数据的 HTTP/2 帧数.
CDU
V i,n V i,n+1 V i,n+2 V i,n+3 V i,n+4
加密
HEADERS frame Frame header DATA frame HTTP/2
HTTP
头部
TLS header TLS payload TLS
TCP packets TCP
图 6 视频数据分组 CDU 封装过程
在公式 (1) 的诸多参数中, 一些参数可以通过直接或间接的方式从加密视频传输数据流中分析获得:
(1) TCP_Payload len : 由于 TCP 首部不是加密数据, 所以可以通过对承载音视频数据 CDU 的 TCP 分组的首部
信息进行统计, 从而计算出总的 TCP 载荷长度.
(2) N TLS : 虽然无法直接从 TCP 头部获取 TLS 记录数量, 但可以通过间接的方式计算出 TLS 记录个数. 由于
TLS 的“PlainText Header”结构中记录着加密数据块的长度信息 [39] , 并且这个结构的信息也是不加密的, 所以可以
通过 TCP 负载数据中找到 TLS 记录的“PlainText Header”字段进行解析, 结合 TCP 分组的有效负载长度和序列号
便可以得到 TLS 记录的个数.
(3) H2_HEADERS _Frame len : 由于 HTTP/2 协议会使用 HPACK 算法将 HTTP 头部进行压缩, 封装成 HEADERS
帧进行单独传输, 且该帧的大小一般不会大于 1 个 TLS 记录的最大报文长度 MSS (maximum segment size), 所以
该帧会单独使用一个 TLS 记录传输, 因此可根据时间戳、阈值和特征值来获取该参数.
(4) H2_Frame_Headers len : 根据 HTTP/2 的协议标准 RFC 7540 [35] , 一个数据帧的头部长度为 9 B.
在获取到上述参数信息后, 修正还原公式 (1) 中只剩下参数 TLS _θ len 和参数 N H2 尚未获知, 要想计算这两个参
数, 需要结合 TLS 协议和 HTTP/2 协议的特点, 从加密数据流中提取特征来构建相关修正模型, 此外这些特征与视
频平台使用的 TLS 协议版本和参数设置有关, 因此需要根据不同视频平台的数据分别构建相关修正模型.
本文第 5.2 节给出从数据流中提取音视频数据, 划分出 CDU 的方法, 经过这个处理, 就可以提取出公式 (1) 中
TCP_Payload len 、 N TLS 、 H2_Frame_Headers len 这 4 个参数. 第 5.3 节针对 TLS 协
的 H2_HEADERS _Frame len 和
TLS _θ len . 第 5.4 节对 HTTP/2 协议的干扰进行修正, 构建机器学习模
议的干扰进行修正, 构建修正模型计算参数
型计算参数 N H2 .
5.2 从加密视频数据流中提取组合数据单元
在加密视频数据传输过程中, 由于视频网页会加载页面、图标、CSS 和视频评论等信息, 导致采集到的流量
数据中夹杂着大量的非音视频数据, 需要从这些混乱的数据流中区分出音视频流, 此外, 由于 HTTP/2 使用多路复

