httpS 和 http/2 有啥区别?

Posted

技术标签:

【中文标题】httpS 和 http/2 有啥区别?【英文标题】:What is difference between httpS and http/2?httpS 和 http/2 有什么区别? 【发布时间】:2019-04-28 12:57:53 【问题描述】:

我想了解 HTTPS 和 http/2 的区别是什么?

如果我要构建一个 Node.js/express 应用程序,我应该使用什么?

我可以在 http/2 中使用 HTTPS 吗?

也许如果我使用 HTTPS,我不需要 http/2,因为它是相同的,或者 HTTPS 在后台使用 http/2?

我很困惑。

有人链接到我“HTTP 1.1 和 HTTP 2.0 之间的区别 [关闭]”,但我了解 HTTP 和 HTTP2 之间的区别。我问的是 HTTPS 和 HTTP/2

【问题讨论】:

difference between HTTP 1.1 and HTTP 2.0的可能重复 @PatrickHund 我在您的链接中没有看到任何关于 https 的提及。 也许...对您来说更有用的调查是 http 与 https。否则,您就是在比较苹果和冰箱。 【参考方案1】:

HTTP - 客户端(例如 Web 浏览器)用来从服务器(例如 Web 服务器)请求资源的协议。

HTTPS - 一种加密 HTTP 的方法。它基本上使用 SSL/TLS 以加密格式包装 HTTP 消息。网络越来越多地转向 HTTPS,当通过未加密的 HTTP 提供网站时,网络浏览器开始发出越来越多的警告。除非您有充分的理由不这样做,否则请在您现在创建的任何网站上使用 HTTPS。

深入研究 HTTP:

HTTP/1.1 - 这是最近流行的 HTTP 格式。它是一种基于文本的协议,并且效率低下——尤其是在请求大量资源(如典型网页)时。 HTTP/1.1 消息可以未加密(网站地址以 http:// 开头)或使用 HTTPS 加密(网站地址以 https:// 开头)。客户端使用 URL 的开头来决定使用哪个协议,如果没有提供,通常默认为 http://。

HTTP/2 - 2015 年发布的新版本 HTTP,通过从基于文本的协议转移到 binary protocol where each byte is clearly defined 来解决一些性能问题。这更容易为客户端和服务器解析,留出更少的错误空间,还允许multiplexing。 HTTP/2 与 HTTP/1.1 一样,可通过未加密 (http://) 和加密 (https://) 通道使用,但 Web 浏览器仅通过 HTTPS 支持它,由其决定是使用 HTTP/1.1 还是 HTTP/ 2 作为连接开始时 HTTPS 协商的一部分。

HTTP/2 is used by about a third of all websites at the time of writing(截至 2020 年 1 月,高达 50% 的网站和67% of website requests)。但是,并非所有客户端都支持 HTTP/2,因此您应该尽可能支持基于 HTTPS 的 HTTP/1.1 和基于 HTTPS 的 HTTP/2(我相信节点在使用 http 模块时会自动为您执行此操作)。我不相信 HTTP/1.1 会很快被淘汰。您还应该考虑在未加密的 HTTP 上支持 HTTP/1.1,然后重定向到 HTTPS 版本(然后将酌情使用 HTTP/1.1 或 HTTP/2)。像 Apache 或 nginx 这样的 Web 服务器在 Node 前面使这很容易。

HTTP/3 - HTTP 的下一个版本,目前正在开发中。它预计将在 2020 年完成,但可能要到 2020 年末甚至 2021 年才能看到它在 web 服务器和节点等语言中广泛使用。它将建立在名为 QUIC 的基于 UDP 的传输之上(而不是 HTTP/1.1 和 HTTP/2 所基于的基于 TCP 的协议)。它将在协议中包含 HTTPS 的一部分,因此 HTTP/3 只能通过 HTTPS 使用。

简而言之,您应该使用 HTTP/1.1 而不是 HTTPS,如果易于实现,也应该考虑 HTTP/2(并非总是可能的,因为还不是很普遍 - 但已经实现了),并且将来您可能会使用 HTTP/3。

如果您想进行 Web 开发,我建议您对所有这些技术(可能还没有 HTTP/3)有一个深刻的了解。它会让你受益匪浅。

【讨论】:

以上是关于httpS 和 http/2 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

HTTP/2 协议中的 WINDOW_UPDATE 和 SETTINGS 帧有啥区别?

https和http有啥区别?

https和http有啥区别 开发

HTTPS和HTTP有啥区别?

http跟https有啥区别

每期一问:http和https协议有啥区别?