【问题标题】:Whats the difference between a scheme and a protocol in a URL?URL中的方案和协议有什么区别?
【发布时间】:2018-08-03 19:57:08
【问题描述】:

我希望有人可以向我澄清 url 中协议和方案之间的技术差异。 (或确定也可以放入方案中的其余项目?)

最初我以为它们是一样的,而那个方案只是它的另一个名字。

您可以在wikipedia article 中找到此处引用的方案。

尽管根据here 的回答,方案不被视为协议,因为:

没有传输层或编码

这是定义它们差异的正确方法,还是有更多的方法使两者不同?

当我在处理协议或方案时,我如何才能清楚地知道? (或协议以外的东西也有资格在方案中使用?因为似乎协议被放置在 url 的方案部分)

【问题讨论】:

    标签: url protocols url-scheme


    【解决方案1】:

    网络协议是用于传输数据的规则的通信系统。方案是数据结构的系统规划。

    URI 不包含协议,但包含方案 [1]。方案可以与协议相关联,但不是必须的。例如。 http: 方案与 HTTP/1.0 或 1.1 协议 [2] 相关联,但 file: 方案不与任何协议相关联。 Http 是方案和协议,而file 是方案而不是协议。

    [1]https://en.wikipedia.org/wiki/Uniform_Resource_Identifier;29/01/21

    [2]https://www.w3.org/2001/tag/doc/SchemeProtocols.html#useNaturalProtocol;29/01/21

    【讨论】:

      【解决方案2】:

      方案和协议不一样,所以要回答您的问题,从技术上讲,网址中没有协议,只有方案。

      要了解协议是什么,您需要检查请求。

      考虑您的 URL 是(引用自 @clayjones94 答案):

      https://example.com

      您的 HTTP 请求 (sn-p) 以:

      GET / HTTP/1.1
      Host: example.com
      
      ...
      

      https 是方案

      HTTP/1.1 将是协议

      人们将两者混合或交换它们的原因是因为他们正在根据方案推断协议,但您不能真正这样做,因为您可能使用 HTTP/1.1 或 HTTP/2 协议来发送请求https://example.com,它使用的是https方案。

      【讨论】:

      • 所以您说的是方案是同名但可能版本不同的一系列协议的标识符。
      • 不,简而言之,我是说这两者不相同或不相关,我这么说的原因是其他答案试图将两者联系起来,我已经给出了理由在我关于为什么你不能这样做的回答中。
      • 我认为将协议与方案混合是很自然的,因为在大多数人使用的大多数 URL 中,方案和协议或一系列网络协议(例如 http、ftp ,SSH,LDAP)。我认为该方案与网络协议名称(例如文件、mailto)无关的其他反例将使这两个概念之间的区别更加清晰。
      【解决方案3】:

      我喜欢将术语“方案”视为表示“协议”的 URL 区域。

       the scheme
       ┌───┐
       https://www.google.com/
       └───┘
       the specific protocol
      

      【讨论】:

      • 这在技术上是不正确的。 ":" 是一个分隔符,不是方案本身的一部分,"//" 表示 authority 组件的开始。正如您在formal definition 中看到的那样,方案中甚至不允许使用“:”和“/”字符,officially registered schemes 也没有包含它们。您所说的协议也是这种情况下的方案。
      【解决方案4】:

      我的理解是这两个术语有很大的重叠。 protocol 是商定的信息传输方法,scheme 是 URL 用来表示应通过哪种类型的协议提供特定资源的标识符。简而言之,方案只是协议的标识符。

      例如

      在链接 https://example.com 中,httpscheme,它告诉浏览器(或该资源的请求者是谁): example.com 上的资源将通过 超文本传输​​协议 (HTTP) 提供,这是“protocol”的类型。 p>

      方案 协议

      ftp <> File Transer protocol
      http <> Hypertext Transfer Protocol
      

      【讨论】:

      • 好的,感谢您的回答。我只是想澄清一下你对 mailto 的意思:当你说 - “简而言之,方案只是协议的标识符。” - 这是否意味着“mailto:”是与“mailto:”具有不同名称的协议的标识符,或者mailto-scheme的操作/功能是完全不同的东西,根本没有协议启动?
      • @Jonathan002 啊,我刚刚进行了编辑,因为我实际上是不正确的。有一个mailto协议,scheme语法也是mailto。所以在这种情况下,协议名称与方案语法相同
      • "虽然大多数 URI 方案最初设计用于特定协议,并且通常具有相同的名称,但它们在语义上与协议不同。例如,方案 http 通常用于与web资源使用HTTP,但是scheme文件没有协议”en.wikipedia.org/wiki/Uniform_Resource_Identifier
      • 没有mailto协议,而是SMTP。这是方案和协议不同的一个很好的例子。文件方案也一样,对应无协议,只是指向一个本地文件。
      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 2011-08-26
      • 2018-11-29
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多