HTTP是一种应用协议,底层的TCP连接可以关闭并重新打开而不影响HTTP应用(除了性能)。
使用HTTP1.1我们使用持久连接,但服务器或客户端仍然可以随时关闭连接。
为了安全起见,HTTP通过SSL/TLS使用TCP。
我的理解是SSL类似于一个应用程序,至少这是TCP“看待”SSL的方式。
我的问题是,如果安全连接建立后底层的TCP套接字在某个时候关闭,这是否意味着SSL会话变得无效,各方需要重新开始SSL握手?还是说底层的TCP连接与TLS会话无关?
谢谢!
http://publib.boulder.ibm.com/httpserv/ihsdiag/ihs_performance.html#SSL :
SSL会话是客户端和Web服务器之间进行安全通信的逻辑连接。在建立SSL会话期间,使用公钥加密来交换客户端和服务器之间的共享秘密主密钥,并确定通信的其他特性,如密码。随后,在会话期间进行的数据传输使用对称密钥加密和解密,使用在SSL握手期间创建的共享密钥。
共享密钥的生成非常消耗CPU。为了避免为每个TCP连接生成共享密钥,可以重用相同的SSL会话进行多个连接。客户端必须在随后的握手中请求重用相同的SSL会话,并且服务器必须缓存SSL会话标识符。当满足这些要求时,随后的TCP连接的握手所需的服务器CPU要少得多(在某些测试中可减少80%)。目前所有主要的web浏览器都能够重用相同的SSL会话。但是,某些自定义的web客户端可能没有必要的支持。