XMPP 协议工作流程 .pdf
XMPP协议工作流程详解
分类:翻译文章2014-04-2311:112221人阅读评论(0)收藏举报
原文:
作者:YilunFan,日期2011-01-0513:09
XMPP核心协议
XMPP要点.
1.客户端(C)和服务器端(S)通过TCP连接5222端口进行全双工通信.
2.XMPP信息均包含在XMLstreams中.一个XMPP会话,开始于stream标签,
并结束于/stream标签.所有其他的信息都位于这俩标签之间.
3.出于安全目的考虑,开始stream之后,后续的内容会被适度的使用Transpor
LayerSecurity(TLS)协商传输和强制性的SimpleAuthentication和Security
Layer(SASL)协商传输.
4.SASL协商完成后,一个新的stream将会被迅速打开,它将会更加安全和保密.
第一步:打开stream
Client:客户端发送打开stream的片段到服务器,请求一个新的session.
[html]viewplaincopy
1.stream:streamto=xmlns=jabber:clientxmlns:stream=
/streamsversion=1.0
这里“”是客户端试图连接的服务器的域名.
Server:Server返回XMLstream,以stream:freatures开头,包含要求TLS或者
SASL协商谈判之一,或者2个都要求.
[html]viewplaincopy
1.stream:features
2.starttlsxmlns=urn:ietf:params:xml:ns:xmpp-tls
3.required/
4./starttls
5.mechanismsxmlns=urn:ietf:params:xml:ns:xmpp-sasl
6.mechanismDIGEST-MD5/mechanism
7.mechanismPLAIN/mechanism
8.mechanismEXTERNAL/mechanism
9./mechanisms
10./stream:features
第二步:加密和认证.
2.1如果服务器需要TLS交涉.
Client:客户端发送STARTTLS到服务器.
[html]viewplaincopy
1.starttlsxmlns=urn:ietf:params:xml:ns:xmpp-tls/
Server:服务器返回消息显示TLS已被允许:
[html]viewplaincopy
1.proceedxmlns=urn:ietf:params:xml:ns:xmpp-tls/
或者TLS失败了:
[html]viewplaincopy
1.failurexmlns=urn:ietf:params:xml:ns:xmpp-tls//stream:stream
在失败的情况下,服务器会关闭TCP连接.
Client:如果TLS已被服务器正确处理,客户端发送请求一个新的session:
[html]viewplaincopy
1.stream:streamxmlns=jabber:clientxmlns:s