HTTP 1.0
只有GET命令
每个TCP连接只能发送一个请求 ,复用: connection:keep-alive;
只支持HTML格式数据
HTTP 1.1
多种数据格式支持
引入了持久连接(persistent connection),即TCP连接默认不关闭,可以被多个请求复用 ,connection:close 关闭
管道机制(pipelining):客户端可同时发送多个请求,但服务端还是按顺序返回,如果前面的请求回应慢,下一个请求就要等待。content-length:区分请求
问题:“队头阻塞” 解决:一是减少请求数;二是同时多开持久连接
transform-encoding 分块编码传输
HTTP 2.0:
多工:服务端处理请求不用按顺序,谁先处理完回应谁
数据流:可以发信号取消数据流发送,但同时保持TCP连接,其他请求可以用
头信息压缩
服务器推送
SSL:
非对称加密:客户端使用服务端发送的公钥(放在数字证书中)加密信息,服务端收到密文后使用私钥解密;公钥加密计算量大,效率不高
对称加密 :服务端和客户端都生成对话秘钥,用它加密信息,而对话秘钥是对称加密,速度非常快。而公钥用来加密对话秘钥。
第一次建立连接需要公钥加密,后续通信都是对称加密。