我用Wireshark
监控了一些网站的包,发现TLS 1.2的通信模式非常多。
第一个是通用的:
Client: Client Hello
Server: Server Hello, Certificate, Server Hello Done
Client: Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
Server: Change Cipher Spec, Encrypted Handshake Message
第二个如下:
我只是对为什么 Certificate
和 Server Hello Done
在另一个包中感到困惑。谁要求服务器这样做?什么原因?
多次刷新页面后,得到第三个:
握手中只有3个包?漏掉了很多进程,是不是缓存了信息?那么预主 key 呢?
感谢您的回答!
最佳答案
TLS 是基于 TCP 的协议(protocol),即基于流式传输协议(protocol)。对于传输,数据流被拆分成数据包,因此 ServerHelloDone 可能包含在一个数据包或另一个数据包中,甚至拆分为两个数据包。由于大小在您的第二个示例中可见,但在第一个示例中不可见,因此不知道为什么会出现这种差异,但这可能是由握手中包含的证书大小引起的。
至于第三个示例:这是简单的 TLS session 重用,即它继续旧 session ,因此不需要发送服务器证书或类似内容。
关于ssl - TLS 1.2 中的不同通信模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43045303/