以百度为例
在百度的服务器端首先使用非对称加密算法生成一个秘钥对
百度将自己的公钥发给 CA 证机构,CA 进行签名,生成证书
客户端访问百度的时候,百度将生成的证书发给客户端
浏览器对收到的证书进行认证
客户端确认证书没有问题后,将百度公钥从证书中取出来
这样我们就得到了百度的公钥
在客户端生成一个随机数,使用百度的公钥进行加密,发给服务器
服务器端使用私钥解密,得到了随机数,这个随机数就是对称加密的秘钥
秘钥分发完成,下面所有的通信都是使用对称加密的方式来进行的
HTTP 2.0 的优点有引入二进制分帧层、使用多路复用技术、首部压缩、服务端推送、设置请求优先级
二进制分帧层是将所有的传输信息分割为更小的消息和帧,并对它们采用二进制格式编码。
多路复用技术充分利用带宽,最大限度避免了 TCP 慢启动带来的问题,可以利用一个 TCP 连接,同时发送多个请求和响应。
首部压缩让报头更加紧凑,传输更快。客户端和服务端使用“首部表”来跟踪和存储之前发送的键值对,首部表在连接的时候是始终存在的,新增的键值对会添加在表尾,不需要每次都携带首部。
服务端推送是服务端可以根据客户端的请求,提前返回多个响应,推送额外的资源给客户端,所有推送的资源必须遵守同源策略;PUSH_PROMISE 必须遵守请求-响应原则,借着对客户端请求的响应来推送,PUSH_PROMISE帧必须在响应返回之前发送,以免客户端出现竞态条件。
设置请求优先级是在发送请求的同时,标上请求的优先级,服务器会优先处理优先级高的请求