您好,欢迎访问三七文档
Jabber/XMPP简介Messia2009-06-10一、XMPP概述•XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。•XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。二、XMPP体系架构•XMPP的基本网络结构,xmpp定义了3个角色•Client•Server•Gateway•通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。•客户端利用xmpp(基于TCP/IP)访问server,传输的是XML•Client--------Server----ClientTCPTCPTCP二、XMPP体系架构•XMPPserver:其内核是一个XMPP路由器,完成基本组件间的数据包交换和路由。•功能:•1.会话管理器:负责客户端会话认证,在线状态,用户联系表等•2.数据存储器(XDB):连接数据库系统,保持用户信息、通信日志等•3.连接器管理器:管理与客户端之间的连接•4.服务器连接器:管理xmpp服务器之间的连接•5.传输器:建立xmpp服务器与非xmpp服务器通信XMPPClientXMPPClientXMPPServerDNSServerXMPPServerOtherServerXMPPClientXMPPClient三、XMPP工作原理图Xml流ProtocolGatewayXMPP工作原理说明•所有从一个client到另一个client的jabber消息和数据都要通过xmppserver。•1.client连接到server•2.server利用本地目录系统的证书对其认证•3.client制定目标地址,让server告知目标状态•4.server查找,连接并进行相互认证•5.client间进行交互四、XMPP地址模式•统一的JID(jabberidentifier)•JID=[node”@”]domain[“/”resource]•eg:cyber@cyberobject.com/res•domain:服务器域名•node:用户名•resource:属于用户的位置或设备•一个用户可以同时以多种资源与同一个XMPP服务器连接五、XMPPxml消息格式定义•xmppxml包括3个元素:简单示例:•stram•presence•status/•/prensence•message•body/•/message•iqbind/•/iq•/streamXMPPxml消息格式定义-presence•presence-此元素确定用户的状态•presencefrom=cyber1@jabber.org/contact•to=cyber2@jabber.org/contactstatusonline/status•/presenceXMPPxml消息格式定义-message•message-用于两个用户之间发送信息•messagefrom=cyber1@jabber.org/contact•to=cyber2@jabber.org/contact•Type=“chat”bodyHello/body•/messageXMPPxml消息格式定义-iq•iq-信息/请求,是一个请求-响应机制,管理xmpp服务器上两个用户的转换,允许他们通过相应的xml格式的查询和响应•iq•from=cyber1@jabber.org/contact•Id=“id1”Type=“result”•/iq•Iq的主要属性:type,包括:•Get:获取当前域值•Set:设置或替换get查询的值•Result:说明成功的响应了先前的查询•Error:查询和响应中出现的错误六、XMPP的安全机制•XMPP协议簇XMPPSASLTLSTCPSimpleAuthenticationandSecurityLayerTransportLayerSecurityXMPP登录身份认证协议XMPP采用SASL作为身份认证协议•SASL包含的信息:•服务名:XMPP•初始序列•交换序列•安全层协商•顺序:[TCP][TLS][SASL][XMPP]XMPPTLSXMPP采用TLS的“START-TLS”扩展来为通信双方提供加密性和数据完整性服务Spark登录xmpp服务器过程示例C—clientS—server步骤:•1.client初始流给serverC:stream:streamto=example.comxmlns=jabber:clientxmlns:stream==1.0“•2.server使用一个流标记作为响应发给clientS:stream:streamfrom=‘cyber'xmlns='jabber:client'xmlns:stream='='a7747277-ad62-4813-b739-63504d6e1246'version='1.0'xml:lang='zh-cn‘Spark登录xmpp服务器过程示例3.Server发送STARTTLS扩展给client,并带有认证机制与任何其他流特征S:stream:featuresxmlns==urn:ietf:params:xml:ns:xmpp-tls/mechanismsxmlns=urn:ietf:params:xml:ns:xmpp-saslmechanismPLAIN/mechanismmechanismDIGEST-MD5/mechanism/mechanismscompressionxmlns===:featuresSpark登录xmpp服务器过程示例4.Client发送STARTTLS命令给ServerC:starttlsxmlns=urn:ietf:params:xml:ns:xmpp-tls/5.Server通知Client它被允许处理S:proceedxmlns=urn:ietf:params:xml:ns:xmpp-tls/Note:client与serverTLS协商失败,server通知clientTLS协商失败,并关闭流与TCP连接failurexmlns=“urn:ietf:params:xml:ns:xmpp-tls”//stream:streamSpark登录xmpp服务器过程示例6.如果TLS协商成功,client初始化一个新流给serverC:stream:streamto=example.comxmlns=jabber:clientxmlns:stream==1.0Spark登录xmpp服务器过程示例7.Server靠发送带有任何可利用流特征的流头作为响应S:stream:streamfrom=‘cyber'xmlns='jabber:client'xmlns:stream='='a7747277-ad62-4813-b739-63504d6e1246'version='1.0'xml:lang='zh-cn'stream:featuresxmlns==urn:ietf:params:xml:ns:xmpp-saslmechanismPLAIN/mechanismmechanismDIGEST-MD5/mechanism/mechanismscompressionxmlns===:featuresSpark登录xmpp服务器过程示例8.Client选择一个认证机制C:authmechanism=PLAINxmlns=urn:ietf:params:xml:ns:xmpp-saslAGh4dwAx/auth9.Server通知client认证成功S:successxmlns=urn:ietf:params:xml:ns:xmpp-sasl/Note:如果认证不成功,server通知client认证失败,并关闭流failurexmlns=“urn:ietf:params:xml:ns:xmpp-tls”temporary-auth-failure//failure/stream:streamSpark登录xmpp服务器过程示例10.如果认证成功,client初始化一个新流给serverC:stream:streamto=“examplexmlns=jabber:clientxmlns:stream==1.0Spark登录xmpp服务器过程示例•11.Server依靠流头来响应client,并伴随有另外的特征•S:stream:streamfrom=’cyber'xmlns='jabber:client'xmlns:stream='='a7747277-ad62-4813-b739-63504d6e1246'version='1.0'xml:lang='zh-cn'stream:featuresxmlns==•methodzlib/method/compressionbindxmlns=urn:ietf:params:xml:ns:xmpp-bind/sessionxmlns=urn:ietf:params:xml:ns:xmpp-session/•/stream:featuresSpark登录xmpp服务器过程示例12.资源绑定:client发送一个类型为set的iq,并包含所需绑定的资源节点resource/C:iqid=O193v-0type=setbindxmlns=urn:ietf:params:xml:ns:xmpp-bindresourcespark/resource/bind/iqSpark登录xmpp服务器过程示例13.如果server为client产生了一个资
本文标题:XMPP_协议介绍
链接地址:https://www.777doc.com/doc-2857492 .html