优点

1、可靠的数据传输

HTTP 的底层协议是可靠数据传输,因此可以保证客户端接收数据时的完整性。

HTTP 1.0 / 1.1 / 2.0 的底层是 TCP 协议,HTTP/3 把 TCP 层换成了了基于 UDP 的 QUIC,但仍然是可靠数据传输。

2、灵活、易于扩展

HTTP 协议里的各类请求方法、URI/URL、状态码、头字段等每个组成要求都没有被固定死,都允许开发人员自定义和扩充。

同时 HTTP 由于是工作在应⽤用层( OSI 第七层),则它下层可以随意变化。

HTTPS 也就是在 HTTP 与 TCP 层之间增加了了 SSL/TLS 安全传输层,HTTP/3 甚⾄至把 TCP 层换成了了基于 UDP 的 QUIC。

3、应用广泛

互联网发展至今,HTTP 的应用范围已经非常广泛,从台式机的浏览器到手机上的各种 APP。从看新闻、刷贴吧到购物、理财、吃鸡,HTTP 的应用遍地开花。

缺点

HTTP 协议里有优缺点一体的双刃剑,分别是「无状态、明⽂文传输」,同时还有一大缺点「不安全」。

1、无状态 - 双刃剑

无状态的好处:因为服务器不会去记忆 HTTP 的状态,所以不需要额外的资源来记录状态信息,这能减轻服务器的负担,能够把更多的 CPU 和内存用来对外提供服务。
无状态的问题:既然服务器没有记忆能力,它在完成有关联性的操作时会非常麻烦。

登录->添加购物车->下单->结算->支付,这系列操作都要知道用户的身份才行。但服务器不知道这些请求是有关联的,每次都要问一遍身份信息,显然这不现实。
对于无状态的问题,解法方案有很多种,其中比较简单的方式用 Cookie 技术。Cookie 通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。

客户端每次发起请求时,都会携带 Cookie ,便于服务器辨认身份。
image.png

2、明文传输 - 双刃剑

明文传输的好处:明文意味着在传输过程中的信息,是可方便阅读的,通过浏览器的 F12 控制台或 Wireshark 抓包都可以直接查看数据,为我们调试工作带了了极大的便利性。
明文传输的问题:在明文传输过程中,HTTP 的所有信息都暴露在了了光天化日下,相当于信息裸奔。在传输的漫长的过程中,信息的内容都毫⽆无隐私可言,很容易被窃取账号密码等信息。

3、不安全

HTTP 比较严重的缺点就是不安全:

  • 通信使用明文(不加密),内容可能会被窃听。比如,账号信息容易泄漏,号没了。
  • 不验证通信方的身份,因此有可能遭遇伪装。比如,访问假的淘宝、拼多多,钱没了。
  • 无法证明报文的完整性,所以有可能已遭篡改。比如,网页上植入垃圾广告,视觉污染。

HTTP 的安全问题,可以⽤用 HTTPS 的方式解决,也就是通过引⼊入 SSL/TLS 层,使得在安全上达到了了极
致。