Node.js 为什么web服务器仍然使用http 1.1而不是http 2?

Node.js 为什么web服务器仍然使用http 1.1而不是http 2?,node.js,http,networking,backend,http2,Node.js,Http,Networking,Backend,Http2,作为一点背景知识,我刚刚完成了训练营,并开始深入研究网络和web服务器 在阅读了有关OSI模型、TCP/IP模型和HTTP的一些信息后,我发现这些理论知识与我在现实生活中所做的工作之间存在某种差距 例如,我构建了几个在node.js上运行服务器的项目。 直到最近,我才发现它们运行在HTTP 1.1上 我看到的所有教程或其他示例都使用HTTP1.1而不是HTTP2 理论上,HTTP2在处理大量数据方面做得更好,而且确实比http1.1更安全 尽管存在一些缺点,但http2似乎是http的高级形式,

作为一点背景知识,我刚刚完成了训练营,并开始深入研究网络和web服务器

在阅读了有关OSI模型、TCP/IP模型和HTTP的一些信息后,我发现这些理论知识与我在现实生活中所做的工作之间存在某种差距

例如,我构建了几个在node.js上运行服务器的项目。 直到最近,我才发现它们运行在HTTP 1.1上

我看到的所有教程或其他示例都使用HTTP1.1而不是HTTP2

理论上,HTTP2在处理大量数据方面做得更好,而且确实比http1.1更安全

尽管存在一些缺点,但http2似乎是http的高级形式,并且在过去几年中已经成熟

我很难理解为什么服务器语言(或者node.js的运行时)仍然使用HTTP1.1而不是2


有人能解释一下吗?

当创建使用Node.js编写的web服务器时,您可以通过要求
require('HTTP')
来选择使用HTTP服务器和客户端。 但是还要注意,http2模块提供了HTTP/2协议的实现。可通过以下方式访问:

`const http2 = require('http2')`;
核心API提供了专门围绕支持HTTP/2协议特性而设计的低级接口。HTTP和HTTP2服务器之间的兼容性是通过兼容性API实现的

您可以在此处阅读更多信息:


我希望这本入门书能有所帮助?

我相信采用HTTP 2.0的必要性并不高。大多数互联网都运行HTTP 1.1/1.0,人们对此感到很舒服。虽然大多数web服务器应用程序支持HTTP 2.0,但它们仍然需要进行更新和配置才能做到这一点。为什么要把精力放在已经奏效的事情上呢

迁移到Http 2.0仍然会给某些项目或组织带来问题,例如

对于大多数人来说,采用HTTP 2.0和工具默认采用HTTP 2.0只是一个缓慢的过程,因为不需要大多数人

因此,人们不太可能采用变化无常的技术

随着GRPC和微服务越来越流行,工具和使用它们的人可能会默认使用http2。

TL;博士 许多人没有意识到新的变化。或者,有些人不受您提到的这些更改的影响,也不认为有必要重写他们的代码(特别是当HTTP 3.0正在开发中时)


以IP地址为例。IPv6已经过时一段时间了,虽然有些人使用它,但65%的互联网使用的是旧技术IPv4。这是因为旧技术工作完美,许多系统都是古老的

(供参考,这里是谷歌的)

现在,在您的例子中,HTTP 2与HTTP 1。许多人甚至不知道http2已经过时了。就我而言,出于方便,我使用了标准HTTP模块。你提到的安全缺陷不会影响很多人,而且随着HTTP 3的问世,人们为什么要切换呢?一、 首先,我要等待HTTP 3。然而,随着时间的推移,越来越多的人将开始采用HTTP2标准


而且,正如许多人所注意到的,他们的观点与你所说的“现实生活中的用法”有很大的不同。Axios就是一个例子,它是Node.js生态系统的主要请求模块。它几乎没有维护,有几个主要问题被注意到,它们似乎永远不会被修复,构建正在失败,从2015年开始有222个问题,但在我写这篇文章的时候,每周有16434719人下载它。许多人在没有进行全面调查的情况下看不到这些问题,或者这些bug不会影响它们的使用。

谢谢您的回答。然而,这仍然不能回答我的问题,为什么HTTP1.1是标准的,而HTTP2是标准的。我知道node.js支持http2,但是默认的仍然是http1.1,这也是大多数示例使用的。您能详细说明一下吗?NodeJS实现http、http2和https接口,开发人员可以自由选择适合他们的接口,而这些选择并不定义NodeJS标准。您是否有一个NODEJS文档引用声明http接口是标准的?我不想争论是否支持http2。我的意思是,如果您学习任何类型的教程,或者只看其他开源项目,那么使用HTTP1.1的服务器非常普遍。Like express库使用http1.1作为其默认“express”。我想知道人们使用HTTP1.1而不是2.0是否有什么特别的原因。