HTTP使用指南之初识HTTP协议 | 青训营笔记

17 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

1. HTTP 协议的基本定义

什么是HTTP协议

HTTP 是一种能够获取如 HTML 这样的网络资源的** protocol(通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的 Web 文档通常是由不同的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。

image.png

客户端和服务端通过交换各自的消息(与数据流正好相反)进行交互。由像浏览器这样的客户端发出的消息叫做请求(request),被服务端响应的消息叫做响应(response)。 image.png

2. HTTP 协议主要特征

HTTP 是简单的

HTTP 是可扩展的

HTTP 是无状态,有会话的

3. HTTP 协议发展历程

HTTP是万维网的基础协议。如今,HTTP 已经从一个只在实验室之间交换文件的早期协议进化到了可以传输图片,高分辨率视频和 3D 效果的现代复杂互联网协议。

image.png

4. HTTP 协议的报文结构

HTTP/1.1 以及更早的 HTTP 协议报文都是语义可读的。在 HTTP/2 中,这些报文被嵌入到了一个新的二进制结构,帧。帧允许实现很多优化,比如报文标头的压缩以及多路复用。即使只有原始 HTTP 报文的一部分以 HTTP/2 发送出来,每条报文的语义依旧不变,客户端会重组原始 HTTP/1.1 请求。因此用 HTTP/1.1 格式来理解 HTTP/2 报文仍旧有效。 有两种 HTTP 报文的类型,请求与响应,每种都有其特定的格式。

请求

请求由以下元素组成:

  • 一个 HTTP 的请求方法,经常是由一个动词像 GETPOST 或者一个名词像 OPTIONSHEAD 来定义客户端的动作行为。通常客户端的操作都是获取资源(GET 方法)或者发送 HTML 表单(POST 方法),虽然在一些情况下也会有其他操作。
  • 要获取的资源的路径,通常是上下文中就很明显的元素资源的 URL,它没有 protocol(http://),domain(developer.mozilla.org),或是 TCP 的 port (en-US)HTTP 一般在 80 端口)。
  • HTTP 协议版本号。
  • 为服务端表达其他信息的可选标头]。
  • 对于一些像 POST 这样的方法,报文的主体(body)就包含了发送的资源,这与响应报文的主体类似。

响应

响应报文包含了下面的元素:

  • HTTP 协议版本号。
  • 一个状态码(状态码(status code)),来告知对应请求执行成功或失败,以及失败的原因。
  • 一个状态信息,这个信息是非权威的状态码描述信息,可以由服务端自行设定。
  • HTTP 标头,与请求标头类似。
  • 可选项,比起请求报文,响应报文中更常见地包含获取资源的主体。