URL 中的方案和协议有什么区别?

Whats the difference between a scheme and a protocol in a URL?

我希望有人能向我阐明 url 中协议和方案之间的技术区别。 (或确定也可以放置在方案中的其余项目?)

本来我以为是一样的,那个scheme不过是它的别名而已

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

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

there is no transport layer or encoding

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

我如何才能清楚地分辨出我在处理协议或方案? (或者 除了协议之外的其他东西也有资格在方案中使用?因为协议似乎被放置在 url 的方案部分)

我的理解是这两个术语有很大的重叠。 protocol 是商定的信息传输方法,scheme 是 URL 用来表达特定资源应该是什么协议类型的标识符服务结束。简而言之,方案只是协议的标识符。

例如

在linkhttps://example.com中,https方案 告诉浏览器(或该资源的请求者是谁)位于 example.com 的资源将通过 安全超文本传输​​协议( HTTPS),也就是“协议”的类型。

方案 <> 协议

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

我喜欢将术语 "scheme" 视为 URL 的区域,表示 "protocol"。

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

方案和协议是不一样的,所以为了回答你的问题,技术上 URL 中没有协议,只有方案。

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

考虑你的 URL 是(引自@clayjones94 回答):

https://example.com

您的 HTTP 请求(片段)以:

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

...

https 将是方案

HTTP/1.1 将是协议

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

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

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

[1] https://en.wikipedia.org/wiki/Uniform_Resource_Identifier; 21 年 1 月 29 日

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