为什么HTTP被设计成一种拉取协议?

4

我看了很多关于Html 5 WebSockets的演示,其中服务器可以与客户端初始化连接并在没有来自客户端的请求的情况下推送数据。

我们不需要轮询等。

而且,我很好奇,为什么Http最初被设计为“拉”而不是全双工协议?这种决定背后的原因是什么?


1
当时这似乎是个好主意: )。要考虑到那时的“互联网”是非常不同的。HTTP现在只是我们留下的历史片段。它就像一件儿童外套,当你成长后它并不真正舒适。 - kapa
现在我们使用HTTP来传输数据,将来会使用其他协议来传输数据。 - Kyle
请注意,HTTP/2 添加了“推送”。 - Julian Reschke
3个回答

10
因为当http首次设计时,它的目的是用于从服务器检索文档。最简单的方法是客户端请求文档,然后将其作为响应传输给客户端(如果文档不存在,则返回错误)。如果使用推送协议,这意味着服务器需要保持客户端连接长时间,从而造成更多的资源管理问题 - 请记住,我们在这里谈论的是1990年代初期的情况。

2
+1. 它的设计初衷是用于浏览文档,而不是创建基于事件的应用程序。请求/响应机制的简单性是它今天仍然被使用的原因,也是许多其他协议的基础(如SOAP、WebDAV和会话初始化协议)。 - alexrs

2

HTTP最初设计用于从服务器简单地检索超文本文档。当页面只是纯静态HTML而没有脚本功能时,没有理由将任何内容推送到客户端。

由于当时没有将内容推回客户端的需求,因此协议保持了简单性。


0

HTTP主要是一种拉取协议——某人在Web服务器上加载信息,用户使用HTTP在方便的时候从服务器上拉取信息。特别地,TCP连接是由想要接收文件的机器发起的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接