HTTPS使用TCP还是UDP?


Answers:


41

HTTPS可以在任何可靠的流传输协议上运行。通常,这是TCP,但也可以是SCTP。不能期望它在不可靠的数据报协议UDP上运行(实际上,虽然这不是它的正式名称,但是记住它的好方法)。

UDP的IANA分配是历史记录;当时,几乎每一个协议都被分配了TCP和UDP端口号,即使预期它只会使用一个也是如此。已经讨论过合并端口号注册表,并且从此以后仅将一个端口分配给一个协议。这将使部署将来需要其自己的注册表的传输协议更加容易。我不知道讨论是如何结束的。


1
大多数SSL实现将其公开为SSL套接字,因此它暗指TCP。使用其他交通工具的情况很少见。
纳斯科(Nasko)2010年

3
警告:这个答案已经过时(9年前)。查看有关QUIC协议的答案,该协议是Google用于Chrome的一种实现。只是说。
ivanleoncz

33

它使用TCP。如果不保证数据包到达,将很难在UDP上运行它。如果数据包没有到达,则加密的数据将无法解密。


4
或者,如果数据包到达的顺序不正确,则因为UDP不包含对数据包进行重新排序的规定,例如TCP。
janneb

3
不会将您设为-1,因为这样做有点花哨,但值得注意的是没有理由不能在UDP上运行它。这可能是非典型的,但有可能。
ThatGraemeGuy 2010年

12

对于下一次,如果您想知道默认端口服务是否在tcp或udp上运行,可以在Linux计算机上查看/ etc / services。


3
或Windows计算机,在命令提示符下:find "https" %windir%\system32\drivers\etc\services
ThatGraemeGuy 2010年

1
我的/ etc / services也列出80 / udp。实际上,许多服务已经分配了两个端口,以防万一。
彼得·艾森特拉特

8

如今,HTTPS可以在TCP或UDP之上运行。

新的“ QUIC”协议旨在用一个多路UDP连接代替多个TCP连接,因此可以处理SSL和HTTPS:

HTTPS→SSL→QUIC流→UDP→IP

QUIC最初由Google在2012年开发,目前正在接受IETF审查。有关更多详细信息,请参见Wikipedia。


考虑到当前情况,这应该是答案。例如,出于实验目的,我只能使用表上的DROP目标mangle,使用udp协议的规则来阻止特定IP的HTTPS流量。
ivanleoncz

2
+1,没想到在点击此问题时会学到一些东西。
T.Coutlakis

7

OSI模型允许高层协议在提供正确服务的任何基础协议上运行。HTTPS是使用SSL / TLS安全性的HTTP。SSL / TLS 通常在TCP之上运行,但是没有什么可以阻止您在UDP,SCTP或任何其他传输层协议上运行它。

事实上,基于TCP和UDP的HTTPS都被IANA定义为“众所周知”,并且保留了端口号。

有关“官方”端口/协议组合,请参见http://www.iana.org/assignments/port-numbers


1
有关SSL / TLS如何在UDP上运行的信息,请参见例如tools.ietf.org/html/rfc4347(数据报传输层安全性)。
pehrs 2010年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.