http1.0协议
无状态:借助COOKIE/SESSION 传递身份,状态等信息
无连接:每次客户端和服务端发送请求都要建立新的连接
队头阻塞:下一个请求必须在上一个请求的响应到达之后才能发送
http1.1
长连接 keep-alive:客户端和服务器端的连接保持不断开
管道化:FIFO 解决了队头阻塞,一个请求的发送不用等到上一个请求的响应返回之后才发送,客户端可以同时发送多个request,但是服务端必须一个一个的响应
缓存处理 cache-control:服务端为了遵守fifo的原理(按照资源的重要程度进行排列HTML>CSS,JS,CSS>图片),如果先后收到requestA和B,A的资源优先级比B高。requesrA处理10m,requestB处理1m先处理好,就将响应B存放在缓冲区
增加host字段:可以实现在一台服务器的IP和端口建立多个虚拟web站点,访问的域名server
支持断点续传:range(客户端请求传字节的位置)、 content-range(服务器端传输字节的范围)、Accept-range:bytes(服务端支持断点续传)
http2.0
二进制协议
http2 客户端与服务器端值建立了一个tcp连接,该连接在交互期间一直处于打开状态
客户端与服务器端的连接是通过流来进行传递的 一条消息包含一个完整的帧序列
报头压缩,标头信息相同的不会重新发
流优化 ,每个流都有一个优先级,确定该流的处理顺序,
服务器推送,如果服务器预测客户端的资源需求,会在请求处理前,将这些资源发送到客户端
服务器会发送一个PUSH_PROMISE帧,但是客户端可以通过RST_STREAM帧为响应拒绝推送
流控制 ,打开连接后,客户端会和服务端互相交换SETTINGS帧来确定流控制窗口的大小,默认值为65kb,可以通过WINDOW_UPDATE帧为流控制设置不同的大小