HTTP各个版本对比

HTTP各个版本详细说明和对比

HTTP1.0和HTTP1.1的不同

持久连接

  1. HTTP1.0默认是短连接,每次连接都需要建立TCP请求,可以通过Connection:keep-alive头来实现持久连接。
  2. HTTP1.1默认是持久连接,允许在一次TCP连接发送多个请求和响应。

管道化

  1. HTTP/1.0 不支持管道化。
  2. HTTP/1.1支持管道化,但是默认不开启,允许在第一个响应到达前发送多个请求,减少等待时间。

缓存控制

  1. HTTP/1.0主要使用IF-Modified-Since/Expires来作为缓存的判断标准。
  2. HTTP/1.1提供更多可供选择的缓存头(Etag/If-None-Match)来控制缓存策略。

错误处理

  1. HTTP/1.1增加了一些新的HTTP状态码,如100 Continue,增强错误处理和请求的中间响应。

Host头

  1. HTTP/1.1引入了Host头,允许客户端指定请求的主机名,HTTP/1.0没有。

带宽优化

  1. HTTP/1.0中,存在浪费带宽的现象,如客户端只需要某个对象的一部分,服务器只能发送整个对象,同时还不支持断点续传
  2. HHTP/1.1,支持断点续传,同时在头部引入了range头域,允许只请求资源的某一个部分。

HTTP1.1和HTTP2.0的不同

二进制协议

  1. HTTP/1.1传递的文本格式数据
  2. HTTP/2.0传递的是二进制数据,解析更加高效

多路复用

  1. HTTP/1.1不允许在一个TCP连接上交错发送多个请求和响应,会存在对头阻塞问题
  2. HTTP/2.0能够多路复用,允许在一个TCP连接发送多个请求的响应

头部压缩

  1. HTTP/2.0通过HPACK压缩算法,能够对头部进行压缩(主要传递变化的头部数据),提高了运输效率。

主动推送

  1. HTTP/2.0 能够主动推送资源给客户端,不需要客户端的明确需求,可以减少页面反应时间

优先级和依赖

  1. HTTP/2.0 允许客户端设置优先级和表达请求之间的依赖关系,使得资源加载更加有序。

HTTP和HTTPs的区别以及TSL的实现过程

主要区别

  1. HTTP只需要建立TCP连接就能够进行数据通信。
  2. HTTPs在建立TCP连接之后还需要进行TSL/SSL加密协商,进行加密通信。
  3. HTTPs是443端口,HTTP是80端口。

实现过程

  1. 先建立TCP连接
  2. 服务端-->客户端:服务端发送公钥证书给客户端
  3. 客户端-->服务端:先通过证书颁发机构CA验证证书,验证通过之后,客户端生成一个随机的对称加密密钥,使用公钥加密自己的密钥。
  4. 服务端接收加密数据:服务端使用自己的私。钥解密客户端发送的加密数据,得到客户端的加密密钥。对称加密密钥对所有传输的数据进行加密。
  5. 协商一致,建立安全连接,实现数据通信
  6. 同时还会进行完整性验证。
相关推荐
roman_日积跬步-终至千里26 分钟前
【Java并发】Java 线程池实战:警惕使用CompletableFuture.supplyAsync
java·开发语言·网络
2的n次方_1 小时前
Runtime 内存管理深化:推理批处理下的内存复用与生命周期精细控制
c语言·网络·架构
郝学胜-神的一滴2 小时前
深入浅出:使用Linux系统函数构建高性能TCP服务器
linux·服务器·开发语言·网络·c++·tcp/ip·程序人生
天若有情6732 小时前
【自研实战】轻量级ASCII字符串加密算法:从设计到落地(防查岗神器版)
网络·c++·算法·安全·数据安全·加密
胖咕噜的稞达鸭3 小时前
网络基础:初识TCP/IP协议
网络·网络协议·tcp/ip
全栈工程师修炼指南3 小时前
Nginx | stream content 阶段:UDP 协议四层反向代理浅析与实践
运维·网络·网络协议·nginx·udp
cur1es3 小时前
【UDP的报文结构】
网络·网络协议·udp·md5
闲人编程3 小时前
使用FastAPI和WebSocket构建高性能实时聊天系统
websocket·网络协议·网络编程·fastapi·持久化·实时聊天·codecapsule
惊讶的猫4 小时前
OpenFeign(声明式HTTP客户端)
网络·网络协议·http·微服务·openfeign
心.c4 小时前
TCP协议深入解析
网络·网络协议·tcp/ip