HTTP 基础回顾

HTTP 基础回顾

相信作为 WEB 开发的一员,对 HTTP 应该都不陌生吧!当 Client 需要与 Server 通信的时候,大多数情况都是采用的 HTTP 协议,这是我们日常开发中都会接触到的吧,但是你真的了解 HTTP 吗?接下来我们一起来回顾下 HTTP 吧!如果有理解的错误的地方,希望在下面留言指正,谢谢!


1. 什么是 HTTP ?

什么是 HTTP 呢?可以一句话概括:超文本传输协议。那什么叫 ”超文本传输协议“ 呢?

  • 超文本:文本、图片、视频、音频等…
  • 传输:两个或以上节点(电脑)进行传递数据
  • 协议:在计算机世界里,用机器能懂的语言进行规则的约定

简单来说:HTTP 是 两个或以上节点传输文本、图片、视频等超文本的一种协议。

而且 HTTP 是位于应用层的无状态的一种通信协议,它不会对发送过的请求和响应做持久化,于是后面引入了 Cookie 技术等。

2. HTTP 的发展

HTTP 于 1990 年问世,最早的版本叫 HTTP/0.9,至今已经更新到 HTTP/2.0 了。因为 HTTP/2.0 只支持 HTTPS 以及现在大多数浏览器还不支持的原因,普遍还是采用 HTTP/1.1 进行默认通信。

3. HTTP 版本对比

接下来我们将对各版本的一个特性进行实验分析。

3.1、HTTP/0.9

HTTP 最早的雏形版本。有如下特性:

  1. 只支持简单的 GET 请求
  2. 不支持协议头
  3. 只支持纯文本
  4. 采用短连接方式

构造一个请求:

Untitled

3.2 、HTTP/1.0

HTTP/1.0 是第二个版本,需要在请求行中指定版本号。相对于上个版本增加了几个特性:

  1. 支持”请求头部“字段和“响应头部字段”
  2. 增加了响应行
  3. 不局限于纯文本,支持图片、视频等
  4. 开始支持 POST、PUT、HEAD、DELETE 等请求方法
  5. 支持长连接(默认还是短连接,需通过设置请求头:Connection: Keep-Alive 实现长连接)

构造一个请求:

请求头一定要设置 Host 字段,防止同一个远程服务器有多个虚拟站点

请求头一定要设置 Host 字段,防止同一个远程服务器有多个虚拟站点

3.3、HTTP/1.1

这个版本又增加了什么特性呢?

  1. Pipelining

    可以一次传送多个 HTTP 请求,之前的版本每次只能发送一个请求,必须等请求响应后才能发起下一个请求。

  2. Persist Connection

    持久连接,默认支持持久连接。响应结束后不会立马关闭与远程主机的连接,可通过 WEB Servcer 服务器设置断开的时间和是否启动持久连接。

  3. Cache Controller

    缓存控制,可通过加入请求头来控制缓存,例如:Cache-Control: no-cache 等。

构造一个请求:

Untitled

3.4、HTTP/2.0

HTTP/2.0 要基于 HTTPS 才可以实现,增加了以下特性:

  1. Binary Protocol

    将请求头以二进制的的形式进行传输,提高传输速度。

  2. Multiplexing

    多工传输。上一个版本虽然可以同时发起多个请求,但是响应的时候需按顺序,这样会降低效率,现在顺序可以无序返回。

  3. Header Compression

    因为之前的版本请求头会有重复的情况,所以 Header Compression 可以对这种情况进行压缩,提高传输效率。

  4. Server Push

    服务器可以将主动的推送客户端可能需要的资源,无须每次都由客户端主动发起请求。

4. 状态码

4.1、类别

类别原因短语
1XXInformational(信息性状态码)接收的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer Error(服务器错误状态码)服务器处理请求出错

4.2、常用状态码

4.2.1、2XX

状态码原因短语描述
200OK请求正常处理
204No Content请求成功,无资源返回
206Partial Content请求成功,范围请求

4.2.2 、3XX

状态码原因短语描述
301Moved Permanently永久重定向
302Found临时重定向
303See Other与 302 有相同的功能,但是要求客户端用 GET 请求资源
304Not Modified附带请求条件不符合

4.2.3、4XX

状态码原因短语描述
400Bad Request表示请求报文中存在语法错误
401Unauthorized表示需要进行 HTTP 认证
403Forbidden请求被服务器拒绝
404Not Found请求的资源不存在

4.2.4、5XX

状态码原因短语描述
500Internal Server Error服务器内部发生错误
502Bad Gateway网关错误
503Service Unavailable服务器超负载或停机维护

以上就是简单的总结,希望能帮助到阅览的您。