openssl
的调用手册页SSL_read()
指出:
SSL_read() 基于 SSL/TLS 记录工作。数据以记录的形式接收(SSLv3/TLSv1 的最大记录大小为 16kB)。只有当一条记录被完全接收时,它才能被处理(解密和完整性检查)。因此,在最后一次调用 SSL_read() 时未检索到的数据仍然可以在 SSL 层内缓冲,并将在下一次调用 SSL_read() 时检索。
鉴于:
- 始终可以一次性发送单个传出消息的 HTTP 标头
- 一条 SSL/TLS 记录显然可以保存 16KB 的数据,这对每个人来说都足够了(或者至少是任何非反常的 HTTP 请求)
浏览器几乎没有理由将标头分成多个 SSL 记录,对吗?或者是否有浏览器在延迟方面如此激进,以至于它们甚至会将这些小型有效负载分割成多条记录?
我之所以这样问,是因为能够从一个由单个成功SSL_read()
调用填充的单个读取缓冲区解析一整组 HTTP 标头会很好。如果这意味着拒绝少数几个(例如,如果只有所有请求的 0.0000X%),那对我来说可能是值得的。
编辑:Alexei Levenkov提出了 cookie 可以很长的有效观点。但是让我们考虑一下这个特定服务器永远不会设置或期望 cookie 的场景。
edit2:这个问题有点为时过早。同时,我编写的代码可以有效地存储每个客户端状态,以便在解析时接受任意数量的 SSL 记录,而不会导致任何显着的性能损失。在这样做之前,我想知道我是否可以走捷径,但普遍的共识似乎是我最好按照书本行事。点承认。