HTTP1.0和HTTP2.0的区别

一、HTTP1.0

HTTP 1.0 浏览器与服务器默认为短连接,每次请求都需要与服务器建立一个TCP连接

服务器完成请求处理后立即断开TCP连接,然后依次建立新的TCP连接,服务器不跟踪每个客户也不记录过去的请求。

 

例如,解析html文件,当发现文件中存在资源文件的时候,这时候又创建单独的链接

最终导致,一个html文件的访问包含了多次的请求和响应,每次请求都需要创建连接、关系连接

这种形式明显造成了性能上的缺陷

如果需要建立长连接,需要设置一个非标准的Connection字段 Connection: keep-alive

HTTP2.0

HTTP/2.0默认长连接‌。HTTP/2.0支持长连接,即在一个TCP连接上可以并发多个请求和响应,避免了频繁建立和关闭连接的开销,提高了性能和效率‌12。

HTTP/2.0与长连接相关的特性

  1. 多路复用‌:HTTP/2.0引入了多路复用技术,允许在同一个TCP连接上并发发送多个请求和响应,避免了为每个请求建立新的TCP连接‌13。
  2. 二进制协议‌:HTTP/2.0采用二进制格式传输数据,减少了解析的复杂性,提高了传输效率‌1。
  3. 头部压缩‌:使用HPACK算法对头部进行压缩,减少了头部的大小,降低了网络传输开销‌1。
  4. 流控制和优先级‌:引入了流控制和优先级的机制,可以根据需求对请求进行优先级排序,提高了资源利用率‌1

 HTTP2点:
1)GRPC尚未提供连接池,需要自行实现
2)尚未提供“服务发现”、“负载均衡”机制
3)因为基于HTTP2,绝大部多数HTTP Server、Nginx都尚不支持,即Nginx不能将GRPC请求作为HTTP请求来负载均衡,而是作为普通的TCP请求(nginx1.9版本已支持)
4)Protobuf二进制可读性差(貌似提供了Text_Fromat功能)默认不具备动态特性(可以通过动态定义生成消息类型或者动态编译支持)
5)难以调试和跟踪,在排查问题时,可能需要额外的工具和技术来解析和查看数据

posted @   microsoft-zhcn  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示