跳到主要内容

5. 服务名称 (Service Names)

5. 服务名称 (Service Names)

服务名称是 Service Name and Transport Protocol Port Number 注册表中的唯一键. 服务的这一唯一符号名称也可用于其他用途, 例如 DNS SRV 记录 [RFC2782]. 在注册表中, 这个唯一键确保不同服务可以被明确区分, 从而防止名称冲突, 并避免对特定条目的受让方 (Assignee) 产生混淆.

一个特定传输协议和端口可以关联多个服务名称. 这类端口号重载可能通过三种方式发生:

  • 当一个服务是另一个服务的扩展, 并且存在带内机制用于判断该扩展是否存在时, 会发生重载.
  • 由于历史原因, 服务名称 "http" 有两个同义名称 "www" 和 "www-http". 在 SRV 记录中使用时, 只应使用服务名称 "http".
  • 如第 10.1 节所示, 重载也曾用于为旧有名称创建符合本文档规定语法的替代名称.

服务名称按照"先到先得 (first come, first served)"原则分配. 名称应简短且具有信息量, 避免使用在注册表上下文中冗余的词语或缩写.

5.1. 服务名称语法 (Service Name Syntax)

有效的服务名称在此规范性定义如下:

  • MUST 至少为 1 个字符, 且不超过 15 个字符
  • MUST 仅包含 US-ASCII 字母 'A' - 'Z' 和 'a' - 'z', 数字 '0' - '9', 以及连字符 ('-')
  • MUST 至少包含一个字母 ('A' - 'Z' 或 'a' - 'z')
  • MUST NOT 以连字符开头或结尾
  • 连字符之间 MUST NOT 相邻

要求至少包含一个字母的原因, 是为了避免 "23" (可能与数字端口混淆) 或 "6000-6063" (可能与数字端口范围混淆) 这样的服务名称.

5.2. DNS SRV 记录中的服务名称用法 (Service Name Usage in DNS SRV Records)

DNS SRV 规范 [RFC2782] 指出, DNS SRV 记录属主名称中的 Service Label 部分包含一个 "Service" 元素, 其描述为 "the symbolic name of the desired service".

本文档澄清, Service Label MUST 是本文所定义的服务名称, 并在其前面加上下划线. 服务名称 SHOULD 向 IANA 注册, 并记录在 Service Name and Transport Protocol Port Number 注册表 [PORTREG] 中.