サーバーが xmpp プロトコルをサポートしているかどうかを確認するにはどうすればよいですか?
質問
サーバーがxmppプロトコルをサポートしているかどうかを確認する方法を探しています。xmpp-server はこのドメインで実行されています。
おそらく特別なDNSチェックかそのようなものでしょうか?
解決
ほとんどの XMPP サーバーは、次の DNS SRV レコードの少なくとも 1 つをサポートする必要があります。
- _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 ストリームの先頭を送信します。 nc
または netcat
これに便利なメカニズムを提供します。サーバー間のチェックの例:
% 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">
他のヒント
ジョーの説明に続いて、私は個人的にSRVレコードを確認するだろうとバック速い(短いタイムアウト)にフォール結果をキャッシュその後ポート5269.のチェックを接続します。
あなたはIMtrendsを試すことができます: http://www.process-one.net/en / imtrends / の