HTTP 使用指南 | 青训营笔记

128 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

HTTP简介

HTTP(Hyper Text Transfer Protocol):超文本传送协议,定义了浏览器与万维网服务器通信的格式和规则
HTTP操作的大致过程如下 image.png 在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则。这些格式和规则就是超文本传输协议HTTP
HTTP特点

  • HTTP 是面向事务的 (transaction-oriented) 应用层协议。
  • 使用 TCP 连接进行可靠的传送。
  • HTTP 协议本身也是无连接的,即通信双方在交换HTTP报文之间不需要先建立HTTP连接(注意和TCP连接区分)
  • 是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础
  • 无状态(stateless),即服务器不会记住客户访问的次数,简化了服务器的设计,使服务器更容易支持大量并发的 HTTP 请求。

请求一个万维网文档所需的时间 image.png 所需的时间 >= RTT(三报文握手建立 TCP 连接) + RTT(请求和接收文档)+ 文档的传输时间 = 2 RTT +文档的传输时间

HTTP发展历程

image.png

  1. 1997年以前HTTP/1.0[RFC 1945] 主要缺点:
  • 每请求一个文档就要有两倍 RTT 的开销。
  • 客户和服务器每一次建立新的 TCP 连接都要分配缓存和变量。
  • 这种非持续连接使服务器的负担很重。
  1. 现在普遍使用的是HTTP/1.1[RFC 7231] 使用持续连接(persistent connection),即服务器在发送响应后仍然在一段时间内保持这条连接(不释放),使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。只要文档都在同一个服务器上,就可以继续使用该 TCP 连接。 分为2种工作方式:
  • 非流水线方式 (without pipelining):客户在收到前一个响应后才能发出下一个请求
  • 流水线方式 (with pipelining):客户在收到HTTP的响应报文之前就可连续发回相应报文
  1. 2015年以后:HTTP/2[RFC 7540]
  • 服务器可以并行发回响应(使用同一个 TCP 连接)。
  • 允许客户复用 TCP 连接进行多个请求。
  • 压缩首部(header)
  • 向后兼容,即兼容之前的版本
    目前主流的浏览器都支持HTTP/2

image.png