438

可以使用的最高端口号是多少?

4

8 回答 8

612

端口号是一个无符号的 16 位整数,因此是 65535。

于 2008-09-22T04:53:02.130 回答
148

最大端口号是无符号短 2^16-1: 65535

注册端口是由 Internet Corporation for Assigned Names and Numbers (ICANN) 分配给特定用途的端口。每个注册端口都在 1024–49151 范围内。

自 2001 年 3 月 21 日起,注册机构为 ICANN;在那之前是IANA。

编号小于注册端口号的端口称为知名端口;编号大于已注册端口的端口称为动态和/或私有端口。

维基百科:注册端口

于 2008-09-22T04:53:11.007 回答
76

据我了解,您最多只能使用 49151,因为从 49152 到 65535 是为临时端口保留的

于 2008-09-22T04:56:28.017 回答
38

只是对ssamery 's answer的跟进。临时端口范围(至少在 Linux 上,我怀疑其他 Unices 也是如此)不是固定的。这可以通过写入来控制 /proc/sys/net/ipv4/ip_local_port_range

唯一的限制(就 IANA 而言)是 1024 以下的端口被指定为知名端口。以上端口可免费使用。通常您会发现 1024 以下的端口仅限于超级用户访问,我相信正是出于这个原因。

于 2008-09-22T05:10:13.133 回答
17

根据 RFC 793,端口是 16 位无符号整数。

这意味着范围是 0 - 65535。

但是,在该范围内,端口 0 - 1023 通常保留用于特定目的。我说一般是因为除了端口 0 之外,通常不会执行 0-1023 保留。TCP/UDP实现通常不强制除 0 之外的保留。如果需要,您可以在端口 80、25 或 65535 上运行 Web 服务器的 TLS 端口,而不是标准的 443。同样,即使它是SMTP 服务器侦听端口 25 的标准,您可以在 80、443 或其他端口上运行它。

大多数实现为特定目的保留 0 - 随机端口分配。所以在大多数实现中,说“监听端口 0”实际上意味着“我不在乎我使用什么端口,只要给我一些随机未分配的端口来监听”。

因此,使用 0-65535 范围内的端口(包括 0、临时保留范围等)的任何限制都是特定于实现(即操作系统/驱动程序)的,但是包括 0 在内的所有端口都是 RFC 793 中的有效端口。

于 2017-04-06T01:33:35.937 回答
14

端口的有效数字是:0 到 2^16-1 = 0 到 65535
这是因为端口号是 16 位长度的。

但是端口分为:
知名端口:0 到 1023(用于系统服务,例如 HTTP、FTP、SSH、DHCP ...)
注册/用户端口:1024 到 49151(您可以将其用于您的服务器,但可以小心一些著名的应用程序:如 Microsoft SQL Server 数据库管理系统 (MSSQL) 服务器或 Apache Derby Network Server 已经从这个范围内占用,即不建议将 MSSQL 的端口分配给您的服务器,否则如果 MSSQL 正在运行,那么您的服务器最由于端口冲突,可能不会运行)
动态/私有端口:49152 到 65535。(不用于服务器而不是客户端,例如在 NATing 服务中)

在编程中,您可以为您的服务器使用 0 到 65535 之间的任何数字,但是您应该坚持上面提到的范围,否则某些系统服务或某些应用程序将由于端口冲突而无法运行。
在此处查看大多数端口的列表:https ://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

于 2018-10-08T17:16:54.553 回答
11

这取决于您所说的范围,但动态范围最高可达 65535 或 2^16-1(16 位)。

http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

于 2008-09-22T04:53:45.840 回答
7

应该是 65535。

于 2008-09-22T04:53:51.720 回答