HTTP 1.0与1.1

HTTP 1.0 vs 1.1

有人能简要介绍一下HTTP1.0和HTTP1.1之间的区别吗?我已经花了一些时间在这两个RFC上,但是还没有能够找出它们之间的很多区别。维基百科说:

HTTP/1.1 (1997-1999)

Current version; persistent connections enabled by default and works well with proxies. Also supports request pipelining, allowing multiple requests to be sent at the same time, allowing the server to prepare for the workload and potentially transfer the requested resources more quickly to the client.

但这对我来说并不重要。我意识到这是一个有点复杂的主题,所以我不希望得到一个完整的答案,但是有人能给我一个稍微低一点的层次上的差异的简要概述吗?我的意思是,我正在寻找实现HTTP服务器或应用程序所需的信息。我主要是想找一个合适的方向,这样我就可以自己解决了。


代理支持和主机字段:

HTTP 1.1具有规范所要求的主机头。

HTTP1.0并没有正式要求主机头,但是添加一个主机头并不会造成伤害,许多应用程序(代理)希望看到主机头,而不管协议版本如何。

例子:

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

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

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

永久连接:

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

在HTTP1.0中,必须为每个请求/响应对打开一个新的连接。每次响应后,连接都会关闭。由于TCP启动缓慢,导致了一些效率问题。

选项方法:

HTTP/1.1介绍了选项方法。HTTP客户机可以使用此方法来确定HTTP服务器的功能。它主要用于Web应用程序中的跨源资源共享。

缓存:

HTTP 1.0支持通过头进行缓存:如果在之后进行了修改。

HTTP1.1通过使用"实体标记"来扩展对缓存的支持。如果两个资源相同,那么它们将具有相同的实体标记。

HTTP 1.1还添加了if-unmodified-since、if-match和if-none条件头。

还有一些与缓存相关的附加内容,如缓存控制头。

100继续状态:

HTTP/1.1 100中有一个新的返回代码,请继续。这是为了防止客户机在客户机甚至不确定服务器是否可以处理请求或是否被授权处理请求时发送大请求。在这种情况下,客户机只发送头,服务器将告诉客户机100继续,继续进行主体。

更多信息:

  • 摘要式身份验证和代理身份验证
  • 额外的新状态代码
  • 分块传输编码
  • 连接头
  • 增强的压缩支持
  • 更多。


?HTTP 1.0(1994年)

  • 它还在使用中
  • 无法处理分块的客户端可以使用(或压缩)服务器答复

?HTTP 1.1(1996-2015年)

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

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

  • 通过允许多个域从单个IP地址提供服务。

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

  • 通过支持分块编码,允许在总长度已知。
  • 通过添加缓存,更快的响应速度和更大的带宽节省支持。

  • 对于普通应用程序(例如偶尔从启用Web的温度计中检索温度值),HTTP1.0对于客户机和服务器都可以。您可以用大约20行代码编写一个基于简单套接字的HTTP1.0客户机或服务器。

    对于更复杂的场景,HTTP 1.1是一个好方法。由于处理更复杂的HTTP1.1协议的复杂性,预计代码大小将增加3到5倍。复杂性主要来自于,因为在HTTP1.1中,您需要创建、解析和响应各种头文件。您可以让客户机使用HTTP库,或者让服务器使用Web应用程序服务器来保护您的应用程序不受这种复杂性的影响。


    关键的兼容性问题是对持久连接的支持。我最近在一个"支持"HTTP/1.1的服务器上工作,但是当客户端发送HTTP/1.0请求时,未能关闭连接。在编写支持HTTP/1.1的服务器时,请确保它也适用于仅限HTTP/1.0的客户机。


    我能回忆起的第一个不同点是在同一个服务器上运行多个域,部分资源检索,这允许您检索和加速资源的下载(这几乎是每个下载加速器所做的)。

    如果你想开发一个像网站或类似的应用程序,你不需要太担心这些区别,但至少你应该知道GETPOST动词之间的区别。

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

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


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

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


    与1.0相比,1.1减少了Web流量