HTTP优点:
简单、灵活、易于扩展,应用广泛、软硬件环境成熟、无状态
HTTP缺点:
明文传输、不安全、性能不算差但也不够好
HTTP优缺点并存:
明文传输、无状态
简单、灵活、可扩展
HTTP协议很简单,报文格式就是header+body,头部信息也是简单的文本格式,用的也是常见的英文单词。学习使用的门槛很低。正是基于简单这个最基本的设计理念,才有了HTTP最锋利的剑:灵活可扩展!简单相当于一张白纸,你想怎么写都行。
HTTP里的请求方法、URI、状态码、原因短语、头字段等每一个核心组件都没有被写死,允许任意定制、扩充和解释,缺什么功能自己写就可以了。
HTTP不限制具体的下层协议,下层协议可以随意变化,上层的语义却可以始终保持稳定。
应用广泛、软硬件环境成熟
HTTP已经遍布互联网世界,很能找到一个没有使用HTTP的地方。无论应用领域还是开发领域都得到了广泛支持。HTTP天然具有跨语言、跨平台的特性,几乎所有编程语言都有HTTP调用库和外围的开发测试工具。
很多互联网和传统行业公司都购买服务器开办网站、建设数据中心、CDN和高速光纤,持续优化上网体验。
无状态
无状态令服务器不需要额外的资源来记录状态信息,负担轻一些。
无状态令服务器没有状态的差异,很容易组成集群,让负载均衡把请求转发到任意一台服务器,不会因为昨天不一致导致处理出错,直接买多几台服务器就可以轻松实现高并发高可用。
无状态的缺点就是没有记忆能力,也就无法支持需要连续多个步骤的事务操作,每一次都要问一次身份信息,不仅麻烦,也增加了不必要的数据传输量。但这个问题可以通过Cookies解决。
明文
是优点也是缺点;
明文的意思就是协议里的报文header部分,不使用二进制数据,而使用简单可阅读的文本形式。优点就是不需要借助任何外部工具,抓包后直接就可以查看或者修改,开发调试起来很便利。
缺点就是毫无隐私可言,只需要侵入了这个链路里的某个设备,简单地旁路一下浏览,就可以实现对通信的窥视。
不安全
HTTP没有提供有效的手段来确认通信双方的真实身份,虽然有基本的认证机制,但在明文传输面前几乎等同无效。
HTTP也不支持完整性校验,数据在传输过程中很容易被篡改而无法验证真伪。
正是因为这个缺陷,所以出现了HTTPS。
性能
不算差、不够好
因为请求-应答模式决定了按顺序发送的请求序列中有一个请求因为某种原因被阻塞时,后面一长串的请求也会被阻塞,会导致客户端迟迟收不到数据。
其他
出于安全原因,绝大多数网站都封禁了80/8080意外的端口号,只允许HTTP进行穿透,这也是导致HTTP流行的客观原因之一。80/8080是HTTP端口。
问题
绝大多数的网站都封禁了80/8080以外的端口号,只允许HTTP进行穿透。
1、最初为什么要封禁其他端口只留80/8080呢? 2、穿透是什么意思?
回复:
1.因为80/8080只用于http协议传输网页,禁掉其他端口就降低了被嗅探、攻击的可能性,提高安全性。
2.穿透是个通俗的说法,就是通过80端口可以一路畅通,一直传到后端去处理,而不会在服务器被挡住。