执行NAPTR查询

时间:2013-01-06 09:12:18

标签: dns sip srv

这可能看起来像一个非常简单的问题,但我还没有在互联网上找到答案。

任何人都可以告诉我如何为SIP域执行NAPTR查询? (这主要用于DNS查找),或者任何对我来说都很好的引用(这个引用存在于rfc2915上)。

也许使用终端或任何工具可能更进一步我想用java来做,所以如果任何一段代码都会非常有帮助。

3 个答案:

答案 0 :(得分:9)

您正在寻找的RFC是“Session Initiation Protocol (SIP): Locating SIP Servers”。

以下是如何选择传输协议和解析SIP服务器地址的简要摘要。

  1. 如果指定了transport参数,则优先使用
  2. 如果没有传输参数和目标是IP地址,那么sip应该使用udp和sips tcp,
  3. 如果没有传输参数和目标是具有显式端口的主机名,则sip应使用udp和sips tcp,并且应使用A或AAAA记录DNS查找解析主机(第4.2节),
  4. 如果没有传输协议且没有显式端口和目标是主机名,那么客户端应该进行NAPTR查找并利用SIP + D2U,SIP + D2T,SIP + D2S,SIPS + D2T和SIPS + D2S服务的记录,
  5. 如果找到NAPTR记录,请选择所需的传输并查找SRV记录,
  6. 如果未找到NAPTR记录,请查找所需协议的SRV记录_sip._udp,_sip._tcp,_sips._tcp,_sip._tls,
  7. 如果没有SRV记录找到查找A或AAAA记录。
  8. 在现实世界中,几乎没有SIP提供商使用NAPTR记录,可能有一半或更少使用SRV记录,其余的仅依赖于A记录。在我自己的SIP软件中,我关闭了NAPTR查找,因为它浪费了时间,如果SIP提供商很难设置NAPTR记录,他们也很可能会设置标准的SRV记录。

    事后看来,SIP协议设计者应该单独留下整个SIP服务器地址解析,让实施者使用标准的IP负载平衡和故障转移机制。因为SIP客户端并不都支持SRV记录,再次根据我的经验不到一半,使用这些记录总比没有好,但不是故障转移或负载平衡的理想解决方案。

    如果您正在寻找具有SIP NAPTR记录的主机名,请在上次检查时检查columbia.edu和snom.com,他们都有一些。

答案 1 :(得分:0)

A NAPTR record in DNSDNS (SRV, CNAME, etc.)

中的任何其他记录一样
  

NAPTR记录最常用于Internet电话中的应用程序,例如,会话发起协议(SIP)中服务器和用户地址的映射。 NAPTR记录与服务记录(SRV)的组合允许将多个记录链接在一起以形成复杂的重写规则,从而产生新的域标签或统一资源标识符(URI)。

     

NAPTR记录的DNS类型代码为35。

要查询它们,可以使用命令行工具for($i=1;$i<100;$i++){ $part_1 = implode("",range(0,$i)); echo bcadd(bcmul($part_1,"9"),($i+1)."")."\n"; } 并使用dig开关指定查询的类型。例如:

-t

如果您有兴趣,可以阅读有关E.164和ENUM的更多信息:

答案 2 :(得分:0)

NAPTR记录和SRV记录在LTE(4G)解决方案中很常见。 EPC节点(网络节点)使用DNS通过S-NAPTR和SRV记录选择其他EPC节点。这使操作员可以在不更改MME节点上的任何配置的情况下增加/删除节点的自由度。您可以在主题“使用DNS的EPc节点选择”中参考3gpp标准29.003或23.401或google。 https://ericlajoie.com/nodeselection.html