通常XMPP client连接服务器是无须指定IP的,比如登录 gtalk, 只需填入账号 username@gmail.com 及密码,标准的客户端都可以自动解析需要的服务器和端口连接到服务器上。这个解析就是通过DNS的SRV record来实现的。
标准的 XMPP client解析的流程为(以timyang.net为例)
- 解析 "_xmpp-client._tcp.timyang.net" ,获得连接的服务器和端口;
- 如果失败,则解析 "_jabber._tcp.timyang.net",这个主要针对老的服务器配置;
- 如果还是失败,则客户端认为该域没有配置SRV记录,则直接解析"timyang.net"并使用默认端口5222连接。
SRV配置方法可参看:SRV record
具体的格式为 _Service._Proto.Name TTL Class SRV Priority Weight Port Target
可使用 Linux 命令 dig 查看设置结果。
$ dig -t SRV _xmpp-client._TCP.gmail.com
; <<>> DiG 9.4.2-P2 <<>> -t SRV _xmpp-client._TCP.gmail.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53058 ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION: ;_xmpp-client._TCP.gmail.com. IN SRV
;; ANSWER SECTION: _xmpp-client._TCP.gmail.com. 85182 IN SRV 20 0 5222 talk3.l.google.com. _xmpp-client._TCP.gmail.com. 85182 IN SRV 20 0 5222 talk4.l.google.com. _xmpp-client._TCP.gmail.com. 85182 IN SRV 5 0 5222 talk.l.google.com. _xmpp-client._TCP.gmail.com. 85182 IN SRV 20 0 5222 talk1.l.google.com. _xmpp-client._TCP.gmail.com. 85182 IN SRV 20 0 5222 talk2.l.google.com.
;; Query time: 202 msec ;; SERVER: 208.67.222.222#53(208.67.222.222) ;; WHEN: Tue Jan 20 10:29:59 2009 ;; MSG SIZE rcvd: 234
|