HTTP 报文
书接上文,HTTP 报文是由一行一行的简单纯文本字符串组成,从 Web 客户端发往务器的 HTTP 报文称为请求报文,相对的,从服务器发往客户端的报文称为响应报文:
请求报文和响应报文的格式类似,都由三部分组成:
- 起始行:报文的第一行就是起始行,在请求报文中用来说明要做什么,在响应报文中说明出现了什么情况。
- 首部字段:起始行后面有零个或多个首部字段,每个首部字段包含一个名字和对应的值,为了便于解析,两者之间用冒号分隔,在请求报文中我们将其称作请求头,在响应报文中我们将其称作响应头。
- 主体:报文主体和首部字段之间通过一个空行分隔,请求主体中包含了要发送给 Web 服务器的数据(一般 POST 请求都会包含请求主体,GET 请求参数都在 URL 里面,请求主体一般为空),响应主体中包含了服务器返回给客户端的数据,一般是 HTML 文档或者 JSON 格式数据。
HTTP 连接的建立
HTTP 基于 TCP 协议进行可靠的数据传输:
HTTP 协议是一个应用层协议,它无需关心操作网络通信的具体细节,而是把联网的细节都交给了底层的 TCP/IP 协议。在 HTTP 客户端向服务器发送报文之前,需要通过网络层的 IP 地址和传输层的端口号建立起一条 TCP/IP 连接。IP 地址和端口号可以从请求 URL 中获取,IP 地址通过 DNS 查询域名获取,端口号不写的话默认是 80。
具体连接建立步骤如下:
- 浏览器从 URL 中解析出服务器的域名;
- 浏览器将服务器的域名替换为服务器的 IP 地址(通过 DNS 获取);
- 浏览器将端口号从 URL 中解析出来(默认是 80);
- 浏览器建立一条与 Web 服务器的 TCP 连接;
- 浏览器向服务器发送一条 HTTP 请求报文;
- 服务器收到浏览器请求后进行处理并回送一条 HTTP 响应报文;
- 浏览器收到响应后将其显示出来。
HTTP 协议版本变迁
1)HTTP/0.9
HTTP 于 1990 年问世,那时的 HTTP 并没有作为正式的标准被建立,这个版本的 HTTP 其实含有 HTTP 1.0 之前版本的意思,所以被称为 HTTP/0.9。
2)HTTP/1.0
HTTP 正式作为标准被公布是在 1996 年 5 月,版本被正式命名为 HTTP/1.0,并记载于 RFC 1945。
3)HTTP/1.1
1997 年 1 月份公布的 HTTP/1.1 是目前主流的 HTTP 协议版本,当初的标准是 RFC 2068,之后发布的修订版 RFC 2616 就是当前的最新版本。
HTTP/1.0 每次请求都会建立连接,返回响应后断开连接,而 HTTP/1.1 可以在一条连接上处理多个请求,从而提升了性能。
4)HTTP-NG(又名 HTTP/2.0)
重点关注的是 HTTP 性能的大幅优化,以及更加强大的服务逻辑远程执行框架。
评论区