http2.0 头部压缩:
http请求和响应都包含【请求行/状态行、请求/响应头部、请求数据/响应数据】。
一般而言,请求数据/响应数据都会经过gzip压缩,或者本身传输的就是压缩过后的二进制文件(如图片、音频等),但是请求行/状态行和头部多是没有经过任何压缩,而是直接以纯文本的方式进行传输的。
然而,随着web功能越来越复杂,请求数量越来越多,随之而来的就是头部的流量越来越多,并且在建立初次链接之后的链接也要发送user-agent等信息,是在是一种浪费。
因此,http2提出了对请求和响应的头部进行压缩,即不再只是压缩主题部分,这种压缩方式就是HAPCK — 其设计简单而灵活。
通过压缩,头部大小可以减少一半之多,如果后面重复发送请求,那么可能压缩后的头部大小只有原始大小的 1/10。
http1.1的长连接和http2.0的多路复用到底有啥区别?
长连接:同一个域名访问同一个文件的多个请求都可以复用一个tcp连接(不用像1.0一样 每次请求都需要重新建立连接)
依然存在的问题:1.多个请求只能被串行处理(数据基于文本,只能按顺序传输);2.访问多个不同的文件依然会建立多个请求。
多路复用:同一个域名访问多个文件的请求也可以复用一个tcp连接,且多个请求可以被并行处理。
并行实现原理:http2.0引入二进制数据帧和流的概念(数据帧对每一个数据进行标识,可以不按顺序传输,从而实现并行)
状态码:
1xx:
指示信息–表示请求已接收,继续处理
2xx:
成功–表示请求已被成功接收、理解、接受
3xx:
重定向–要完成请求必须进行更进一步的操作。
4xx:
客户端错误–请求有语法错误或请求无法实现。
5xx:
服务器端错误–服务器未能实现合法的请求。