dns - 如何检查服务器是否支持 xmpp 协议(protocol)?

标签 dns xmpp srv

我正在寻找一种方法来检查服务器是否支持 xmpp 协议(protocol),即 xmpp-server 是否在此域上运行。

也许是特殊的 DNS 检查或类似的东西?

最佳答案

大多数 XMPP 服务器应至少支持以下 DNS SRV 记录之一:

  • _xmpp-server._tcp.example.com
  • _xmpp-client._tcp.example.com

有些服务器可能没有发布这些记录,但其中大多数都不想与外界交流。例如,您可以在命令行中使用“dig”来检查域,如下所示:

% dig +short -t SRV _xmpp-server._tcp.gmail.com.
20 0 5269 xmpp-server2.l.google.com.
20 0 5269 xmpp-server3.l.google.com.
20 0 5269 xmpp-server4.l.google.com.
5 0 5269 xmpp-server.l.google.com.
20 0 5269 xmpp-server1.l.google.com.

“+short”去掉了很多DNS细节,“-t SRV”表示我们想要SRV记录,最后的点表示忽略你的本地域名设置。

(添加以响应@user188719) 如果您没有找到 SRV 记录,您可以尝试使用原始域名,并假设端口 5222 用于客户端连接或 5269 用于服务器连接。

一旦你有了要连接的主机名和端口号,你就可以使用 telnet hostname port 来查看那里是否有进程在监听。但是,要真正检测它是否是该主机/端口上的 XMPP 服务器,请在 XMPP 流的开头发送。 ncnetcat 为此提供了一种方便的机制。服务器到服务器检查的示例:

% echo "<stream:stream to='gmail.com' version='1.0' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams' xmlns:db='jabber:server:dialback'>" | nc xmpp-server.l.google.com 5269
<stream:stream id="0A44AFB86521393A" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:server" xmlns:db="jabber:server:dialback">

关于dns - 如何检查服务器是否支持 xmpp 协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1093317/

相关文章:

c# - 如何使用 C# 在 DNS 中创建 SRV 记录

dns - 执行 NAPTR 查询

python - Scapy DNS 请求

recursion - 如何在特定 TLD 上递归 wget?

node.js - Dokku - 设置后添加域

android 如何在 xmpp 的 edittext 中分离跨越的对象?

linux - 让 apache 只读取一个 php 文件

project-management - 作为 Web 开发人员/经理,您发现 XMPP 的哪些用途可以帮助您?

ios - 使用 XMPP Openfire 的 Apple 推送通知

php - 使用 PHP 进行 SRV 记录查找