为什么选择端口 80 作为默认 HTTP 端口,选择 443 作为默认 HTTPS 端口?

Sam*_*der 62 networking port sockets

为什么选择端口 80 作为默认 HTTP 端口,选择 443 作为默认 HTTPS 端口?

有没有原因,还是只是这样定义的?

jcb*_*rmu 79

Internet Assigned Numbers Authority (IANA) 是 ICANN 的一个部门,ICANN 是一家非盈利的美国私营公司,负责监督全球 IP 地址分配、域名系统 (DNS)、知名端口以及其他与 Internet 协议相关的符号和数字。

1990 年 3 月,他们发布了RFC1060文档,其中列出了当时的知名端口。在该列表中,没有分配给端口 80 的协议。它从 79 变为 81:

79       FINGER     Finger                                
81       HOSTS2-NS  HOSTS2 Name Server                     
Run Code Online (Sandbox Code Playgroud)

所以,那时 80 端口是正式免费的。

1991 年,Tim Berners-Lee 在一份关于HTTP 0.9的文档中发布了 HTTP 的第一个版本,他说:

If the port number is not specified, 80 is always assumed for HTTP.
Run Code Online (Sandbox Code Playgroud)

然后在 1992 年 7 月发布了RFC 1340,它废弃了出现的RFC 1060

   finger           79/tcp    Finger                            
   finger           79/udp    Finger                            
   www              80/tcp    World Wide Web HTTP               
   www              80/udp    World Wide Web HTTP               
Run Code Online (Sandbox Code Playgroud)

该文档使端口 80 正式成为 www 或 http。但是,该文件中没有关于 443 的任何内容。

1994 年 10 月出现了RFC 1700,其中第一次出现:

https           443/tcp    https  MCom
https           443/udp    https  MCom
#                          Kipp E.B. Hickman <kipp@mcom.com>
Run Code Online (Sandbox Code Playgroud)

它似乎是由当时在 Mosaic 工作的Kipp EB Hickman征集的,Mosaic 是第一家 GUI 浏览器公司,后来成为 Netscape。

不清楚为什么选择 443,但是之前的 RFC 从374 到 512有一个空白,而在这个 RFC 中,从375 到 451的空间被填满了。很可能这些数字只是按照请求的顺序给出的。

  • "17 QUOTE Quote of the Day" *那*是一个重要的港口! (14认同)
  • 需要考虑的一件事是,当这些端口被分配时,传输层协议开发迅速而激烈,各州的学者都在致力于这个或那个项目。RFC 编辑 (Jon Postel) 对可接受的规范最终版本的标准非常严格,因此他们了解正在进行的项目,但这些项目可能会或可能不会获得正式的 RFC 状态,然后可以被包含在 IANA 端口列表中。此外,如果未预留端口号,则可以请求特定端口号,因此它们不是按编号顺序排列的。 (6认同)
  • 除了“443 尚未分配”之外,可能没有其他原因,我一直选择服务端口,没有具体原因。 (5认同)
  • 一些协议(FTP 是我现在能想到的最明显也是唯一的例子)使用两个端口。也许,他们想为现有协议的未来扩展留下空白? (3认同)
  • @AL 有一个空白,您可能正在查看协议号列表,而不是端口号列表 (2认同)
  • TCP/IP 的前身 NCP 需要一对端口。这个要求在 1983 年过时了。 (2认同)

小智 12

jcbermu 的回答提到 RFC 1340(分配的编号)有一系列未使用的端口,从 374 到 512,而 443 正好在中间。

assert https_port == (374 + 512) / 2 == 443