gpt4 book ai didi

ssl - 这个符号在 TLS 文档中是什么意思?

转载 作者:行者123 更新时间:2023-12-04 22:42:25 25 4
gpt4 key购买 nike

例如,查看定义 ALPN 的 RFC 7301:

   enum {
application_layer_protocol_negotiation(16), (65535)
} ExtensionType;
(16)是要使用的枚举值,但我应该如何阅读 (65535)部分?
来自同一个文档:
   opaque ProtocolName<1..2^8-1>;

struct {
ProtocolName protocol_name_list<2..2^16-1>
} ProtocolNameList;
...我应该如何阅读 <1..2^8-1><2..2^16-1>部分?

最佳答案

https://www.rfc-editor.org/rfc/rfc8446 中描述了该符号。 .

对于“枚举”(枚举),见 https://www.rfc-editor.org/rfc/rfc8446#section-3.5 ,它表示括号中的值是该枚举成员的值,并且该枚举占用了最高记录值所需的八位位组。
因此,如果您想留出一些空间,则需要一个具有足够高值的未命名枚举成员。

One may optionally specify a value without its associated tag to force the width definition without defining a superfluous element.


In the following example, Taste will consume two bytes in the data stream but can only assume the values 1, 2, or 4.

  enum { sweet(1), sour(2), bitter(4), (32000) } Taste;

有关矢量,请参阅 https://www.rfc-editor.org/rfc/rfc8446#section-3.4 .这说:

Variable-length vectors are defined by specifying a subrange of legal lengths, inclusively, using the notation <floor..ceiling>. When these are encoded, the actual length precedes the vector's contents in the byte stream. The length will be in the form of a number consuming as many bytes as required to hold the vector's specified maximum (ceiling) length.


所以符号 <1..2^8-1>表示 ProtocolName必须至少为 1 个八位字节,最长为 255 个八位字节。
同样 <2..2^16-1>表示 protocol_name_list必须至少有 2 个八位字节(不是条目),最多可以有 65535 个八位字节(不是条目)。
在这种特殊情况下,最少 2 个八位字节是因为它必须包含至少一个条目,该条目本身至少有 2 个八位字节长(u8 长度前缀,值中至少有一个八位字节)。
为了清楚区分八位位组/条目,稍后在该部分中,它说:
   uint16 longer<0..800>;
/* zero to 400 16-bit unsigned integers */

关于ssl - 这个符号在 TLS 文档中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66225006/

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