服务器如何记住在TLS握手协商的密码套件?

我无法在任何地方find令人满意的答案。 希望在这里得到一些喘息!

Client和Server进行握手,决定一个密码套件使用X.

现在,下一次客户端发送请求(普通),它将被encryption,然后发送。

考虑下面的图表:

请求回应

在这里,在Transaction1密码套件是协商? 请求在Transaction2中发送。 由于http是无状态协议,Transaction2将不知道Transaction1,那么它是如何知道协商的? 是使用会话还是这个信息与每个请求一起发送? 在任何一种情况下,都必须解密请求以找出sessionid或密码套件。 所以我不认为这是做到这一点。

当使用TLS会话caching时,会话ID由客户端清晰地提供 ,作为启动TLS握手的ClientHello消息的一部分。 (因此,不需要解密来找出TLS会话ID)。然后,服务器可以检查其caching中的该会话ID,并查找为该会话IDcaching的先前协商的SSL会话信息,该会话ID将包括(除其他之外)密码套件协商。

另一方面,如果使用TLS会话票据,则TLS会话信息(包括密码套件)由服务器encryption ,并由客户端caching(类似于cookie)。 当客户端与该服务器接下来执行TLS握手时,它将发送这个encryption的“会话票据”; 服务器对票证进行解密,并获得(除其他之外)所协商的密码套件。

希望这可以帮助!