在哪里可以找到 RFC 协议流程图的符号定义?

在哪里可以找到 RFC 协议流程图的符号定义?

我在读RFC5077,然后遇到了下图:

        ClientHello
        (empty SessionTicket extension)-------->
                                                         ServerHello
                                     (empty SessionTicket extension)
                                                        Certificate*
                                                  ServerKeyExchange*
                                                 CertificateRequest*
                                      <--------      ServerHelloDone
         Certificate*
         ClientKeyExchange
         CertificateVerify*
         [ChangeCipherSpec]
         Finished                     -------->
                                                    NewSessionTicket
                                                  [ChangeCipherSpec]
                                      <--------             Finished
         Application Data             <------->     Application Data

我猜想Certificate*表示可以有一个或多个Certificate[ChangeCipherSpec]表示它是可选的。但我在本文档或互联网上找不到准确的定义。我在哪里可以找到 RFC 中这些符号的解释?

答案1

你的解释与常见的 (E)BNF 和正则表达式符号一致,但实际上

* message is sent once or not at all, depending

[ChangeCipherSpec] is a different record-level type;
technically it is not a 'handshake' message even though 
it is a critical element of the handshake protocol.

RFC5077(和 4507)是对 TLS1.1 的 RFC4346 和 TLS1.0 的 RFC2246 的修改;它也适用于随后发布的 TLS1.2 的 RFC5246。(它不适用于 RFC8446 中的 TLS1.3;1.3 用一种新的临时 PSK 方法(重用会话参数)取代了旧形式的会话恢复和 5077 类型的票证,并重用了 NewTicket 消息代码与 5077 完全不同的数据。)图 1 之后紧接着说明了 * 的含义RFC5246在第 36 页,RFC4346RFC2246在第 31 页。这不是其他协议或 RFC 的标准。即使TLS1.3 的 RFC8446从而大大改变它。

相关内容