Http实用指南 | 青训营笔记

64 阅读3分钟

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

初识-什么是HTTP协议?

image.png 上面这幅图是一般浏览网页所经历的步骤。

  • TCP/IP 四层网络模型image.png
  • HTTP协议是Hyper Text Transfer Protocol 超文本传输协议的英文简称,它是应用层协议,基于TCP协议,用于请求响应。
  • 特点:简单可扩展,无状态

协议分析

发展历程

image.png

报文(以HTTP/1.1为例)

image.png

  • Method 方法 |方法 |说明 | | --- | --- | | GET |请求一个指定资源的表示形式,使用Get的请求应该只被用于获取数据 | | Post | 用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用| | Put | 用请求有效载荷替换目标资源的所有当前表示| | DELETE | 删除指定的资源| | HEAD| 请求一个与GET请求的响应相同的响应,但没有响应体| | CONNECT | 建立一个到有目标资源标识的服务器的隧道| | OPTIONS | 用于描述目标资源的通信选项| | TRACE | 沿着到目标资源的路径执行一个消息环回测试 | |PATCH|用于对资源应用部分修改|
  • Method 的特点属性
    • Safe(安全的):不会修改服务器的数据的方法
    • Idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的;所有Safe的方法都是Idempotent的
    • Get HEAD OPTIONS PUT DELETE
  • 状态码image.png
    • 常见的状态码 | 状态码 | 作用 | |----|----| |200 OK|客户端请求成功| |301|资源(网页等)被永久转移到其他URL| |302|临时跳转| |401 Unauthorized|请求未经授权| |404|请求资源不存在,可能是输入了错误的URL| |500|服务器内部发生了不可预期的错误| |504 Gateway Timeout|网关或者代理的服务器无法在规定的时间内获得想要的响应|
    • RESTful API(一种API设计风格;REST-Representational State Transfer)
      • 每个URI代表一种资源image.png
      • 客户端和服务器之间,传递这种资源的某种表现层
      • 客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”
  • 常用的请求头image.png
  • 常用的响应头image.png
  • 缓存
    • 强缓存
      • Expires,时间戳
      • Cache-Control
        • 可缓存性
          • no-cache:协商缓存验证
          • no-store:不使用任何缓存
        • 到期
          • max-age:单位是秒,存储的最大周期,相对于请求的时间
        • 重新验证 * 重新加载
          • must-revalidate:一旦资源过期,在成功向原始服务器验证之前,不能使用
    • 协商缓存
      • Etag/If-None-Match:资源的特定版本的标识符,类似于指纹
      • Last-Modified/If-Modified-Sine:最后修改时间
  • 缓存使用验证过程image.png
  • cookie
    • set-cookie-response image.png

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

  1. 帧(frame)
    • 帧是 HTTP/2 通信的最小单位,每个帧都包括帧头,至少也会标识出当前帧所属的数据流。
    • 帧采取二进制编码,配合压缩算法,使得传输更快更高效
  2. 消息
    • 与逻辑请求或响应消息对应的完整的一系列帧。
  3. 数据流
    • 已建立的连接内的双向字节流,可以承载一条或多条消息。
    • 交错发送,接收方重组织
  4. HTTP/2的特点
    • HTTP/2连接都是永久的,而且仅需要每个来源一个连接
    • 流控制:阻止发送方向接受方发送大量数据的机制
    • 服务器推送image.png

HTTPS概述

在HTTP基础上经过TSL/SSL加密

  • 对称加密:加密和解密都是使用同一个密钥
  • 非对称加密,加密和解密需要使用两个不同的密钥:公钥和私钥