Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
  • HTTP

    • Get 与 Post
    • 状态码&字段
    • 输入URL到返回页面全过程
    • HTTP
    • HTTP演进
      • HTTP/1.1
      • HTTP/2
      • HTTP/3
    • HTTPS
    • WebSocket
    • RPC
    • 粘包问题
    • Java中的网络请求
    • 请求报文与响应报文
    • HTTP如何保存用户状态
    • 长连接与短连接
    • SSL TLS
  • TCP

  • UDP

  • IP

  • 网络安全

  • 计算机网络
  • HTTP
Nreal
2023-11-23
目录

HTTP演进

常见HTTP版本有:HTTP/1.1,HTTP/2.0,HTTP/3.0;

# HTTP/1.1

优化点:

  1. 使用长连接改善了1.0短连接造成的性能开销;
  2. 支持管道网络传输,只要第一个请求发送出去,不必等其回来,就可以发第二个请求,减少整体响应时间;

性能瓶颈:

  1. 请求头未被压缩,只压缩请求体;
  2. 对头阻塞;
  3. 请求只能从客户端开始;

# HTTP/2

优化点:

  1. 基于HTTPS,安全性有保障;

  2. 请求头压缩,多个请求头部一样,协议会帮消除重复部分;

  3. 并发传输,解决对头阻塞;

    一个TCP连接包含多个Stream,Stream中包含多个Message,Message对应HTTP/1中请求和响应;

  4. 服务器推送;

    服务器可以主动向客户端发送消息;客户端和服务端双方都建立Stream;

性能瓶颈:

  1. TCP层面的队头阻塞;

    TCP层必须保证受到的字节数据是完整且连续的,这样内核才会将缓冲区里的数据返回给HTTP应用,当前1个字节数据没有到达,后受到的字节数据只能放在内核缓冲区,只有等到这1个字节数据到达,应用层才能在内核中拿到数据;

# HTTP/3

将传输层协议改为UDP;

UDP 的 QUIC协议实现可靠性传输;

QUIC连接上多个Stream之间没有依赖,某个流发生丢包,只会影响该流,其它流不受影响;

HTTP
HTTPS

← HTTP HTTPS→

Theme by Vdoing | Copyright © 2021-2024
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式