罗剑锋透视HTTP协议学习笔记---14 | HTTP有哪些优点?又有哪些缺点?

44 篇文章 6 订阅

14 | HTTP有哪些优点?又有哪些缺点?

优点和缺点都和应用场景有关,在某些场景下的优点,在其他场景下则可能是缺点。
HTTP的核心优点有:灵活可扩展。
无状态可以理解为是双刃剑,无状态意味着实现简单,易于扩展。在集群环境里,所有WEB服务器都是一样的,通过简单堆硬件,加上7层LB,就可以达到提速的效果。无状态也意味着对于事务类请求,比如电商网站购物,涉及一系列有相互关联的请求,如果不记录状态,则难以处理。
文本协议是一个次要缺点,HTTP文本协议定义比较宽松,大小写,分隔符,没有严格定义,容易导致歧义,数据表达效率没有二进制高,如表示IPv4地址,二进制只需4个字节,而ASCII需要7-15个字节。
不安全是一个主要的缺点,需要引入TLS解决。
队头阻塞带来的性能问题是一个主要缺点,引入HTTP/2解决。
收发模式是双刃剑,收发模式对于实时通讯应用场景是缺点,可以引入HTTP/2解决。
应用广泛,环境成熟是优点。

认知HTTP的工作模式
典型的HTTP工作模式是点对点的,其中包括2个参与者,即客户端和服务器,尽管还可以引入其它参与者,如正向代理,反向代理,但其本质上还是点到点的,其它角色或扮演客户端,或服务器,或二者,充当中间人参与到HTTP的通讯中,HTTP协议本身仅通过特定头字段标记【Via】是否通过中间人转发,并不改变点到点通讯的本质。
进一步,在HTTP/1.1中客户端发送请求,服务器回应客户端的请求,客户端发送的每一个请求,需要等待服务器回应后才能发送下一个请求,即所有请求在一个FIFO队列里,这样就会造成队头阻塞。即如果队头的请求响应时间太长,会影响后面的请求的处理。
在HTTP/1.1中有2个方法可以缓解但不能解决队头阻塞问题。

  1. 管道,即可以并发多个请求,无需等待上一个请求返回。但它仍然期待按发送次序收到响应消息,如果某个先发请求阻塞,则后继报文即使处理也不能发出,所以仍然存在队头阻塞问题。管道仅在理想情况下,提高收发效率。而且目前浏览器,服务器对管道支持得不好,可以认为是废弃技术。
  2. 多个连接,对于同一个域名,允许同时开最多6个TCP连接,因为每个TCP连接独立,所以某个TCP中的HTTP请求阻塞,不影响其它TCP连接,所以虽然队头阻塞仍然存在,但因为存在多个独立的TCP连接,所以队头阻塞问题得到一定程度的缓解。

课后作业

你最喜欢的 HTTP 优点是哪个?最不喜欢的缺点又是哪个?为什么?

  • 优点:灵活可扩展
  • 缺点:安全性
  • 灵活可扩展意味着无限可能
  • 缺少安全性,在现在的网络环境寸步难行。

你能够再进一步扩展或补充论述今天提到这些优点或缺点吗?

  • 优点:应用广泛
  • 缺点:缺少安全性
    ASCII格式,消息格式容易产生歧义
    HTTP队头阻塞
    TCP队头阻塞
    header未压缩

你能试着针对这些缺点提出一些自己的解决方案吗?

  • TLS,解决安全性问题
  • 二进制报文,解决消息格式歧义问题
  • HTTP/2,流+帧解决HTTP队头阻塞问题
  • HTTP/3,解决TCP队头阻塞
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值