Skip to main content

6. 端口号范围 (Port Number Ranges)

TCP、UDP、UDP-Lite、SCTP 和 DCCP 为其端口号注册表使用 16 位命名空间。所有这些传输协议的端口注册表都细分为三个数字范围 [RFC1340],第 8.1.2 节详细描述了每个范围的 IANA 程序:

  • 系统端口 (System Ports),也称为众所周知的端口 (Well Known Ports),从 0-1023(由 IANA 分配)

  • 用户端口 (User Ports),也称为注册端口 (Registered Ports),从 1024-49151(由 IANA 分配)

  • 动态端口 (Dynamic Ports),也称为私有或临时端口 (Private or Ephemeral Ports),从 49152-65535(从不分配)

在可分配的端口范围(系统端口和用户端口,即端口号 0-49151)中,各个端口号在任何给定时间处于三种状态之一:

  • 已分配 (Assigned):已分配的端口号当前分配给注册表中指示的服务。

  • 未分配 (Unassigned):未分配的端口号当前可根据本文档中概述的程序按请求分配。

  • 保留 (Reserved):保留的端口号不可用于常规分配;它们"分配给 IANA"用于特殊目的。保留的端口号包括每个范围边缘的值,例如 0、1023、1024 等,这些可能在将来用于扩展这些范围或整个端口号空间。

为了保持注册表的大小可管理,IANA 通常只在注册表中记录已分配和保留的服务名称和端口号。未分配的值通常不会明确列出。(有很多未分配的服务名称,枚举它们所有将不切实际。)

作为数据点,当撰写本文档时,大约 76% 的 TCP 和 UDP 系统端口已分配,大约 9% 的用户端口已分配。(如前所述,动态端口从不分配。)

6.1. 用于实验的服务名称和端口号 (Service Names and Port Numbers for Experimentation)

在系统端口中,两个 TCP 和 UDP 端口号(1021 和 1022)以及它们各自的服务名称("exp1"和"exp2")已被分配用于在分配的端口范围内使用新应用程序和应用层协议进行实验 [RFC4727]。请参阅"分配实验和测试号码被认为是有用的" [RFC3692] 第 1 节和第 1.1 节,了解如何使用这些实验端口号。

本文档在第 10.2 节中为使用 SCTP 和 DCCP 的新应用层协议实验分配了相同的两个服务名称和端口号。

不幸的是,限制对这些端口的访问可能很困难。用户应该采取措施确保实验端口连接到预期的进程。例如,这些实验端口的用户可能包括一个 64 位随机数 (nonce),每个面向消息的信道的每个段一次(例如,UDP),或在字节流开始时一次(例如,TCP),用于确认端口按预期使用。当这些端口与特权(例如,系统或管理员)进程相关联时,这种对预期使用的确认尤其重要。