【问题标题】:Why HTTP protocol was designed to be connectionless at first?为什么 HTTP 协议最初被设计为无连接的?
【发布时间】:2009-06-21 10:46:28
【问题描述】:

就我而言,Ajax 提供了一种解决方法,可以让 HTTP 协议的行为类似于面向连接的行为。但是为什么一开始 HTTP 协议没有设计为面向连接的呢?

【问题讨论】:

    标签: http networking protocols


    【解决方案1】:

    因为它旨在用于连接没有意义的事情。

    它被设计为超文本传输​​协议,这意味着它的职责只是允许发送“请向我发送文档 X”和“这里是文档 X,按照您的要求”形式的消息。

    这样的协议应该使用持久连接做什么?

    【讨论】:

    • +1 以获得清晰和历史视角。我仍然怀疑将 Web 用作应用程序平台是否明智。
    • 如果你问我,整个网络都是昙花一现。
    【解决方案2】:

    而且简单。

    回想起来可能不是一件坏事,因为这意味着 HTTP 很简单,这意味着它可以很容易地用于简单的事情。 您可以通过在其之上构建层来将其用于需要状态的更难/更复杂的东西。

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

    请记住,HTTP 最初设计用于实现像读/写信息存储这样的 wiki,而不是在线商店、银行、文字处理器等。 我记得读过一次对 Tim Berniers-Lee 的采访,他非常高兴 wiki 正在获得广泛的接受,因为(解释)这就是他希望网络如何工作的方式。 实际上,这在更广泛的网络上不会发生,并且大多数网站都禁用了旨在启用此功能的 HTTP PUT 方法。

    【讨论】:

      【解决方案3】:
      1. AJAX 不是面向连接的解决方法。这是为了确保基于用户交互,您只想在客户端更新一部分内容,而不是再次从服务器获取完整标记。它不会在您的浏览器和网络服务器之间建立来回连接。

      2. 如果每台服务器都与每个客户端建立实时连接,那么互联网规模将限制在几百万用户。

      【讨论】:

        【解决方案4】:

        HTTP 最初是并且仍然是无连接的。 AJAX 只是利用现代浏览器的 JavaScript 功能将 XML(或通常是 JSON)发送到服务器,而无需重新加载页面。

        如前所述,主要原因是可扩展性。为网站的每个查看者保持活动连接将非常耗费资源。此外,事实是 HTTP 的最初创建者并没有设想任何需要维护连接的系统 - HTTP 的想法只是向请求发送文本响应然后完成。

        【讨论】:

        • HTTP 不是无连接的。这意味着 UDP,而不是 TCP。更准确地说,HTTP v1.0 及更早版本默认不使用持久连接。然而,HTTP v1.1 默认使用持久连接。
        • 是的,这基本上就是我的意思。默认情况下,本质上,它通常是一个无连接协议。
        【解决方案5】:

        出于可扩展性的原因。保持连接会消耗资源。

        【讨论】:

          【解决方案6】:

          我认为原因很简单——http 是什么时候创建的:

          1) 大多数/所有页面都是静态的 2) 由于互联网上几乎没有商业存在,因此假设链接很可能不会指向不同的站点。

          所以,静态页面 + 非本地内容 = 无连接协议。

          【讨论】:

            猜你喜欢
            • 2012-10-23
            • 2011-03-14
            • 2020-05-17
            • 1970-01-01
            • 2015-09-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-10-23
            相关资源
            最近更新 更多