HTTPS 使用 TCP 还是 UDP?
答案1
HTTPS 可以运行在任何可靠流传输协议。通常是 TCP,但也可能是 SCTP。它不应该在 UDP 上运行,因为 UDP 是一种不可靠的数据报协议(事实上,虽然这不是它的官方名称,但这是一种记住它是什么的好方法)。
IANA 对 UDP 的分配是有历史原因的;当时,几乎每个协议都被分配了 TCP 和 UDP 端口号,即使人们预计它只会使用一个端口号。有人讨论过合并端口号注册表,从现在起只为一个协议分配一个端口。这是为了让部署未来的传输协议变得更容易,否则这些协议将需要自己的注册表。我不知道那次讨论的结果如何。
答案2
它使用 TCP。如果不能保证数据包到达,则很难在 UDP 上运行它。如果数据包未到达,则加密数据将无法解密。
答案3
如今 HTTPS 可以在 TCP 或 UDP 上运行。
新的“QUIC”协议旨在用一个多路复用的 UDP 连接取代多个 TCP 连接,因此可以处理 SSL 和 HTTPS:
HTTPS → SSL → QUIC 流 → UDP → IP
QUIC 最初由 Google 于 2012 年开发,目前正在接受 IETF 审核。有关更多详细信息,请参阅 Wikipedia。
答案4
OSI 模型允许更高层协议在任何提供正确服务的底层协议上运行。HTTPS 是使用 SSL/TLS 安全性的 HTTP。SSL/TLS通常在 TCP 上运行,但没有什么可以阻止您在 UDP、SCTP 或任何其他传输层协议上运行它。
事实上,TCP 和 UDP 上的 HTTPS 都被 IANA 定义为“众所周知的”,并且具有保留的端口号。
看http://www.iana.org/assignments/port-numbers用于“官方”端口/协议组合。