HTTP实用指南 | 青训营笔记

119 阅读2分钟

HTTP实用指南 | 青训营笔记

这是我参与【第四届青训营】笔记创作活动的第5天

一、初识
什么是HTTP
  • Hyper Text Transfer Protocol超文本传输协议
  • 应用层协议,基于TCP
  • 请求响应
  • 简单可扩展
  • 无状态
二、协议分析
协议发展

HTTP/0.9单行协议

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

HTTP/1.0构建可扩展

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

HTTP/1.1标准化协议

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

HTTP/2更优异的表现

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

HTTP/3草案

报文

image-20220803165826813

Method

image-20220803170318381

状态码

image-20220803170609710

RESTful API

一种API设计风格;REST——Representational State Transfer

(1)每个URI代表一种资源;

(2)客户端和服务器之间,传递这种资源的某种表现层;

(3)客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”

image-20220803171002706

常用请求头

image-20220803171034134

常用响应头

image-20220803171103889

缓存

强缓存

  • Expires,时间戳
  • Cache-Control
    • 可缓存性
      • no-cache:协商缓存验证
      • no-store:不使用任何缓存
    • 到期
      • max-age:单位是秒,存储的最大周期,相对于请求的时间
    • 重新验证*重新加载
      • must-revalidate:一旦资源过期,在成功向原始服务器验证之前,不能使用

协商缓存

  • Etag/If-None-Match:资源的特定版本的标识符,类似于指纹
  • Last-Modified/If-Modified-Since:最后修改时间 image-20220803171739417.png
cookie

image-20220803184729238.png

HTTP/2概述

帧(frame):HTTP/2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流

  • 二进制

消息:与逻辑请求或响应消息对应的完整的一系列帧

数据流:已建立的连接内的双向字节流,可以承载一条或多条消息

  • 交错发送,接收方重组织

  • HTTP/2连接都是永久的,而且近需要每个来源一个连接

  • 流控制:阻止发送方向接收方发送大量数据的机制

  • 服务器推送

HTTPS概述
  • Hypertext Transfer Protocol Secure
  • TSL/SSL加密
  • 对称加密:加密和解密都是使用同一个密钥
  • 非对称加密:加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)