SRV记录是服务器资源记录的缩写,是DNS服务器的数据库中支持的一种记录服务器提供的服务资源的记录,主要作用是说明一个服务器能够提供什么样的服务。

简单来说,SRV记录了哪台计算机提供了哪个服务这么一个简单的信息。

SRV记录是DNS记录中的新鲜面孔,在RFC2052中才对SRV记录进行了定义,因此很多老版本的DNS服务器并不支持SRV记录。

RFC2782

概述和理由

目前,必须知道服务器的确切地址才能联系它或者广播问题。

SRV RR允许管理员为单个域名使用多个服务器,轻松地将服务从一个主机移动到另一个主机,并将某些主机指定为服务的主服务器,将其他主机指定为备份。

客户端要求特定域名的特定服务/协议(这里使用的词汇”域名”是RFC 1034上严格定义的),并获取任何可用服务器的名称。

请注意,在本文档引用“地址记录”时,它表示A RR,AAAA RR或其最现代的等价物。

RFC定义的格式

RFC2782中定义的格式是:

1
_Service._Proto.Name TTL Class SRV Priority Weight Port Target

各字段详细说明:

字段说明
Service所需服务的符号名称。在Assigned Numbers或本地定义。服务标识符前面加上下划线_,以避免与自然界中出现的DNS标签发生冲突。
Proto所需协议的符号名称。前面加下划线_,以防止与自然界中出现的DNS标签发生冲突。 _TCP_UDP目前是该字段最常用的值,但可以使用由Assigned Numbers或本地定义的任何名称。 Proto不区分大小写。
Name此RR所指的域名。在这个域名下SRV RR是唯一的。(英文原文好像有些语法问题)
TTL
Class
Priority
Weight
Port服务在目标主机上的端口。所需协议的符号名称,前面加下划线(_),以防止与自然界中出现的DNS标签发生冲突。 _TCP和_UDP目前是该字段最有用的值,但可以使用由Assigned Numbers定义的任何名称或本地的(如Service)。 Proto不区分大小写。范围是0-65535。 这是网络字节顺序中的16位无符号整数。 通常在Assigned Numbers中指定,但不一定如此。
Target目标主机的域名。 域名必须有一个或多个地址记录,域名绝不能是别名。敦促(但不强求)实现在附加数据部分中返回地址记录。除非并且直到将来的标准操作允许,否则名称压缩不能用于此字段。值为“.” 表示该域名明确无法提供该服务。

SRV记录和微软的关系

SRV记录在微软的Active Directory中有着重要地位,大家知道在NT4时代域和DNS并没有太多关系。但从Win2000开始,域就离不开DNS的帮助了,为什么呢?因为域内的计算机要依赖DNS的SRV记录来定位域控制器!微软的即时通讯服务器Live Communications Server也可以依靠SRV记录定位即时通讯服务器。

SRV 记录一般是为Microsoft的活动目录设置时的应用。DNS可以独立于活动目录,但是活动目录必须有DNS的帮助才能工作。为了活动目录能够正常的工作,DNS服务器必须支持服务定位(SRV)资源记录,资源记录把服务名字映射为提供服务的服务器名字。活动目录客户和域控制器使用SRV资源记录决定域控制器的IP地址。

鉴于SRV记录可以定位特定服务器的位置,我们可以预计,在微软将来的服务器产品中SRV记录将发挥越来越多的作用。