HTTP JW

103 阅读7分钟

HTTP 请求有哪些方式?分别用在哪些场景下? *

GET POST PUT DELETE OPTIONS

GET POST 的请求的区别? *

  • 场景上

    • GET => 幂等(发生多少次都是一样的)

      • 用于获取资源而不对服务资源做更改提交的请求
    • POST => 不幂等

      • 会对服务资源做更改进而影响数据
  • 状态

    • 浏览器不会对 post 请求进行主动缓存,业务逻辑也很少对 post 请求做缓存
  • 安全性

    • get 的参数放在 URL,所以请求参数会以请求路径明文方式进行发送
  • 参数

    • post 支持更多种类的请求参数数据类型

POST 和 PUT 的区别? *

  • 对于更新的定义
    • PUT 请求 - 更新状态

      • 通常会修改数据内容,但不会增加种类
    • POST 请求 - 创建状态

      • 既可以修改内容,同时也代表着可能增加类型种类

OPTIONS 请求方法及使用场景? *

  • OPTIONS 是一种 HTTP 请求方法(可以自动发送)

  • 场景

    • 预发送,预处理

    • 获取当前服务器的状态、性能、特征

    • 检查访问权限 => 权限、CORS

了解 http 协议的头部算法吗?如何降低开销的? **

  • HPACK 算法

    • 客户端和服务端共同维护建立字典,引用索引来标识重复的字符串
    • 通过编码算法压缩字符串,从而进一步减小头的大小
  • 客户端、服务端利用字典来跟踪和实时存储之前发送的数据值,实时记忆

  • 对于相同的数据,不再通过每次请求和响应重复发送

字典的生命周期是如何的呢?是如何保证被更新的? **

  • 首部表 http 连接期内,始终保证存在并独立的,由客户端和服务端共同演进更新
  • 每次新增的首部键值对都会被追加到末尾,更新的值会替换原有值的位置

请求头 和 响应头

了解的请求和响应头分别有哪些?常见的 content-type 有哪些? _

  • 请求头 - 浏览器告知服务端,自己的能力和配置

    • Accept _ 浏览器的能力

    • connection 连接类型

    • cookie 页面设置的内容

    • host 页面所在的域

    • referer 表示当前页面的运行身份

    • user-agent 判断环境

  • 响应头:服务端回复告知自己能力

    Date server connection cache-control

    • content-type 属性值:
      • application/x-www-form-urlencoded - 原生 form 表单的形式

      • multipart/form-data - post,表单提交 post

    • application/json: 序列化后的 JSON 字符串

HTTP 状态码

简述了解的状态码有哪些? *

  • 1xx 信息类 接收请求并且正在处理
  • 2xx 成功 请求正常且处理完毕
    • 200 OK
    • 204 No content 返回为空,但是正确处理了
    • 206 客户端进行了范围请求
  • 3xx 重定向 需要进行附加操作完成当前请求
    • 301 永久重定向 - 域名换了、资源地址换了
    • 302 临时重定向 - 平安夜活动
    • 303 请求的资源有另一个合适途径
    • 304 浏览器缓存相关 - 未满足服务端查询需求,但是走缓存条件
  • 4xx 客户端错误 服务端无法根据当前请求参数处理
    • 400 请求报文出现了语法错误
    • 401 认证失败
    • 403 明确拒绝
    • 404 服务端找不到对应资源;当服务端拒绝查询资源,且不想说明理由的时候
    • 405 请求方式不被允许
  • 5xx 服务端处理请求错误
    • 500 执行请求发生错误
    • 501 暂不支持当前操作
    • 503 超负荷或停机维护

302 303 307 三种重定向的区别有了解吗? *

  • 302 是 http1.0 中出现的重定向
  • http/1.1 细化派生除了 303 和 307
  • 303 将当前的 post 请求变为 get 请求进行重定向
  • 307 当前的重定向会严格按照浏览器的诉求,不会从 post 变成 get

HTTP 版本能力 1.0 1.1 2.0

  1. HTTP1.0 和 1.1 之间有哪些区别? *
  • 连接上

    • 1.1 持久型连接 - 复用同一个 TCP 连接上
  • 资源处理上

    • 整体的资源查询,通过 range 来做部分查询
  • 缓存上

    • 1.0 modified-xx expires 判断是否命中缓存

    • 1.1 etag if-match 缓存策略主动化

  1. HTTP1.1 和 HTTP2.0 的区别? *
  • 二进制协议:

    • 1.1 中 头信息 文本; 数据体 文本/二进制
    • 2.0 中 头信息 数据体 二进制 信息流统称为帧
  • 多路复用

    • 2.0 中,一方面复用 TCP 连接,同时在连接中,同时发送多个请求或者回应
  • 数据流

    • 2.0 引入了数据流的概念,并且以数据流 ID 进行索引
  • 头信息压缩

    • 对头信息进行字典化索引以及压缩
  • 服务端推送

    • 2.0 允许服务端主动向客户端未经请求地推送资源 - 仅限资源非动态数据

keep-alive

了解什么是 keep-alive?建立过程是什么样的?使用场景?优缺点? **

  • 1.0 默认短链接的形式,主动 connection 中打开 keep-alive 链接,然后切换长连接

  • 1.1 默认长链接的形式,主动关闭

  • 建立过程

    • 1)客户端发送报文夹带 keep-alive 的头配置

    • 2)服务端接收并处理,并且返回 keep-alive 的返回头

    • 3)客户端维持当前长链接建立

  • 服务端主动断开:

    • 1)等客户端请求

    • 2)服务端返回请求并且不带 keep-alive

    • 3)关闭连接

  • 客户端主动断开:

    • 1)客户端请求头带上 close 字段

    • 2)服务端接受后处理并断开连接

    • 3)客户端接收资源并关闭连接

  • 好处:

    • 服务端 - CPU 和内存占用下降

    • 请求和回复复用管道变少 - 降低拥塞

    • 减少了后续请求的延时

    • 无需每次异常都关闭 TCP

  • 缺点

    • 长时间连接可能会导致无效占用

https 和 websocket

了解 https 吗?和 http 比起来有哪些区别? *

  • HTTPS 经由 HTTP 进行通信,利用了 SSL/TLS 来加密数据包

    • 实现了数据交换的可行性和安全性
  • HTTP 采用明文传输,存在安全性问题

  • TLS/SSL 利用了身份验证 + 信息加密 + 完整性校验

    • 结合了 http 的传输能力同时

    • 对发起的 http 请求数据进行加密操作

    • 对接受到的 http 内容进行解密

  1. SSL/TLS 是什么?作用和工作原理? *
  • SSL/TLS 是一层安全协议
    • 主要依赖:散列函数 hash、对称加密、非对称加密

    • 1)散列函数 hash

      • MD5、SHA1…… => 单向不可逆,且输入敏感型,输出长度固定 => 任何对于数据的修改都会导致他值的变化=> 验证信息的完整性
    • 2)对称加密

      • 特点是两者公用一种密钥,同时用其进行加解密
      • 存在问题:如何保证密钥的传输安全性
    • 3)非对称加密

      • 利用公钥和对应私钥的互相加解密能力进行加密
      • 存在问题:中间截取问题
      • 数字证书:可信度高的机构

websocket 基础原理?使用方式特点? *

  • 全双工的网络技术 => 应用层

  • 基于 TCP 传输协议,可以复用 HTTP 的通道

  • 原理

    • 请求 - 客户端向服务端发送 notify => id + event
    • 推送 - 立即通知所有客户端,id 满足的客户端,才会响应当前推送的反馈

DNS 与 网络协议

了解 DNS 的作用和传输机制吗? **

  • 作用

    • 将域名解析为 ip 地址,客户端会向 DNS 服务器发送查询请求
    • 服务器返回给我们对应的 IP 地址
  • 迭代查询

    • 每次请求都会单次访问不同级别的 DNS 服务器
  • 递归查询

    • 只向目标服务器发送一次请求,优先自我查找,向下一级服务器进行进一步查询

OSI 七层模型 / TCP 模型

见图

TCP 和 UDP

  • 对比有何区别? *

    • 握手机制、校验、安全保障
  • TCP 注重完整性、确定性的领域

  • UDP 注重的是分发速率

image.png

面试方式

基础理论 + 协议了解 + 业务的场景