SRV 记录的支持范围有多广?

SRV 记录的支持范围有多广?

我最近了解到 DNS 支持 SRV 记录,它可以识别给定服务应使用哪个端口和哪种协议。例如,_http._tcp.example.com SRV应返回一个端口和一个 A/AAAA 记录,客户端应在其中打开一个旨在使用访问HTTP服务的连接。example.comTCP

它的支持范围有多广?什么负责检查服务是否预期会出现在给定域中:操作系统(网络堆栈)还是应用程序?据我记得,每当打开套接字时,我都不会指定它是 TCP 套接字还是 UDP 套接字以外的任何内容。如果我设置一条记录,任何给定的客户端都会尊重它,SRV_https._tcp.example.com意味着0 1 444 example.com它应该使用端口 444 通过 tcp 进行 https 连接吗?

答案1

DNS 服务器和客户端实现已经支持 SRV 记录超过 23 年。

通常不支持 SRV 记录的是应用程序。使用 SRV 记录的最常见应用程序是 Microsoft Active Directory LDAP/Authentication。除了 SIP 记录外,其他应用程序对 SRV 的支持相对较低。

请注意,任何应用程序都可以使用 SRV 记录。实施成本可以忽略不计。应用程序对 SRV 记录的使用率低表明需求低。通常是由于查找中的开销/延迟。

答案2

简化:某些协议要求使用 SRV 记录进行服务器/服务发现,并且该协议的所有客户端都支持它们。

对于其他协议,对 SRV 的支持存在于管理 RFC 中,但客户端的支持可能时好时坏。

  • 例如RFC 6186 “使用 SRV 记录定位电子邮件提交/访问服务”几乎不支持电子邮件客户端的(自动)配置,而是使用许多其他方法反而。

少数协议使用备用端口映射器机制来发现服务正在哪个端口上运行。(例如 NFS)

大多数协议不使用 SRV 记录,但有一个(众所周知的)默认端口,例如 http 的端口 80 和 https 的端口 443,当没有明确提供替代端口时,客户端会使用这些端口。IANA
维护着这些默认端口号分配的列表这里

  • 即使协议不支持 SRV 记录,也没有什么可以阻止(自定义)客户端支持 SRV 记录。例如,请参阅此问答: SSH 的 DNS 记录(docker)

请注意,SRV记录也存在一些缺点,这就是为什么目前正在开发新的 DNS 资源记录类型,SVCB记录和特殊 SVCB 用例HTTPS记录结合了 SRV 和 CNAME 记录类型的功能以及以下附加功能:

资源SVCB记录类型[SVCB]为客户端提供有关如何到达服务替代端点的信息,这些端点可能具有更好的性能或隐私属性。服务由指示服务类型、主机名和其他可选信息(例如端口号)的“方案”标识
。...

...
HTTPS RR 是 SVCB 的变体,用于 HTTP [HTTP]
。...

相关内容