(一)HTTP1.0和HTTP1.1的区别?
1、长链接
1.1 早期HTTP1.0的每一次请求都伴随着一次三次握手的过程,并且是串行的请求,增加了不必要的性能开销。
1.2 HTTP1.1新增了长链接的通讯方式,减少了性能消耗。.
2、管道
2.1、HTTP1.0只有串行发送,没有管道。
2.2、HTTP1.1增加了管道概念,使得在同一个TCP连接当中可以同时发出多个请求。
3、断点续传
3.1、HTTP1.0不支持断点续传。
3.2、HTTP1.1新增range字段,用来指定数据字节位置,开启了断点续传的时代。
4、Host头处理
4.1、HTTP1.0任务主机只有一个节点,所以并没有传 HOST
4.2、HTTP1.1时代,虚拟机技术越来越发达,一台机器上也有可能有很多节点,故增加了HOST 信息。
5、缓存处理
5.1、在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准。
5.2、HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodifed-Since,If-Match,If-None-Match等更多可供选择的缓存头来控制缓存策略。
6、错误状态响应码
在HTTP1.1中新增了24个错误状态响应码,如410(Gone)表示服务器上的某个资源被永久性的删除等。
(二)HTTP2.0于http1.1的区别?
1、二进制协议
http2采用二进制传输,比文本传输的httpl更安全。
2、多路复用
2.1 http2一个连接可以发送多个请求或回应,httpl在一个连接里,只能发送一个请求或回应。
2.2 http2在应用层(HTTP) 和传输层(TCP)之间增加一个二进制分帧层。是http2实现多路复用的基础,帧是HTTP2通信的最小单位。
3、头信息压缩
http2用qzip或compress对头信息进行压缩后再发送,并且在客户端与服务器端同时维护了一份头信息索引表,只需根据索引id就可以进行头信息的传输,这样就能提高速度。
4、数据流
http2使用了数据流的概念。因为http2的数据包是不按顺序发送的。http2将每个请求或回应的所有数据包,称为一个数据流。每个数据流都有一个独一无二的编号,每个数据包都必须标记数据流的ID,用来区分它属于哪个数据流。
5、服务器推送
Server Push,浏览器发送一个请求,服务器主动向浏览器推送与这个请求相关的资源,避免浏览器花过多的时间逐个请求资源。
6、http1.1存在的问题
6.1 文本传输不安全
6.2 线头阻塞,一个TCP链接只能处理一个请求或响应。
6.3 Header内容多,没有相应的压缩传输优化方案。