这行在 rfc2068 中是什么意思

What does this line mean in rfc2068

source

In addition, the proliferation of incompletely-implemented
applications calling themselves "HTTP/1.0" has necessitated a
protocol version change in order for two communicating applications
to determine each other's true capabilities.

用人话来说,他们的意思是:很多人说他们使用了 HTTP 1.0 而实际上没有,当有人说出来时,没有人知道它是否真的是 HTTP 1.0。

为了摆脱困境,他们选择了一个新号码。

来自 RFC:

HTTP has been in use by the World-Wide Web global information initiative since 1990. The first version of HTTP, referred to as HTTP/0.9, was a simple protocol for raw data transfer across the Internet.

改写:

在 HTTP 标准化之前,实现上存在差异,这意味着它们不能始终正确地相互通信(例如,某些 web-browsers 无法与某些 web-servers 一起工作)。 RFC 文章将这些 pre-standardisation 实现称为使用 HTTP/0.9.

HTTP/1.0, as defined by RFC 1945, improved the protocol by allowing messages to be in the format of MIME-like messages, containing metainformation about the data transferred and modifiers on the request/response semantics. However, HTTP/1.0 does not sufficiently take into consideration the effects of hierarchical proxies, caching, the need for persistent connections, and virtual hosts. In addition, the proliferation of incompletely-implemented applications calling themselves "HTTP/1.0" has necessitated a protocol version change in order for two communicating applications to determine each other's true capabilities.

改写:

在 HTTP 被标准化为 HTTP/1.0 之后,它确实有助于解决互操作性和兼容性问题,但是协议的版本 1.0 只是假定所有 HTTP 软件都能够将其用于其现有应用程序,但现在 HTTP/1.0 已经 in-use 一段时间了,HTTP 协议规范的维护者发现 他们需要扩展 HTTP 来支持这些 use-cases (例如代理、缓存、持久连接、virtual-hosts)虽然这些事情可以使用 HTTP/1.0 中的 built-in 扩展机制来完成,但他们觉得有必要将版本号增加到 HTTP/1.1 为了防止简单地假设远程主机支持或不支持某个功能的实现。

例子

一个很好的例子是 HTTP/1.1 中的 Host header 允许 web-server 从单个 IP 地址和端口号服务到 serve-up基于 Host header 的不同网站(以前 HTTP/1.1 存在的网络服务器只能为每个 IP 地址提供一个网站,这是一个问题)。 HTTP/1.0 确实允许客户端和服务器添加自己的自定义 header,例如 Host,但是客户端或服务器无法知道另一端是否实际支持Host header。但是在 HTTP/1.1Host header 以前被添加到规范中,所以如果客户端和服务器都声明他们使用 HTTP/1.1 那么另一端就知道他们会识别Host header 并正确处理。

所以在 HTTP/1.0 天里,使用自定义 headers,这就是浏览器请求 www.example.com 时的结果如果它是从共享 Webhost 提供的:

Browser (to DNS server): "Please give me the IP address for 'www.example.com'"
DNS Server (to browser): "www.example.com is 198.51.100.7"

Browser (to 198.51.100.7): "Hello, I speak HTTP/1.0, please send me index.html for Host: www.example.com
Server (to browser): "I also speak HTTP/1.0, here is index.html for 'not-actually-example.com'" 

如您所见,浏览器得到了 not-actually-example.com,即使它要求 www.example.com,因为 Web-server 使用的 HTTP/1.0 无法识别 Host header,即使 web-browser 正在发送 Host header(作为 extension/experimental header)。 浏览器软件无法知道 not-actually-example.com 是否是用户想要的