http协议

    技术2022-07-10  117

    HTTP协议

    ​ HTTP 协议,几乎是每个人上网用的第一个协议,同时也是很容易被人忽略的协议。

    ​ http://www.163.com 是个 URL,叫作统一资源定位符。

    HTTP 请求的准备

    浏览器会将 www.163.com 这个域名发送给 DNS 服务器,让它解析为 IP 地址。HTTP 是基于 TCP 协议的,然后建立 TCP 连接。建立连接以后,浏览器就要发送 HTTP 的请求。

    HTTP 请求的构建

    ​ HTTP 的报文大概分为三大部分。分别是请求行,请求的首部(请求头),请求的正文实体。

    HTTP 请求的发送

    ​ HTTP 协议是基于 TCP 协议的,所以它使用面向连接的方式发送请求,通过 stream 二进制流的方式传给对方。当然,到了 TCP 层,它会把二进制流变成一个个报文段发送给服务器。

    HTTP 2.0

    HTTP 2.0是从HTTP 1.0进化的

    HTTP 1.1 在应用层以纯文本的形式进行通信。每次通信都要带完整的 HTTP 的头,而且不考虑 pipeline(管道) 模式的话,每次的过程总是一去一回。这样在实时性、并发性上都存在问题。

    改进:

    HTTP 2.0 会对 HTTP 的头进行一定的压缩,将原来每次都要携带的大量 key value 在两端建立一个索引表,对相同的头只发送索引表中的索引。

    HTTP 2.0 协议将一个 TCP 的连接中,切分成多个流,每个流都有自己的 ID,而且流可以是客户端发往服务端,也可以是服务端发往客户端。它其实只是一个虚拟的通道。流是有优先级的。

    HTTP 2.0 还将所有的传输信息分割为更小的消息和帧,并对它们采用二进制格式编码。常见的帧有 Header 帧,用于传输 Header 内容,并且会开启一个新的流。再就是 Data 帧,用来传输正文实体。多个 Data 帧属于同一个流。

    ​ 通过这些机制,HTTP 2.0 的客户端可以将多个请求分到不同的流中,然后将请求内容拆成帧,进行二进制传输。这些帧可以打散乱序发送, 然后根据每个帧首部的流标识符重新组装,并且可以根据优先级,决定优先处理哪个流的数据。

    ​ HTTP 2.0 其实是将三个请求变成三个流,将数据分成帧,乱序发送到一个 TCP 连接中。

    总结:

    HTTP 2.0 成功解决了 HTTP 1.1 的队首阻塞问题,同时,也不需要通过 HTTP 1.x 的 pipeline 机制用多条 TCP 连接来实现并行请求与响应;减少了 TCP 连接数对服务器性能的影响,同时将页面的多个数据 css、js、 jpg 等通过一个数据链接进行传输,能够加快页面组件的传输速度。HTTP 2.0 通过头压缩、分帧、二进制编码、多路复用等技术提升性能;QUIC 协议通过基于 UDP 自定义的类似 TCP 的连接、重试、多路复用、流量控制技术,进一步提升性能。
    Processed: 0.010, SQL: 9