SRV記錄(英語:Service Record,中文又名服務定位記錄)是域名系統中用於指定服務器提供服務的位置(如主機名和端口)數據。此數據於RFC 2782中定義,類型代碼為33。部分協議,如會話發起協議(SIP)及可擴展消息與存在協議(XMPP)通常需要服務記錄的支持。

記錄格式

服務記錄的格式為:

_服务._协议.名称. TTL 类别 SRV 优先级 权重 端口 主机.
  • 服務:服務的符號名稱。
  • 協議:服務的傳輸協議,通常為TCPUDP
  • 名稱:此記錄生效的所在域名,以半角逗號結尾。
  • TTL:標準DNS存活時間值。
  • 類別:標準DNS類別值(此值總為IN)。
  • 優先級:目標主機的優先級,值越小越優先。
  • 權重:相同優先度記錄的相對權重,值越大越優先。
  • 端口:服務所在的TCP或UDP端口。
  • 主機:提供服務的規範主機名,以半角句號結尾。

以下是區域文件英語Zone File中的服務記錄示例:

_minecraft._tcp.example.com. 86400 IN SRV 0 5 25565 mc.example.com.

此記錄指向在TCP端口25565上監聽Minecraft遊戲協議的 mc.example.com。此處的優先級為0,權重為5。

MX記錄一樣,SRV記錄中的主機必須指向已有地址記錄(AAAAA記錄英語AAAA record)的主機名。指向帶有CNAME記錄的主機名則無效。

負載均衡

優先級值決定記錄數據的先後順序。客戶端應先嘗試使用優先級最高的數據,在連接失敗時嘗試更低優先級的數據。若一項服務有着同一優先級的多個SRV記錄,客戶端則應根據記錄中的權重進行負載均衡。下例中,優先度及權重值用於提供負載均衡與備份服務。

# _服務._協議.名稱.       TTL   類別  SRV 優先級   權重    端口 主機.
_sip._tcp.example.com.   86400 IN    SRV 10       60     5060 bigbox.example.com.
_sip._tcp.example.com.   86400 IN    SRV 10       20     5060 smallbox1.example.com.
_sip._tcp.example.com.   86400 IN    SRV 10       20     5060 smallbox2.example.com.
_sip._tcp.example.com.   86400 IN    SRV 20       0      5060 backupbox.example.com.

前三個記錄優先度均為10,故客戶端將根據權重決定該聯繫哪台服務器(主機及端口)。三個記錄的權重值相加為100,故60%的時間內客戶端使用 bigbox.example.com。剩下40%的時間內,客戶端會將請求發送給主機 smallbox1smallbox2;其中的一半將發送給 smallbox1,另一半給 smallbox2。若bigbox不可用,則剩餘兩台機器由於權重相同,其將共享負載。

若三台優先級為10的服務器均不可用,則客戶端將使用下一優先級的記錄,即backupbox.example.com。這台機器可能為位於其他地理位置且不受造成上述三台機器不可用原因影響的主機。

由於SRV記錄所提供的記錄均為靜態數據,其負載均衡能力天生有限。記錄無法根據服務器的當前負載進行變通,除非TTL值足夠低(一分鐘或更小)才能使優先級(或權重值)迅速更新。

用法

SRV記錄通常與下列標準化傳輸協議同時使用:

微軟Windows 2000中,客戶端查詢SRV服務來確定特定服務的域名控制器。SRV記錄同時也被Outlook 2007、2010及macOS 10.6郵件使用來定位Exchange自動發現服務。[12] 微軟Windows網絡域名控制器在DNS中註冊其活動目錄的服務類型。

RFC 6335中定義互聯網號碼分配局(IANA)來維護SRV記錄及協議的服務名記錄表。[13]

另請參閱

參考文獻

  1. ^ Looking up Monitors through DNS – Ceph Documentation. [2017-12-04]. (原始內容存檔於2017-12-05). 
  2. ^ Hostnames for the Master and Slave KDCs. Web.mit.edu. [2012-05-23]. (原始內容存檔於2012-10-21). 
  3. ^ RFC 3088 – OpenLDAP Root Service An experimental LDAP referral service. Faqs.org. [2012-05-23]. (原始內容存檔於2012-05-14). 
  4. ^ Use of SRV Records for Locating Email Submission/Access Services [17 April 2013]. 
  5. ^ Federation API. matrix.org. [2018-01-05]. (原始內容存檔於2018-01-06) (英語). 
  6. ^ Minecraft wiki, 1.3.1. Curse Inc. [2019-06-17]. (原始內容存檔於2023-11-11). 
  7. ^ 存档副本. [2019-06-17]. (原始內容存檔於2008-08-22). 
  8. ^ Puppet Docs: Using Multiple Puppet Masters, Option 4: DNS SRV Records. Puppet Labs. [2013-12-26]. (原始內容存檔於2013-12-27). 
  9. ^ [Suggestion] TS DNS. Forum.teamspeak.com. [2013-10-25]. (原始內容存檔於2013-10-29). 
  10. ^ TeamSpeak 3 Client Version 3.0.8 Released. [2019-06-17]. (原始內容存檔於2016-09-27). 
  11. ^ XEP-0156: Discovering Alternative XMPP Connection Methods. Xmpp.org. [2012-05-23]. (原始內容存檔於2012-05-07). 
  12. ^ A new feature is available that enables Outlook 2007 to use DNS Service Location (SRV) records to locate the Exchange Autodiscover service. Support.microsoft.com. 2010-05-13 [2012-05-23]. (原始內容存檔於2012-04-20). 
  13. ^ RFC 6335 - Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry. ietf.org. 2011-08-01 [2013-01-28]. (原始內容存檔於2013-01-28). 

外部連結