서버가 XMPP 프로토콜을 지원하는지 확인하는 방법은 무엇입니까?
문제
서버가 XMPP 프로토콜을 지원하는지 확인하는 방법을 찾고 있습니다. 즉,이 도메인에서 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 스트림의 시작 부분을 보내십시오. 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">
다른 팁
Joe의 설명에 따라 개인적으로 SRV 레코드를 확인하고 포트 5269의 빠른 (짧은 시간 초과) 연결 확인으로 돌아갑니다. 그런 다음 결과를 캐시합니다.
당신은 imtrends를 시도 할 수 있습니다 : http://www.process-one.net/en/imtrends/