HTTP实用指南 | 青训营笔记

49 阅读2分钟

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

初识HTTP

(背景知识:什么是HTTP,其基本特点)
思考:从地址框中输入的字符串经历了怎样的过程变成了所显示的页面?

什么是HTTP

  • Hyper Text Transfer Protocol 超文本传输协议
  • 应用层协议,基于TCP协议
  • 请求 响应
  • 简单可扩展
  • 无状态

协议分析

(报文结构,发展历程)

发展

1.Http/0.9单行协议

  • 请求GET/mypage.html
  • 响应只有HTML文档

2.Http/1.0构建可扩展性

  • 增加了Header
  • 有了状态码
  • 支持多种文档类型

3.Http/1.1标准化协议

  • 链接复用
  • 缓存
  • 内容协商

4.Http/2更优异的表现

  • 二进制协议
  • 压缩header
  • 服务器推送

5.Http/3草案

报文

Method

  • Safe(安全的):不会修改服务器的数据的方法
  • idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是idempotent的

状态码

  • 200:客户端请求成功
  • 404:请求资源不存在
  • 500:服务器内部发生错误
  • ......

RESTful API(一种API设计风格)

  • 每一个URI代表一种资源
  • 客户端和服务器之间,传递这种资源的某种表现层
  • 客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”

缓存

  • 时间戳 Expires
  • Cache-Control
  • Etag/If-None-Match:资源的特定版本的标识符,类似于指纹
  • Last-Modified/If-Modified-Since:最后修改时间

发展Http/2
更快、更稳定、更简单

  • 帧(frame):Http/2通信的最小单位,每帧都包含帧头,至少也会标识出当前帧所属数据流
  • 消息:与逻辑请求或响应消息对应的完整的一系列帧
  • 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息
  • Http/2连接都是永久的,而且仅需要每个来源一个连接
  • 流控制:阻止发送方向接收方发送大量数据的机制

HTTPS

  • HTTPS:Hypertext Transfer Protocol Secure
  • 经过TSL/SSL加密
  • 对称加密:加密和解密都是使用同一个密钥
  • 非对称加密:加密和解密需要使用两个不同的密钥:公钥、私钥