Skip to content
导航

HTTP

超文本传输协议(Hypertext Transfer Protocol,HTTP)是应用层协议。

处理HTTP协议的系统组成:客户端 - 代理 - 服务端

代理的作用:

  • 缓存。如浏览器缓存
  • 过滤。如家长控制
  • 负载均衡
  • 认证。控制访问权限
  • 日志。存储历史信息

HTTP流程

1. 打开TCP连接

TCP 连接被用来发送一条或多条请求,以及接受响应消息。
客户端可能打开一条新的连接,或重用一个已经存在的连接,或者也可能开几个新的 TCP 连接连向服务端。

2. 发送HTTP请求报文

HTTP 报文(在 HTTP/2 之前)是语义可读的。
在 HTTP/2 中,这些简单的消息被封装在了帧中,这使得报文不能被直接读取,但是原理仍是相同的。

有两种 HTTP 报文的类型,请求与响应,每种都有其特定的格式。

请求报文:

GET /index.html HTTP/1.1
Host: developer.mozilla.org
Accept-Language: zh

组成部分:

  • 方法:GET、POST等
  • 资源路径:/index.html
  • 协议版本:HTTP/1.1
  • 标头:Host、Accept-Language等
  • 请求体:POST方法在请求体内包含需要发送的资源

3. 读取服务端返回的HTTP响应报文

响应报文:

HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html

<!DOCTYPE html>…(此处是所请求网页的 29769 字节)

组成部分:

  • 协议版本:HTTP/1.1
  • 状态码:200
  • 状态信息:OK,是对状态码的描述
  • 标头:与请求标头类似
  • 响应体(可选项):包含获取到的资源

4. 关闭TCP连接或重用连接

关闭连接。HTTP1.0默认关闭

Connection: close

持久连接。HTTP1.1默认开启

Connection: keep-alive

参考资料