HTTP 1.0 vs 1.1
有人能给我一个HTTP 1.0和HTTP 1.1之间的区别的简要概述吗? 我已经花了一些时间与两个RFC,但还没有能够拉出他们之间的很多区别。 维基百科这样说:
HTTP / 1.1(1997-1999)
当前版本; 持久性连接默认启用,并与代理很好地协作。 还支持请求stream水线,允许同时发送多个请求,从而允许服务器为工作负载做准备,并可能更快地将请求的资源传输到客户端。
但这对我来说并不意味着很多。 我意识到这是一个有点复杂的话题,所以我并不期待一个完整的答案,但是有人能给我一个比较低级的差异的简要概述吗?
通过这个我的意思是我正在寻找我需要知道的信息来实现HTTP服务器或应用程序。 我主要是在正确的方向寻找一个微调,以便我可以自己解决。
代理支持和主机字段:
根据规范,HTTP 1.1具有必需的主机头。
HTTP 1.0不正式地要求一个主机头,但是它不会损害添加一个,并且许多应用程序(代理)期望看到主机头,不pipe协议版本。
例:
GET / HTTP/1.1 Host: www.blahblahblahblah.com
这个头是有用的,因为它允许你通过代理服务器路由消息,也因为你的networking服务器可以区分同一台服务器上的不同站点。
所以这意味着如果你有blahblahlbah.com和helohelohelo.com都指向相同的IP。 您的Web服务器可以使用“主机”字段来区分客户机所需的站点。
持续连接:
HTTP 1.1还允许持久连接,这意味着您可以在同一个HTTP连接上拥有多个请求/响应。
在HTTP 1.0中,您必须为每个请求/响应对打开一个新的连接。 在每个响应之后,连接将被closures。 由于TCP慢启动,这导致了一些很大的效率问题。
选项方法:
HTTP / 1.1引入了OPTIONS方法。 HTTP客户端可以使用此方法来确定HTTP服务器的function。 它主要用于Web应用程序中的跨源资源共享。
caching:
HTTP 1.0支持通过头部进行caching:If-Modified-Since。
HTTP 1.1通过使用称为“实体标签”的东西来扩展caching支持。 如果2个资源相同,则它们将具有相同的实体标签。
HTTP 1.1还添加了If-Unmodified-Since,If-Match,If-None-Match条件标头。
还有一些与Cache-Control标题相关的caching。
100继续状态:
HTTP / 1.1 100 Continue中有一个新的返回码。 这是为了防止客户端发送大的请求,当客户端甚至不确定服务器是否可以处理请求,或者被授权处理请求。 在这种情况下,客户端只发送标题,服务器将告诉客户端100继续,继续正文。
多得多:
- 摘要式身份validation和代理身份validation
- 额外的新状态代码
- 分块传输编码
- 连接标题
- 增强的压缩支持
- 更多。
RFC 2616,第19.6.1节“从HTTP / 1.0更改”
对于微不足道的应用(例如零星地从networking启用的温度计中检索温度值),HTTP 1.0对于客户端和服务器都是好的。 您可以在大约20行代码中编写一个基于套接字的HTTP 1.0客户机或服务器。
对于更复杂的情况,HTTP 1.1是要走的路。 预计代码量将增加3-5倍,以处理更复杂的HTTP 1.1协议的复杂性。 复杂性主要是因为在HTTP 1.1中,您将需要创build,parsing和响应各种头文件。 您可以通过让客户端使用HTTP库或服务器使用Web应用程序服务器来将应用程序从这种复杂性中屏蔽掉。
关键兼容性问题是支持持续连接 。 我最近在一个“支持”HTTP / 1.1的服务器上工作,但在客户端发送HTTP / 1.0请求时未能closures连接。 编写支持HTTP / 1.1的服务器时,确保它也适用于仅HTTP / 1.0的客户端。
我能从头脑中回想到的第一个区别是运行在同一台服务器上的多个域,部分资源检索,这允许您检索并加速资源的下载(几乎每个下载加速器都是这样)。
如果你想开发一个像网站或类似的应用程序,你不必担心太多的差异,但至less应该知道GET
和POST
动词的区别。
现在,如果你想开发一个浏览器,那么你就必须知道完整的协议,以及你是否正在开发一个HTTP服务器。
如果您只想知道HTTP协议,我会build议您以HTTP / 1.1而不是1.0开头。
HTTP 1.0(1994)
- 它仍在使用中
- 可以由无法处理分块(或压缩)服务器回复的客户端使用
HTTP 1.1(1996 – 2015)
- 将许多扩展forms化为1.0版本
- 支持持久和stream水线连接
- 支持分块传输,压缩/解压缩
- 支持虚拟主机(一台拥有多个域的单个IP地址的服务器)
- 支持多种语言
- 支持字节范围传输; 用于恢复中断的数据传输
HTTP 1.1是HTTP 1.0的增强版。 以下列出了四大改进:
-
通过允许从一个IP地址提供多个域来有效地使用IP地址。
-
通过允许Web浏览器通过单个持久连接发送多个请求,响应速度更快。
- 对dynamic生成的页面的响应更快,支持分块编码,允许在总长度已知之前发送响应。
- 通过添加caching支持,可以更快速地响应并节省带宽。
与1.0相比,1.1减less了networkingstream量
HTTP 1.1是最新版本的超文本传输协议,即万维网应用程序协议,在互联网的TCP / IP协议套件上运行。 与HTTP 1.0相比,HTTP 1.1提供了比原始HTTP更快的网页交付并减less了networkingstream量。
Webstream量示例:例如,如果您正在访问服务器。 同时有这么多的用户正在访问服务器的数据,那么有挂机的机会。 这是networkingstream量。