有人能简单介绍一下HTTP 1.0和HTTP 1.1之间的区别吗?我花了一些时间与两个RFC,但未能在它们之间拉出很多差异。维基百科说:
HTTP / 1.1(1997-1999)
当前版本;默认情况下启用持久连接,并且与代理一起使用。还支持请求流水线操作,允许同时发送多个请求,允许服务器为工作负载做准备,并可能更快地将请求的资源传输到客户端。
但这对我来说意义不大。我意识到这是一个有点复杂的主题,所以我不期待一个完整的答案,但有人可以给我一个较低层次的差异的简要概述吗?
我的意思是,我正在寻找实现HTTP服务器或应用程序所需的信息。我主要是想在正确的方向上轻推一下,这样我就可以自己搞清楚了。
答案 0 :(得分:334)
代理支持和主机字段:
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 Slow Start,这会导致一些大的效率问题。
OPTIONS方法:
HTTP / 1.1引入了OPTIONS方法。 HTTP客户端可以使用此方法来确定HTTP服务器的功能。它主要用于Web应用程序中的跨源资源共享。
<强>缓存:强>
HTTP 1.0支持通过标头进行缓存:If-Modified-Since。
HTTP 1.1通过使用名为“entity tag”的东西大量扩展了缓存支持。 如果2个资源相同,那么它们将具有相同的实体标记。
HTTP 1.1还添加了If-Unmodified-Since,If-Match,If-None-Match条件头。
还有一些与缓存相关的新增功能,如Cache-Control标头。
100继续状态:
HTTP / 1.1 100中有一个新的返回码。这是为了防止客户端在客户端甚至不确定服务器是否可以处理请求或是否有权处理请求时发送大量请求。在这种情况下,客户端仅发送标题,服务器将告诉客户端100继续,继续正文。
更多:
答案 1 :(得分:11)
HTTP1.0(1994)
HTTP1.1(1996-2015)
HTTP 1.1是HTTP 1.0的增强功能。以下列出了 四大改进:
通过允许多个域来有效使用IP地址 从单个IP地址提供。
通过允许网络浏览器发送多个来更快地响应 通过单个持久连接请求。
答案 2 :(得分:8)
对于琐碎的应用程序(例如偶尔从支持Web的温度计检索温度值),HTTP 1.0对客户端和服务器都很好。您可以在大约20行代码中编写基于套接字的基本HTTP 1.0客户端或服务器。
对于更复杂的场景,HTTP 1.1是可行的方法。期望代码大小增加3到5倍,以处理更复杂的HTTP 1.1协议的复杂性。复杂性主要来自,因为在HTTP 1.1中,您将需要创建,解析和响应各种标头。您可以通过让客户端使用HTTP库或服务器使用Web应用程序服务器来保护您的应用程序免受此复杂性的影响。
答案 3 :(得分:7)
密钥兼容性问题是对persistent connections的支持。我最近在一个“支持”HTTP / 1.1的服务器上工作,但在客户端发送HTTP / 1.0请求时却无法关闭连接。编写支持HTTP / 1.1的服务器时,请确保它也适用于仅支持HTTP / 1.0的客户端。
答案 4 :(得分:5)
我能从头脑中回忆起的第一个差异之一是在同一服务器上运行的多个域,部分资源检索,这使您可以检索并加速资源的下载(几乎每个下载加速器都是如此)一样)。
如果你想开发类似网站或类似网站的应用程序,你不必过分担心这些差异,但应该知道GET
和{{之间的区别至少1}}动词。
现在,如果你想开发一个浏览器,那么你必须知道完整的协议,以及你是否想要开发一个HTTP服务器。
如果您只想了解HTTP协议,我建议您从HTTP / 1.1而不是1.0开始。
答案 5 :(得分:2)
HTTP 1.1是超文本传输协议的最新版本,万维网传输协议是在Internet的TCP / IP协议套件之上运行的万维网应用程序协议。与HTTP 1.0相比,HTTP 1.1提供比原始HTTP更快的网页传送,并减少了Web流量。
Web流量示例:例如,如果您正在访问服务器。同时这么多用户正在访问服务器以获取数据,然后有可能挂起服务器。这是网络流量。
答案 6 :(得分:1)
HTTP 1.1在其规范中带有主机头,而HTTP 1.0正式没有主机头,但是它不拒绝添加主机头。
主机头很有用,因为它允许客户端在代理服务器上路由消息,并且1.0和1.1版本的HTTP之间的主要区别是:
答案 7 :(得分:0)
与1.0相比,1.1减少了网络流量