可以使用的最高端口号是多少?
端口号是一个无符号的 16 位整数,因此是 65535。
最大端口号是无符号短 2^16-1: 65535
注册端口是由 Internet Corporation for Assigned Names and Numbers (ICANN) 分配给特定用途的端口。每个注册端口都在 1024–49151 范围内。
自 2001 年 3 月 21 日起,注册机构为 ICANN;在那之前是IANA。
编号小于注册端口号的端口称为知名端口;编号大于已注册端口的端口称为动态和/或私有端口。
据我了解,您最多只能使用 49151,因为从 49152 到 65535 保留给 Ephemeral ports
$ cat /proc/sys/net/ipv4/ip_local_port_range
产生输出 32768 61000
。至于是否应该或不应该使用系统临时端口范围内的端口,我怀疑大多数(如果不是全部)现代网络操作系统都会跳过已经在使用的端口。
只是对 smashery 的回答的跟进。临时端口范围(至少在 Linux 上,我怀疑其他 Unices 也是如此)不是固定的。这可以通过写入 /proc/sys/net/ipv4/ip_local_port_range
来控制
唯一的限制(就 IANA 而言)是 1024 以下的端口被指定为知名端口。以上端口可免费使用。通常您会发现 1024 以下的端口仅限于超级用户访问,我相信正是出于这个原因。
根据 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 中的有效端口。
端口的有效数字是: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
这取决于您所说的范围,但动态范围最高可达 65535 或 2^16-1(16 位)。
http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
应该是 65535。