什么是 DNS SRV 记录?
DNS“服务” (SRV) 记录为特定的服务(如 IP语音 (VoIP))、即时通讯等)指定主机和端口。大多数其他 DNS 记录只指定一个服务器或一个 IP 地址,但 SRV 记录还包括该 IP 地址的一个端口。一些互联网协议需要使用 SRV 记录才能运作。

什么是端口?
在网络中,端口是虚拟位置,指定网络流量在计算机内流向什么进程。端口可让计算机轻松区分不同种类的流量。例如,尽管 VoIP 数据流与电子邮件信息都通过相同的互联网连接到达计算机,但它们会进入不同的端口。与 IP 地址一样,所有端口都被分配一个编号。

某些互联网协议,如 IMAP、SIP 和 XMPP,除了与特定的服务器连接外,还需要连接到一个特定的端口。SRV 记录是在 DNS 中指定端口的方式。

SRV 记录中包含哪些内容?
一个 SRV 记录包含以下信息。我们在下面列出了每个字段的示例值。

  • 服务 XMPP
  • 原型* TCP
  • 名称** example.com
  • TTL 86400
  • class IN
  • 在提示下键入 SRV
  • 优先级 10
  • 权重 5
  • 端口 5223
  • 目标 server.example.com
    *在传输协议中是“协议”的简称。
    **域名。

然而,SRV 记录实际上按以下方式进行格式化:

_service._proto.name。TTL 类记录类型优先级权重端口目标。
因此,我们的示例 SRV 记录实际上如以下所示:

_xmpp._tcp.example.com. 86400 IN SRV 10 5 5223 server.example.com。
在上面的示例中,“_xmpp”表示服务类型(XMPP 协议),“_tcp”表示 TCP 传输协议,而“example.com”是主机或域名。“Server.example.com”是目标服务器,“5223”表示该服务器内的端口。

SRV 记录必须指向一个 A 记录(在 IPv4 中)或一个 AAAA 记录(在 IPv6 中)。它们列出的服务器名称不能是 CNAME。因此,“server.example.com”必须直接指向该名称下的 A 或 AAAA 记录。

SRV 记录中的优先级和权重有什么区别?
SRV 记录表明它们列出的各种服务器的“优先级”和“权重”。SRV 记录中的“优先级”值让管理员能够优先考虑支持给定服务的一台服务器,而非另一服务器。具有较低优先级值的服务器将接收比其他服务器更多的流量。但是,“权重”值是相似的:权重较高的服务器将比具有相同优先级的其他服务器接收更多的流量。

它们之间的主要区别是,优先考虑优先级。如果有三台服务器,分别为服务器 A、服务器 B 和服务器 C,它们的优先级分别为 10、20 和 30,那么它们的“权重”无关紧要。该服务将始终先查询服务器 A。

但是假设服务器 A、B 和 C 的优先级均为 10——服务将如何在它们之间进行选择?这就是权重的用武之地:如果服务器 A 的“权重”值为 5,而服务器 B 和 C 的“权重”值分别为 3 和 2,则服务器 A 将接收最多的流量,服务器 B 将接收第二多的流量,服务器 C 排名第三。