gpt4 book ai didi

ssl - TLS 记录协议(protocol)如何重组接收到的数据?

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:02 26 4
gpt4 key购买 nike

我找不到有关 TLS 记录协议(protocol)如何重组接收到的数据的详细信息。在 RFC 5246 中:

Received data is decrypted, verified, decompressed, reassembled, and then delivered to higher-level clients.

但是怎么做呢?这是记录层数据的样子:

struct {
ContentType type;
ProtocolVersion version;
uint16 length;
opaque fragment[TLSPlaintext.length];
} TLSPlaintext;

长度字段就是片段的长度:

The length (in bytes) of the following TLSPlaintext.fragment

我希望在 Record Protocol Header 中看到完整的长度。 Google 几乎没有给出任何结果,这让我觉得我遗漏了一些明显的东西......

最佳答案

TLS 在流上执行,这些流中的数据被放入一个或多个片段(最大 2^14 字节)。这称为碎片化。

规范本身的内容如下:

Client message boundaries are not preserved in the record layer (i.e., multiple client messages of the same ContentType MAY be coalesced into a single TLSPlaintext record, or a single message MAY be fragmented across several records).

这与将它们放入一个流中,然后再次将流分成单独的片段是一样的。

如果您通过 TLS 接收数据,则必须从单独的片段中重新创建该流。因此,发生的“重组”是将片段简单地串联成一个流。

套接字包含输出和输入流。输出流需要分片,输入流需要重组。

没有什么神奇的事情发生,这可能就是为什么你找不到太多东西的原因。


然而,应用层通常会获得一个相对较低级别的 TLS 层接口(interface),这将允许它包装或发送自己的片段。例如,这个 API by IBM显示它允许用户包装和发送或接收和解包每条消息本身。在这种情况下,库的用户需要处理任何消息碎片/重组。

由于 TLS 未指定分段/组装的实际方法,因此应将其视为特定于实现。

关于ssl - TLS 记录协议(protocol)如何重组接收到的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52942632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com