http协议特点
-
灵活可扩展:只规定了报文的基本格式,比如用空格分隔单词,用换行分隔字段,报文里的各个组成部分都没有做严格的语法语义限制,可以由开发者任意定制
-
可靠传输
-
应用层协议
-
请求 - 应答形式
-
无状态:没有记忆功能
优点
-
无状态:因为服务器没有“记忆能力”,所以就不需要额外的资源来记录状态信息,不仅实现上会简单一些,而且还能减轻服务器的负担。“无状态”也表示服务器都是相同的,没有“状态”的差异,所以可以很容易地组成集群,让负载均衡把请求转发到任意一台服务器,不会因为状态不一致导致处理出错,使用“堆机器”的“笨办法”轻松实现高并发高可用。
-
应用广泛、环境成熟
-
简单、灵活、易于扩展
缺点
-
明文传输:不安全,无法验证通信双方的身份,也不能判断报文是否被窜改
-
无状态:服务器没有“记忆能力”,它就无法支持需要连续多个步骤的“事务”操作。例如电商购物,首先要登录,然后添加购物车,再下单、结算、支付,这一系列操作都需要知道用户的身份才行,但“无状态”服务器是不知道这些请求是相互关联的,每次都得问一遍身份信息,麻烦且增加了不必要的数据传输量。
-
性能:队头阻塞”(Head-of-line blocking),当顺序发送的请求序列中的一个请求因为某种原因被阻塞时,在后面排队的所有请求也一并被阻塞,会导致客户端迟迟收不到数据。为了解决这个问题,就出现了一些web优化比如例如切图、数据内嵌与合并,域名分片等。当然还有终极解决方案:HTTP/2 和 HTTP/3