14 | HTTP有哪些优点?又有哪些缺点?
该思维导图由 AI 生成,仅供参考
简单、灵活、易于扩展
- 深入了解
- 翻译
- 解释
- 总结
HTTP协议的优点在于其简单、灵活、易于扩展,具有成熟的软硬件环境和广泛的应用。然而,其“无状态”特性既简化了服务器实现和负载均衡,又限制了对连续多步骤事务操作的支持。另外,明文传输存在隐私泄露的风险,且HTTP协议在身份认证和完整性校验方面欠缺。性能方面,HTTP基于TCP/IP,使用了“请求-应答”的通信模式,但在移动和高并发环境下表现不够理想,且存在队头阻塞问题。尽管HTTP存在缺点,但其灵活可扩展的特点为解决这些问题提供了可能性。未来的“进阶篇”和“安全篇”将进一步探讨这些问题。 HTTP协议的优点在于其简单、灵活、易于扩展,具有成熟的软硬件环境和广泛的应用。然而,其“无状态”特性既简化了服务器实现和负载均衡,又限制了对连续多步骤事务操作的支持。另外,明文传输存在隐私泄露的风险,且HTTP协议在身份认证和完整性校验方面欠缺。性能方面,HTTP基于TCP/IP,使用了“请求-应答”的通信模式,但在移动和高并发环境下表现不够理想,且存在队头阻塞问题。尽管HTTP存在缺点,但其灵活可扩展的特点为解决这些问题提供了可能性。未来的“进阶篇”和“安全篇”将进一步探讨这些问题。
《透视 HTTP 协议》,新⼈⾸单¥59
全部留言(30)
- 最新
- 精选
- Xiao老师说的对,以前的时候觉得看书或者文章,人家说什么就是什么,而且很绝对。后来慢慢发现,很多东西都是需要结合业务场景来分析的,在这种业务场景是优点,在另外的业务场景就可能是致命的缺点!那句话:脱离业务场景谈技术就是耍流氓!哈哈哈,谢谢老师!
作者回复: 自己思考就有收获,尽信书则不如无书。
2019-06-2846 - 钱1:你最喜欢的 HTTP 优点是哪个?最不喜欢的缺点又是哪个?为什么? 最喜欢她的简单,因为简单所以美好,简简单单容易上手,易于理解。 最不喜欢她的不安全和低性能,如果她能做到安全高效,那就不用再去学习别的乱七八糟的协议了,编写RPC接口也就没有其他框架什么事情了,搞微服务应该门槛更低效率更高,当然,她目前做不到,由于考上层以后估计也悬,不过如果基建OK,也许网络带宽不再是瓶颈,她能做到天然的高效传输吧! 2:你能够再进一步扩展或补充论述今天提到这些优点或缺点吗? 简单和易扩展,我认为是矛盾的,很少系统能做到即易扩展又简单,毕竟以后需要什么谁也不能未卜先知,留下扩展的余地毕竟会增加复杂度吧!如果设计的不好,复杂度也许会急剧上升,不过HTTP做的很好貌似没有出现这种情况。不知是为什么?是公共的预定义基本OK吗?其实扩展的不是很多吗?还请老师分享一下。 3:你能试着针对这些缺点提出一些自己的解决方案吗? 有无状态已有方案,可以自由选择 安全性后面也会采用加密的方式来解决 低效这个是相对的,靠上必然会低效,如果基建进一步加强,也许能进一步解决,不过这个看需求和增加的带宽那个更大吧! 明文最早的初心就是分享信息,明文我觉得太正常了,现在多了安全性的需求,所以,才渴望更安全的,此时的HTTP用于分享信息已是一部分功能,她还可以实现各种各样的诉求。 如果协议里设置的有类似开关的东西就好了,可以选择是否有状态、可以选择是否明文、可以选择是否加密,使用者仅需要控制开关就能实现相关的功能,不需自己实现,那就更好了。
作者回复: 还是这么认真写作业啊,笑。 1.http/2和http/3可以解决你说的问题。 2.我觉得http一开始的文本格式头结构算是误打误撞,正好即简单又容易扩展,有点像xml。 3.请看后面的http/2。
2020-03-29214 - レイン小雨老师,我想问一下关于“队头阻塞”的概念,正好上周团队有人分享这方面的知识,当时是说浏览器针对一个域名最多同时建立6个连接通道,也就是支持6个http并发,当一个页面中有100个资源文件需要加载的时候,就只能6个6个的串行加载,第七个请求要等到第一个请求结果返回来之后才能发出。这么理解队头阻塞的概念对吗?
作者回复: 你说的这6个连接是为了解决队头阻塞而实现的并发连接。 而“第七个”实际上是排队等待,还不是队头阻塞。 马上就会讲到这个问题了,再等几天。
2019-06-29513 - Geek_d59aa7老师,问个沙雕问题,什么叫明文传输,难道http里的信息不是转成二进制传输的吗,看网上的意思好像明文传输是直接传输字母和数字??不是二进制?
作者回复: 明文是相对于密文而言的,意思是可以直接看到内容,而密文是经过加密的,看到的是乱码。 可以参考后面的安全篇。
2020-07-0229 - 业余草老师不仅技术好,文章写的也很好。比较喜欢看这种风格的文章,可以加个微信好友吗?我微信:xttblog
作者回复: 抱歉,个人微信用的比较少,可以在GitHub上交流。
2019-06-2838 - 欢乐的小马驹老师好,小贴士里面提到了:绝大多数的网站都封禁了80/8080以外的端口号,只允许HTTP进行穿透。 1、最初为什么要封禁其他端口只留80/8080呢? 2、穿透是什么意思?
作者回复: 1.因为80/8080只用于http协议传输网页,禁掉其他端口就降低了被嗅探、攻击的可能性,提高安全性。 2.穿透是个通俗的说法,就是通过80端口可以一路畅通,一直传到后端去处理,而不会在服务器被挡住。
2020-03-116 - 我的朋友叫垃圾呆老师,我查了资料之后还是不太理解 文本协议和二进制协议,我看之前的文章有说,从http2 开始,变成了二进制协议,这篇文章说 tcp是二进制协议,而http是文本协议,不太能理解两者的区别,在传输信息的时候不都是转换成二进制的字节流进行传输的吗
作者回复: 这种说法主要是以协议是否human readable为判断标准的,就是说传输的数据是否让人直接不借助工具就能够阅读。 对比一下,http协议的状态行、头字段都用的是ASCII码,可以直接看,而tcp的头用的是二进制位,不能直接看。
2021-01-0325 - 小丽老师讲的非常透彻,有些话看似简单,却值得琢磨,希望老师多讲一点关于身份认证和安全的东西
作者回复: 下周就会进入安全篇了,详细讲解https、ssl/tls。
2019-07-133 - -W.LI-老师好!传输的时候序列化方式属于HTTP范畴么?现在大多用的json形式可是cloud和dubbo在高并发情况下dubbo性能比cloud好。网上说是序列化方式不一样。也不晓得是不是
作者回复: http不管body的格式,所以可以自己选择序列化方式。 json的优点是易读易解析,但明文显然格式容易,开销大,所以要求高性能都用专门的二进制序列化。 我用c/c++比较多,对Java不太了解,不好评价,抱歉了。
2019-06-2833 - Xiao不觉得明文是缺点,因为http本身就是一套标准规范,而且前面也说它是非常灵活的,所以个人觉得明文也是一种场景,用户也可以选择密文传输!
作者回复: 明文是把“双刃剑”,很多时候是优点,但换个场景就是缺点了。 什么事情都是这样,没有绝对,就看应用的场景。
2019-06-283