侧边栏壁纸
  • 累计撰写 244 篇文章
  • 累计创建 16 个标签
  • 累计收到 0 条评论
隐藏侧边栏

HTTP 协议概述(三):总体概览(下)

kaixindeken
2021-04-21 / 0 评论 / 0 点赞 / 86 阅读 / 1,442 字

HTTP 报文

书接上文,HTTP 报文是由一行一行的简单纯文本字符串组成,从 Web 客户端发往务器的 HTTP 报文称为请求报文,相对的,从服务器发往客户端的报文称为响应报文:

1.jpeg

请求报文和响应报文的格式类似,都由三部分组成:

  • 起始行:报文的第一行就是起始行,在请求报文中用来说明要做什么,在响应报文中说明出现了什么情况。
  • 首部字段:起始行后面有零个或多个首部字段,每个首部字段包含一个名字和对应的值,为了便于解析,两者之间用冒号分隔,在请求报文中我们将其称作请求头,在响应报文中我们将其称作响应头。
  • 主体:报文主体和首部字段之间通过一个空行分隔,请求主体中包含了要发送给 Web 服务器的数据(一般 POST 请求都会包含请求主体,GET 请求参数都在 URL 里面,请求主体一般为空),响应主体中包含了服务器返回给客户端的数据,一般是 HTML 文档或者 JSON 格式数据。

HTTP 连接的建立

HTTP 基于 TCP 协议进行可靠的数据传输:

1.jpeg

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 性能的大幅优化,以及更加强大的服务逻辑远程执行框架。

0

评论区