Skip to content

10.什么是 HTTP? HTTP 和 HTTPS 的区别?

1.什么是 HTTP 及 HTTP 的发展历程?

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本(它不仅限于文本,还可以传输各种类型的数据,包括但不限于文本、图像、音频、视频以及其他富媒体资源)的应用层协议。

  • 1990 年 HTTP/0.9:为了便于服务器和客户端处理,采⽤了“纯⽂本”格式,只运⾏使⽤ GET 请求。在响应请求之后会 ⽴即关闭连接。
  • 1996 年 HTTP/1.0:增强了 0.9 版本,引⼊了 HTTP Header(头部)的概念,传输的数据不再仅限于⽂本,可以解 析图⽚⾳乐等,增加了响应状态码和 POST , HEAD 等请求⽅法。 (内容协商)。
  • 1999 年⼴泛使⽤ HTTP/1.1:正式标准,允许持久连接,允许响应数据分块,增加了缓存管理和控制,增加了 PUT、DELETE 等新的⽅法。
  • 2015 年 HTTP/2 :使⽤ HPACK 算法压缩头部,减少数据传输量。允许服务器主动向客户端推送数据,⼆进制协议可 发起多个请求,使⽤时需要对请求加密通信。
  • 2018 年 HTTP/3 :基于 UDP 的 QUIC 协议。

通常情况下,当提到"HTTP"时,指的是 HTTP/1.1;HTTP/1.1 是当前最常用的 HTTP 版本

2.HTTP 的特点

  • HTTP 使用文本格式进行通信;
  • 采⽤应答模式,客户端主动发起请求,服务器被动回复请求;
  • HTTP 是⽆状态的每个请求都是互相独⽴;
  • HTTP 协议的请求报⽂和响应报⽂的结构基本相同,由三部分组成;

3.HTTP 与 TCP 关联

HTTP/1.1 是可靠传输协议,基于 TCP/IP 协议;

  • HTTP/1.1 引入了持久连接(Keep-Alive),允许在同一 TCP 连接上完成多个 HTTP 请求和响应,而不是为每个请求都建立和关闭一个新的 TCP 连接。
  • HTTP/1.1 使用 Content-Length 头部字段来确定 HTTP 消息的大小,包括请求体和响应体。
  • 复用 TCP 连接可以避免慢启动,因为新的 TCP 连接在开始时需要逐渐增加其传输速率。
  • 在同一 TCP 通道上,HTTP 请求通常是串行的,因为 HTTP 没有序号机制来指示请求的顺序。这会导致 HTTP 队头阻塞问题,其中一个请求的延迟可能会影响后续请求的响应时间。
  • 浏览器通常允许与单个域名建立多个并发的 TCP 连接,以充分利用带宽。Chrome 等现代浏览器通常允许最多 6 个 TCP 连接(每个域名都需要进行 DNS 解析)。
  • 当多个 TCP 连接竞争有限的带宽时,可能导致性能问题。

4.HTTPS

HTTP 采⽤明⽂传输,中间⼈可以获取到明⽂数据 (从⽽实现对数据的篡改)。这时候 HTTPS 就登场了! HTTPS 是 什么呢? HTTPS = HTTP + SSL/TLS , SSL 安全套接层(Secure Sockets Layer) 发展到 v3 时改名为 TLS 传输层安全(Transport Layer Security),主要的⽬的是提供数据的完整性和保密性。

  • 安全性:HTTP 传输是明文的,容易受到窥探和攻击。HTTPS 使用加密技术,提供更安全的数据传输。
  • 连接端口:HTTP 使用默认端口 80,而 HTTPS 使用默认端口 443。
  • 性能:HTTPS 在加密和握手过程方面稍慢。
  • 证书成本: HTTPS 需要证书,功能越强大的证书费用越高。

Released under the MIT License.