HTTP1.0、HTTP1.1、HTTP2.0的关系和区别?
1 个回答
杯中之物从来不能消愁补过刘峰#### 二、HTTP1.0: - **无连接**:浏览器每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接。 - **无状态**:服务器不跟踪每个客户端,也不记录过去的请求。 #### 三、HTTP1.1: - **长连接**:HTTP/1.1默认使用`Connection: keep-alive`,避免了连接建立和释放的开销。服务器必须按照客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容。 - **Content-Length**:通过Content-Length字段判断当前请求的数据是否已经全部接收。 - **管道化**:允许客户端在收到HTTP响应之前发送多个HTTP请求,提升了传输效率。 #### 四、HTTP2.0: - **二进制分帧**:HTTP/2引入二进制数据帧和流的概念,对数据进行顺序标识,使得浏览器可以按照序列对数据进行合并,避免数据错乱。通过序列标识,服务器可以并行传输数据。 - **流(stream)**:已建立连接上的双向字节流。 - **消息**:与逻辑消息对应的完整的一系列数据帧。 - **帧**:HTTP2.0通信的最小单位,每个帧包含帧头部,至少也会标识出当前帧所属的流(stream id)。 - **多路复用**: - 所有HTTP2.0通信都在一个TCP连接上完成,这个连接可以承载任意数量的双向数据流。 - 每个数据流以消息的形式发送,消息由一或多个帧组成。这些帧可以乱序发送,然后再根据每个帧头部的流标识符(stream id)重新组装。 - 多路复用避免了HTTP1.1中同一时间只能处理一个请求的限制,实现了真正的并行传输。 - 可以设置数据流的优先级和依赖关系,优先级高的数据流会被服务器优先处理和返回。 - **头部压缩**:HTTP2.0使用头部压缩(HPACK),减少需要传输的header大小。通讯双方各自缓存一份header fields表,避免了重复header的传输,减小了传输大小,从而降低延迟。 - **服务器推送**:服务器除了响应客户端的请求外,还可以额外向客户端推送资源,无需客户端明确请求。 ### 总结 HTTP/1.0到HTTP/2.0的演进,主要在于解决HTTP/1.0和HTTP/1.1中存在的连接开销和性能瓶颈问题。HTTP/2.0通过引入二进制分帧、多路复用、头部压缩和服务器推送等技术,实现了更高效、更低延迟的网络通信。发布于 2024-08-08 01:56 •IP属地 江西举报评论收藏
公众号进入网站体验更佳

