HTTP 使用指南一| 青训营笔记

40 阅读3分钟

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

什么是HTTP ?

HTTP(Hyper Text Transfer Protocol):超文本传输协议,是互联网上应用最为广泛的—种网络协议。 客户端和服务端通过交换各自的消息(与数据流正好相反)进行交互。 HTTP是应用层的协议,通过TCP,或者是TLS-加密的TCP连接来发送,理论上任何可靠的传输协议都可以使用。

HTML简单可扩展,通常用来传输超文本文档、图片、视频或者表单等相关信息。 HTTP是无状态,有会话的 在同一个连接中,两个执行成功的请求之间是没有关系的。

协议分析

代码

1.png

2.png

3.png

状态码

200 OK-客户端请求成功
301 - 资源 (网页等)被永转移到其它 URL
302 - 临时跳转
401 Unauthorized-请求未经授权
404 - 请求资源不存在,可能是输入了错误的URL
500 -服务器内部发生了不可预期的错误
504 Gateway Timeout-网关或者代理的服务器无法在规定的时间内获得想要的响应
  • RESTfulAPI:一种API设计风格;REST Representational State Transfer

11.png

  • 常用请求头

12.png

  • 常用响应头

13.png

  • 缓存 14.png cookie

HTTP/2:更快、更稳定、更简单

  • 帧:HTTP/2 数据通信的最小单位,请求和响应等,消息由一个或多个帧组成,每个帧都包含帧头,至少也会标识出当前帧所属的数据流。。
  • 流:存在于连接中的一个虚拟通道。流可以承载双向消息,每个流都有一个唯一的整数ID。
  • HTTP/2 采用二进制格式传输数据,而非 HTTP 1.x 的文本格式,二进制协议解析起来更高效。
  • HTTP/2 中,同域名下所有通信都在单个连接上完成,该连接可以承载任意数量的双向数据流。每个数据流都以消息的形式发送,而消息又由一个或多个帧组成。多个帧之间可以乱序发送,根据帧首部的流标识可以重新组装。
  • 消息: 与逻辑请求或响应消息对应的完整的一系列帧。
  • 数据流: 已建立的连接内的双向字节流可以承载一条或多条消息。
  • HTTP/2 连接都是永久的,而且仅需要每个来源一个连接
  • 流控制: 阻止发送方向接收方发送大量数据的机制

HTTPS

  • HTTPS 协议是由 HTTP 加上 TLS / SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过 数字证书 、 加密算法 、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。
  • (1)数据保密性:保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么 。
  • (2)数据完整性:及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收 。
  • (3)身份校验安全性:保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方。
  • 对称加密: 加密和解密都是使用同一个密钥
  • 非对称加密:加密和解密需要使用两个不同的密钥: 公钥 (public key)和私钥 (private key)