为什么HTTP协议最初被设计为无连接的?

3
就我而言,Ajax为HTTP协议提供了一种像面向连接的解决方案。但是,为什么HTTP协议最初没有被设计成面向连接的呢?
6个回答

12
因为它旨在用于不需要连接的事物。
它被设计成一种超文本传输协议,这意味着它的责任仅仅是允许发送形式为“请发送文档X”的消息和“这里是您请求的文档X”的消息。
这样的协议为什么要使用持久连接呢?

3
对于清晰度和历史视角的考量,我给予加分。然而,我仍然对将Web作为应用平台的智慧持有疑虑。 - undefined
1
如果你问我,整个网络事物只是昙花一现。 - undefined

7

同时也要注重简单化。

回过头来看,这其实可能并不是一件坏事,因为这意味着HTTP非常简单,它可以轻松地用于简单的任务。 而对于需要状态的更难/更复杂的任务,可以在其上构建层来完成。

正是这种简单性使得HTTP被广泛采用,并使其变得有吸引力。 如果不是这么简单,它就会成为另一个复杂的协议,除非必须使用,否则没有人会使用它。 如果你不相信我,请告诉我为什么你不使用RPC进行通信,使用X11进行显示/渲染来编写你的ajax应用程序? :D

记住,HTTP最初是设计用于实现类似维基百科的读/写信息存储,而不是在线商店、银行、文字处理等。 我记得曾经阅读过一篇关于Tim Berniers-Lee的采访,他非常高兴维基正在获得广泛的认可(引用),因为这正是他想要网络工作的方式。 但在实践中,这在更广泛的网络上并没有发生,大多数网站禁用了旨在启用此功能的HTTP PUT方法。


5

HTTP最初并且仍然是一种无连接的协议。AJAX利用现代浏览器的JavaScript功能,向服务器发送XML(或常见的JSON)而不重新加载页面。

正如提到的那样,主要原因是可扩展性。为每个网站访问者维护一个活动连接将需要大量资源。而且,HTTP的原始创建者没有设想需要维护连接的系统 - HTTP的想法只是发送文本响应以响应请求,然后结束。


HTTP不是无连接的。这意味着UDP,而不是TCP。更准确地说,HTTP v1.0及之前的版本默认情况下不使用持久连接。然而,HTTP v1.1默认使用持久连接。 - undefined
是的,基本上就是我想表达的意思。默认情况下,它通常是一种无连接的协议。 - undefined

4
  1. AJAX不是模拟面向连接的解决方法。它确保根据用户交互,您只需更新客户端上的部分内容,而无需再次从服务器获取完整标记。它不会在您的浏览器和Web服务器之间建立双向连接。

  2. 如果每个服务器都与每个客户端保持实时连接,则互联网规模将限制在数百万用户。


2
为了实现可扩展性,保持连接会消耗资源。

0
我认为原因非常简单 - 在创建http时:
1)大多数/所有页面都是静态的 2)在互联网上几乎没有商业存在,人们认为链接很可能指向不同的站点。
因此,静态页面+非本地内容=无连接协议。

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