有人能给我简要概述一下 HTTP 1.0 和 HTTP 1.1 之间的区别吗?我花了一些时间研究这两个 RFC,但未能找出它们之间的很大差异。维基百科是这样说的:

HTTP/1.1 (1997-1999)

当前版本;默认情况下启用持久连接,并且与代理配合良好。还支持请求管道,允许同时发送多个请求,允许服务器为工作负载做好准备,并可能更快地将请求的资源传输到客户端。

但这对我来说意义不大。我意识到这是一个有点复杂的主题,所以我不期待完整的答案,但是有人可以给我一个较低级别的差异的简要概述吗?
我的意思是我正在寻找实现 HTTP 服务器或应用程序所需的信息。我主要是在寻找正确方向的推动,这样我就可以自己找到答案。

有帮助吗?

解决方案

代理支持和主机字段:

根据规范,HTTP 1.1 有一个必需的主机标头。

HTTP 1.0 并没有正式要求 Host 标头,但添加一个也没什么坏处,并且许多应用程序(代理)希望看到 Host 标头,无论协议版本如何。

例子:

GET / HTTP/1.1
Host: www.blahblahblahblah.com

此标头很有用,因为它允许您通过代理服务器路由消息,而且您的 Web 服务器可以区分同一服务器上的不同站点。

所以这意味着如果 blahblahlbah.com 和 helohelohelo.com 都指向同一个 IP。您的 Web 服务器可以使用主机字段来区分客户端计算机想要哪个站点。

持久连接:

HTTP 1.1 还允许您拥有持久连接,这意味着您可以在同一个 HTTP 连接上拥有多个请求/响应。

在 HTTP 1.0 中,您必须为每个请求/响应对打开一个新连接。每次响应后连接都会关闭。这会导致一些大的效率问题,因为 TCP 慢启动.

选项方法:

HTTP/1.1 引入了 OPTIONS 方法。HTTP 客户端可以使用此方法来确定 HTTP 服务器的能力。它主要用于 Web 应用程序中的跨源资源共享。

缓存:

HTTP 1.0 通过标头支持缓存:如果-修改-自。

HTTP 1.1 通过使用称为“实体标记”的东西对缓存支持进行了很大的扩展。如果两个资源相同,那么它们将具有相同的实体标签。

HTTP 1.1 还添加了 If-Unmodified-Since、If-Match、If-None-Match 条件标头。

还有与缓存相关的其他附加内容,例如 Cache-Control 标头。

100 继续状态:

HTTP/1.1 中有一个新的返回代码 100 Continue。这是为了防止客户端在不确定服务器是否可以处理该请求或是否有权处理该请求时发送大型请求。在这种情况下,客户端仅发送标头,服务器将告诉客户端 100 继续,继续发送正文。

多得多:

  • 摘要认证和代理认证
  • 额外的新状态代码
  • 分块传输编码
  • 连接头
  • 增强的压缩支持
  • 还有很多很多。

其他提示

❖ HTTP 1.0 (1994)

  • 目前仍在使用中
  • 可由无法处理分块的客户端使用 (或压缩的)服务器回复

HTTP 1.1(1996-2015)

  • 正式化了 1.0 版本的许多扩展
  • 支持持久连接和管道连接
  • 支持分块传输、压缩/解压缩
  • 支持虚拟主机(具有单个IP地址的服务器托管多个域)
  • 支持多种语言
  • 支持字节范围传输;用于恢复中断的数据 转移

HTTP 1.1 是 HTTP 1.0 的增强。下面列出了 四大改进:

  1. 通过允许多个域有效使用 IP 地址 从单个 IP 地址提供服务。

  2. 通过允许 Web 浏览器发送多个 通过单个持久连接发出请求。

  3. 通过支持动态生成的页面,加快响应速度 分块编码,允许在其 总长度是已知的。
  4. 通过添加缓存,响应速度更快,带宽节省率更高 支持。

对于琐碎的应用程序(例如偶尔从支持Web的温度计检索温度值),HTTP 1.0对客户端和服务器都很好。您可以在大约20行代码中编写基于套接字的基本HTTP 1.0客户端或服务器。

对于更复杂的场景,HTTP 1.1是可行的方法。期望代码大小增加3到5倍,以处理更复杂的HTTP 1.1协议的复杂性。复杂性主要来自,因为在HTTP 1.1中,您将需要创建,解析和响应各种标头。您可以通过让客户端使用HTTP库或服务器使用Web应用程序服务器来保护您的应用程序免受此复杂性的影响。

密钥兼容性问题是对持久连接的支持。我最近在一个“支持”的服务器上工作过。 HTTP / 1.1,但在客户端发送HTTP / 1.0请求时无法关闭连接。编写支持HTTP / 1.1的服务器时,请确保它也适用于仅支持HTTP / 1.0的客户端。

我能从头脑中回忆起的第一个差异之一是在同一服务器上运行的多个域,部分资源检索,这使您可以检索并加快资源下载(这几乎是每个下载加速器)一样)。

如果您想开发类似网站或类似网站的应用程序,您不必过分担心这些差异,但应该知道 GET 之间的区别至少和 POST 动词。

现在,如果你想开发一个浏览器,那么你必须知道完整的协议,以及你是否想要开发一个HTTP服务器。

如果您只想了解HTTP协议,我建议您从HTTP / 1.1而不是1.0开始。

HTTP 1.1 是超文本传输​​协议的最新版本,超文本传输​​协议是在 Internet 的 TCP/IP 协议套件之上运行的万维网应用协议。与 HTTP 1.0 相比,HTTP 1.1 提供了比原始 HTTP 更快的网页传送速度并减少了 Web 流量。

网络流量示例:例如,如果您正在访问服务器。同时这么多用户访问服务器获取数据,那么服务器就有可能挂掉。这是网络流量。

与1.0相比,1.1减少了网络流量

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top