阅读 40

浏览器知识9: http版本发展史

http/0.9

  • 只有一个请求行  GET /index.html
  • 服务器没有返回头信息,只返回数据
  • 返回文件内容用 ASCII 字节流传输

http/1.0

  • 引入请求头和响应头

  • 支持多类型文件下载

  • 状态码:告诉浏览器服务器的最终处理请求的情况

  • Cache机制:减轻服务器压力

  • 用户代理字段(windows or mac):服务端统计客户端基础信息

http/1.1

  • 优化
  1. 改进持久链接:缉拿少TCP建立连接和断开的次数,降低服务器负担,提升整体HTTP请求时长,默认同时建立6个TCP 长链接。HTTP 请求头中加上Connection: close  可以取消默认长链接
  2. 不成熟的 http 管线化:多个http请求整批提交给服务器,解决队头阻塞
  3. CDN域名分片:增加 host 字段,根据不同host做处理。
  • 1.0时期,1个域名绑定唯一IP -> 1个服务器只能支持1个域名
  • 虚拟机出现-> 1台物理机(同一 ip)多个虚拟机 -> 每个虚拟机都有自己单独的域名-> 同一ip 下有多个域名
  1. 支持动态生成的内容
  • 1.0 时期,响应头中设置完整数据大小Content-Length: 90
  • 1.1 引入 Chunk transfer 机制,服务器分割数据,最后用一个0长度的数据块作为发送完成的标志
  1. 客户端 cookie、安全机制
  • 问题:宽带利用率不够
  1. TCP 慢启动:减少网络拥塞,不可避免
  2. 同时开启多条TCP 连接,竞争固定带宽:关键资源不能优先下载
  3. 队头阻塞:数据不能并行

http/2.0

  • 多路复用机制(二进制分帧层):一个域名只用一个TCP 长链接

  • 设置请求优先级:发送请求的时候标上优先级
  • 服务器推送:接到html 请求后,把要使用的css 和 js 一起发送给浏览器
  • 头部压缩:请求头、响应头 压缩

http/3.0:QUIC 协议 = TCP + HTTP2多路复用 + TLS

https加密历程

  1. 对称加密:明文
  2. 非对称加密:明文密钥(公钥公开,私钥只有服务器知道)
  • 非对称加密的效率太低了
  • 无法保证服务器发给浏览器的数据安全
  1. 对称加密和非对称加密搭配使用:数据传输用对称加密,加密的密钥用非对称加密来传输
  • DNS劫持,无法证明服务器身份
  1. 数字证书
  • 通过证书向浏览器证明服务器身份
  • 包含服务器公钥
文章分类
前端
文章标签