HTTP协议|青训营

81 阅读3分钟

HTTP是什么

    HTTP,是指超文本传输协议(Hypertext Transfer Protocol),是一种基于请求、响应模式的、无状态的应用层协议,它以多种方式来传输数据,包括文本、图片、音频和视频等。HTTP 是互联网上使用范围最广的协议之一,其应用于万维网(WWW)发布和收集信息,它允许在不同的主机之间进行通讯,促使客户端和服务器进行数据交换和共享资源。

万维网(World Wide Web),简称 WWW,是一种基于超文本组织架构,通过互联网进行访问的跨平台的、分布式的信息管理系统或服务。由英国科学家 Tim Berners-Lee 在 1989 年创立,是互联网的重要应用之一。它是一个由互联网上遍布世界各的服务器组成的信息系统,可让用户在任何一个连接 Internet 的地方访问它所提供的信息。

HTTP的响应-请求模式

    HTTP 协议采用请求-响应模式,它客户端发起一个请求,服务器发出回应的方式进行通信。客户端发出请求口,服务器向客户端传递响应的结果。请求方式常见有 GET、POST、PUT、DELETE 等,但实际应用中并不限于这几种,HTTP 协议定义了一套通用协议,这意味着可以扩展出新的请求方法来满足特定需求。

HTTP请求格式

  • HTTP 请求消息通常由下面三个部分组成:
  1. 请求行,由请求方法、请求 URL 和 HTTP 版本组成;
  2. 请求头部,描述请求客户端的属性和当前请求的属性;
  3. 请求数据,消息体,通常在 POST 或 PUT 请求中发送数据。

HTTP响应格式

  • HTTP 响应消息通常由下面三个部分组成:
  1. 状态行,由 HTTP 版本、状态码和对应状态消息,
  2. 响应头部,描述响应的属性和当前响应的属性;
  3. 响应数据,消息体,通常返回数据。

HTTP版本

HTTP 整个协议共有两个版本,分别为 HTTP/1.0 和 HTTP/1.1,HTTP/2.0 版本及以上。

1.0版本

  • 不支持持久连接(keep-alive),即完成一次 HTTP 事务就会断开连接,下次请求需要重新建立连接;
  • 不支持管道(Pipelining),是指不能在 Server 回应之前,在同一条连接上传送多个发送到 Server 的请求;
  • 不支持缓存和分块传输。

1.1版本

  • 支持持久连接(keep-alive),一条 TCP 连接可以传输多个 HTTP 请求和响应;
  • 支持管道(Pipelining),允许同时发送多个请求,在上一个请求还没收到响应已经开始传输下一个请求;
  • 支持缓存(Caching)和分块传输(Chunked)。

2.0版本

  • 二进制协议,数据直接采用二进制传输;
  • 多路复用,一个连接可以承载多个同时进行的双向数据流;
  • 首部压缩,减少了首部量,节约了带宽;
  • 服务端推送,服务器一次发送多个 HTTP 请求;
  • 服务器端流控,控制服务器进行多少请求操作。

HTTPS版本

    一种在 HTTP 和 TCP 之间插入一层 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议,建立在安全的 TLS 连接基础上的 HTTP 协议,使用加密和身份验证机制,除了在安全性上比 HTTP 更好以外,其基本的请求与响应机制和 HTTP 相同。