SRV
Иногда возникает ситуация, когда реальный адрес сервера не совпадает с адресом из JID'а. Например, в случае с Google Talk Jabber ID имеет вид user@gmail.com, а реальный адрес сервера - talk.google.com. В таком случае, если не предпринято специальных мер, клиент попытается соединиться с gmail.com, но не обнаружит там Jabber-сервера и не сможет подключиться. Во времена "молодости" Jabber решение было одно: указать адрес сервера в настройке клиента в специальном поле "адрес для подключения" (или "хост", "адрес сервера", "сервер"). Такая же проблема возникает и в соединениях "сервер-сервер", и тут указывать для каждого домена свой сервер довольно сложно. Поэтому было решено сделать так, чтобы программы сами могли находить реальный адрес сервера, для чего решено было использовать специальные записи в DNS - тип "SRV".
В настоящее время по стандарту используются такие записи SRV:
- _xmpp-client._tcp.EXAMPLE.COM (порт 5222) - чтобы указать, куда подключаться jabber-клиенту (нешифрованные и STARTTLS-подключения)
- _xmpps-client._tcp.EXAMPLE.COM (порт 5223) - аналогичная запись для TLS-подключений клиентов
- _xmpp-server._tcp.EXAMPLE.COM (порт 5269) - чтобы указать, куда подключаться jabber-серверу
- _xmpps-server._tcp.EXAMPLE.COM (порт 5270) - аналогичная запись для TLS-подключений серверов.
Для старых серверов иногда бывает необходимо указать еще одну запись - _jabber._tcp.domain.tld, указывающую на адрес сервера. Записи ниже служат для работы сервиса аудио/видеозвонков через jabber[1]:
- _stun._tcp.EXAMPLE.COM (порт 3478) - STUN через TCP
- _stun._udp.EXAMPLE.COM (порт 3478) - STUN через UDP
- _stuns._tcp.EXAMPLE.COM (порт 5349) - шифрованный STUN через TCP
- _turn._tcp.EXAMPLE.COM (порт 3478) - TURN через TCP
- _turn._udp.EXAMPLE.COM (порт 3478) - TURN через UDP
- _turns._tcp.EXAMPLE.COM (порт 5349) - шифрованный TURN через TCP
Клиенты, умеющие считывать SRV-запись DNS:
- Psi
- Gajim
- Pidgin
- Jabbim
- Miranda
- QIP Infium
- Bombus и Bombus-ng
- Tkabber
- Pandion
- JAJC
- Я.Онлайн
- Coccinella