HTTP协议的工作流程是什么?

HTTP(Hypertext Transfer Protocol)是万维网的数据通信协议。用于定义浏览器和服务器之间互联的规则,以及资源请求和应答的格式。

HTTP协议工作在客户端-服务端架构上。客户端通过URL向服务端请求资源,服务端接受请求并返回响应,包含客户端所请求的数据。

例如:
客户端请求:

GET /index.html HTTP/1.1
Host: www.example.com

服务端响应:

HTTP/1.1 200 OK
Content-Type: text/html

<html>
    <body>
        <h1>Hello, world!</h1>
    </body>
</html>

HTTP协议目前主要有3个版本:

  1. HTTP/1.0:第一个正式版本,存在一些弊端如无法重用TCP连接等。
  2. HTTP/1.1:于1999年提出,主要改进了1.0版本的弊端,引入了持久连接和数组等概念。目前使用最广泛的版本。
  3. HTTP/2:于2015年发布,主要优化了1.1版本,采用二进制分帧层来代替1.1版本的文本,并支持请求与响应多路复用,头部压缩等新特性。

示例:
HTTP/1.1 请求头:

GET / HTTP/1.1 
Host: www.example.com
Connection: keep-alive
...

HTTP/2请求头:

[16][1][6,4,h,e,l,l,3]  # Length, Type, Payload 
[24][1][3]
[32][2][3,3,3]
...

HTTP工作流程主要分为以下几步:

  1. 客户端连接到服务端。
  2. 客户端向服务端发送HTTP请求报文。包含请求方法,URL,协议版本等。
  3. 服务端接受并解读客户端请求。
  4. 服务端返回HTTP响应报文。包含响应状态码,响应头部和响应体的数据。
  5. 客户端解读服务端响应,并视情况继续发送请求或关闭连接。

示例:
客户端请求:

GET /index.html HTTP/1.1 
Host: www.example.com

服务端响应:

HTTP/1.1 200 OK  
Content-Type: text/html

<html>  
    <body>  
        <h1>Hello, world!</h1>
    </body>
</html>