简要 网络协议

199 阅读3分钟

简要HTTP

HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。

为了应用程序之间的通信而建立的通信规范

优缺点

优点

HTTP 最凸出的优点是简单、灵活和易于扩展、应用广泛

  1. 简单 HTTP 基本的报文格式就是 header + body ,头部信息也是 key-value 简单文本的形式,易于理解
  2. 灵活和易于扩展 HTTP协议里的各类请求方法、URI/URL、状态码、头字段等每个组成要求都没有被固定死,都允许开发人员自定义和扩充

缺点

  1. 无状态
  2. 明文传输
  3. 安全性低

结构

image-20210401115811977

报文首部

请求

image-20210401115915936

image-20210401120330272

响应

image-20210401120035101

image-20210401120354909

image-20210401120406955

通用首部字段

image-20210401120615243

实体首部字段

image-20210401120547155

其他字段

image-20210401123043984

报文主体

状态码

image-20210401001522275

2XX

  • 200 正常处理请求
  • 204 完成请求但没有资源返回
  • 206 应对对范围请求,返回资源的一部分

3XX

  • 301 永久重定向,对应的资源永久更改了位置
  • 302 临时重定向,对应的资源已分配了新的URI,本次访问使用新的URI
  • 303 与302类似,但明确表示客户端应该采用Get方法获取资源
  • 304 附带条件的请求,服务端允许访问资源。但条件不符合
  • 307 临时重定向,遵照浏览器协议不会从POST改为Get

4XX

  • 400 请求报文存在语法错误,服务端无法解析
  • 401 需要有通过认证的认证信息,否则不允许访问(没有权限)
  • 403 禁止访问资源
  • 404 无法找到资源

5XX

  • 500 服务端发生报错
  • 503 无法处理请求 处于超负载或停机维护状态

HTTPS

image-20210401145143258

HTTP安全缺陷

  • 使用明文传输
  • 无状态,无法验证通信方身份

可能产生的问题

  • 通信内容被窃听
  • 通信内容被篡改
  • 访问了伪装成正规网站的假网站

解决办法

  • 信息加密
  • 校验机制
  • 身份证书

实现

  • 混合加密
    • 非对称加密传输密钥
    • 对称加密传输信息
  • 摘要验证
    • 摘要算法形成密文摘要,传输完后 收到信息的一方通过摘要算法得到收到信息的 摘要 与原摘要对比是否相同
  • 数字证书
流程

CA公钥提前置入客户端

服务端向CA请求认证并获得证书

  • 客户端向服务器索要并验证服务器的公钥。

  • 双方生成会话秘钥

  • 双方采用会话秘钥进行加密通信。

HTTP 1.1

改进

  1. 持久连接,减少了多次请求反复TCP连接的开销
  2. 在持久连接的基础上,支持管道化,即不再等待响应后再发出下一个请求

问题

  1. 首部数据未压缩,只能压缩主体部分
  2. 实际使用中,首部内容常常相同,这种情况下造成数据冗余
  3. 响应还是按顺序进行,一个请求阻塞会导致后续请求一直等待 出现队头阻塞

HTTP 2.0

改进

  1. HPACK算法 压缩首部
  2. 采用二进制格式 统称为,提高了数据传输效率
  3. 数据流形式,请求可以不按顺序发送,在不同请求的所有数据包上进行标记,还能指定数据流的优先级
  4. 多路复用 在一个连接中并发多个请求,不用按顺序一一对应
  5. 服务器推送 服务器可以主动向向客户端发出请求

问题

  1. 丢包时会造成统一连接中的其他请求阻塞

HTTP 3.0

将TCP改为基于QUIC协议的UDP传输