HTTP的优点点和缺点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP的优点点和缺点相关的知识,希望对你有一定的参考价值。
参考技术A 上文中我们介绍了HTTP的特点,根据介绍的特点我们分析下优劣和好坏;当然上述所说的特点是基于HTTP/1.1版本来说的;
这是HTTP中最为突出的优点,【简单、灵活、易于扩展】;
【灵活】和【易于扩展】这两个特点之间是相辅相成的,因为灵活让HTTP协议变得易于扩展;
反之,因为易于扩展让HTTP协议变得更加灵活;
该特点体现在,HTTP协议中的请求方法、状态码、头字段等信息没有被写死,我们开发人员可以任意定制、扩充或者解释;
同时这个特点有点像设计模式中的【策略模式】,就是HTTP的上层协议的语义没变,具体的下层协议没有限制,可以使用TCP,还可以使用SSL/TLS,甚至是UDP的QUIC;
这也是HTTP协议里另一大优点【应用广泛】;
从简单Web页面到复杂的JSON数据;从PC上的浏览器到手机上的APP,这些地方都在使用HTTP;
从应用领域到开发领域HTTP协议也都得到了广泛的支持;HTTP协议不局限于某一种开发语言或者操作系统,使其也具有了【跨语言、跨平台】的特性;
这个特性对HTTP来说既是优点也是缺点,是一把【双刃剑】
我们上文介绍过,无状态就好比是服务器没有记忆能力,就不需要存储额外的状态信息。这样能减轻服务器的负担,同时能把更多的资源用于对外的服务上;
无状态就意味着服务器都是相同的,可以容易组层集群,通过负载均衡把请求转发到任意一台服务器上,不会因为状态不一致导致处理出错;
针对【无状态】就不会记录客户端的信息,需要身份校验的连续操作,服务器是不知道这些请求的关联,每次都得问一遍身份信息;
HTTP协议理想态是既能【无状态】又能【有状态】不过这样的好事在Cookie技术上得到实现了;
明文传输也是HTTP协议中一把双刃剑;
明文准确的说:协议里传输的报文【header】部分不使用二进制数据,使用的是简单客阅读的文本形式;
HTTP的明文传输,我们可以用浏览器、Charles、Wireshark这样的工具抓包后,可以肉眼容易地查看或者修改,我们开发工作带来了很大的便利;
HTTP报文信息都暴露光天化日之下,在漫长的传输链路上毫无隐私可言;
明文传输只是【机密】方面的一个缺点,在【身份认证】和【完整性校验】这方面HTTP有所欠缺;
HTTPS的出现就是为了解决这个不安全问题;
简单来说就是怎么证明是你,在虚拟网络中HTTP没有提供有效的手段来确认通信双方的真实身份;
不支持该特性,数据在传输过程中很容易被篡改而无法验证真伪;
HTTP的性能 不算差也不够好;
HTTP协议是基于TCP/IP协议的,并且使用了【请求-应答】的通信模式
TCP协议的性能是不差的,能够应付大多数场景;
江湖不再是以前的江湖,现在互联网是【高并发】,不能保证稳定的连接质量,在TCP基础上HTTP协议有时候会表现的不够好;
同时【请求-应答】模式加剧了HTTP性能问题,会出现【对头阻塞】,当顺序发送的请求序列中有一个请求因为某种原因阻塞时,其他在排队的就一直被阻塞了;
不够该问题在HTTP/2和HTTP/3中都得以解决了;后面再说;
以上是关于HTTP的优点点和缺点的主要内容,如果未能解决你的问题,请参考以下文章
004.redis 的 RDB 和 AOF 两种持久化机制的优劣势对比