http协议的优势及缺点?

HTTP 0.9

特点:

  • 只有get方法
  • 不支持请求头,只能请求html
  • 无法建立持久连接,服务端响应之后,立即关闭TCP连接

HTTP 1.0

特点:

  • 增加了post、delete、put、header等方式
  • 增加了请求头、响应头
  • 扩充了传输内容的格式:图片、音频、二进制
  • 性能差,每个TCP链接只能发送一个请求
  • 无连接无状态,每次请求需要重新建立连接,tcp链接无法复用,且强制要求前一个请求到达之后,下一个请求才能发送。
    丢包和乱序使得复用困难和队头堵塞产生许多问题。

HTTP 1.1

特点:

  • 增加长链接,connection字段设置keep-alive,可达到tcp复用的效果。但是在c/s中的s端服务器响应较慢,则仍旧存在队头堵塞问题。
  • 管道化,允许客户端同时发送多个请求,c客户端不存在队头堵塞问题。但服务器端仍然存在队头堵塞问题。
  • 增加 PUT、PATCH、OPTIONS、DELETE
  • 增加host字段,用来指定服务器的域名,这样可以将多种请求发往同一台服务器上的不同网站,提高机器的复用。

HTTP 2.0

特点:

  • 二进制格式,1.x是文本协议,2.0以二进制帧为基本单位,所有传输消息分割为消息和帧。
  • 多路复用,借助二进制帧的标识,实现多个请求公用一个连接,实现链路的复用
  • Hpack,头部压缩算法,减少相同头部的传输,进行增量式更新。
  • 服务端推送,允许服务器主动向客户端发送资源。
  • 以提升性能为主要目标

详解:
2.0的设计目标是在兼容1.x语义和操作的基础上,给用户带来更快捷、更简单、更安全的体验高效地利用当前的网络带宽,为此2.0做了很多调整主要包括:
二进制化分帧、多路复用、头部压缩等。

2.1 二进制分帧层需要知道四个概念:

  • 链接Link,一条C/S之间的TCP链接,这是个基础的链路数据的高速公路
  • 数据流Stream,已建立的TCP连接内的双向字节流
  • 消息Message,消息属于一个数据流,消息就是逻辑请求或响应消息对应的完整的一系列帧
  • 帧Frame,帧是通信的最小单位,每个帧都包含帧头和消息体,标识出当前帧所属的数据流

2.2 多路复用

客户端和服务器将交互数据分解为相互独立的帧,互不影响地交错传输,最后再在对端根据帧头中的流标识符把它们重新组装起来,从而实现了TCP链接的多路复用。

2.3 首部压缩

一条链接而言大部分的包的header部分都是相同的,这样的话每次传输相同的部分确实非常浪费。

2.4 服务端推送

  • 不同于以往的一问一答式的C/S交互方式,推送式服务器可以对一个请求发送多个响应。
    ## HTTP3.0
    那么肯定要问HTTP2.0虽然性能已经不错了,还有什么不足吗?
  • 建立连接时间长(本质上是TCP的问题)
    - 队头阻塞问题
  • 移动互联网领域表现不佳(弱网环境)
    从本质上来讲这些缺点基本上是由TCP协议引起的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值