新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国XML论坛<<     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论WAP/WML, XMPP, Mobile Web Service, Windows Mobile, Symbian, PalmOS, Android, 嵌入式数据库, 无线搜索等移动嵌入式软硬件开发技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML 与 移动嵌入式开发 』 → [推荐] XMPP协议简介 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 23223 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: [推荐] XMPP协议简介 举报  打印  推荐  IE收藏夹 
       本主题类别: 基于XML的移动通信协议    
     enyaxp 帅哥哟,离线,有人找我吗?巨蟹座1984-7-4
      
      
      威望:2
      等级:计算机学士学位(版主)
      文章:350
      积分:2433
      门派:XML.ORG.CN
      注册:2007/12/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给enyaxp发送一个短消息 把enyaxp加入好友 查看enyaxp的个人资料 搜索enyaxp在『 XML 与 移动嵌入式开发 』 的所有贴子 点击这里发送电邮给enyaxp  引用回复这个贴子 回复这个贴子 查看enyaxp的博客楼主
    发贴心情 [推荐] XMPP协议简介


      可扩展消息处理现场协议(eXtensible Messaging and Presence Protocol , XMPP)是一种基于可扩展标记语言(eXtensible Markup Language, XML)的近端串流式即时通信协议。它将现场和上下文敏感信息标记嵌入到XML 结构化数据中, 使得人与人之间、应用系统之间以及人与应用系统之间能即时相互通信。XMPP 协议已被批准为互联网即时通信协议标准。

    1 XMPP 的地址和数据结构

    1.1 实体地址

      XMPP 整体框架下图 所示。图中, XMPP 框架的各类实体(如XMPP 客户、服务器和网关等) 的地址称为Jabber地址(Jabber Identifier, JID)。JID 惟一确定进行即时消息和在线状态信息通信的独立对象或实体, 并可兼容其他即时通信系统( 如MSN 等) 相应的实体标识及其在线状态信息。其语法规则为: [节点″@″] 域名[″/″资源], 其中各个域的长度不能超过1 023 字节, 总长度最大为3 071 字节。

    此主题相关图片如下:
    按此在新窗口浏览图片

      域名指定了实体连接的XMPP 服务器。每个可用XMPP 服务器都拥有一个完整域名, 域名可在域名系统(DNS)中查找; 节点可表示某用户、一类应用或某项服务,所有节点都对应一个精确的域名; 资源用来识别属于用户的特殊对象(如设备或位置), 允许一个用户同时以多个资源与同一XMPP 服务器连接, 如yb@sdpt.com/lab、yb@sdpt.com/chat。

    1.2 XMPP 的数据结构

      由于XMPP 是基于XML 的协议, 因此用户可根据自己的需要定义标记, 表述几乎任何一种结构化数据, 并可方便地创建定制的应用或增加功能。

    1.2.1 三个顶级XML 元素
      XMPP 定义的3 个关键顶级XML 元素为<message/>、<presence/>和<iq/>(info/query), 每个元素都可以通过属性和名字空间包含大量数据, 其属性和名字空间都是XMPP的组成部分。

      <message/>元素用来包含2 个XMPP 实体间互相发送的消息内容; <presence/>元素表示实体可用性信息, 可用性信息有“可用”和“不可用”2 种; <iq/>元素用来构建2 个
    实体间的会话, 并且允许实体间来回传送XML 格式的请求和响应以便取得或设置公共的用户信息, 如名字等。

      即时通信中名字冲突问题使用XML 的命名空间特性来解决。XML 命名空间定义了一种将XML 中使用的元素和属性与统一资源定位符(Uniform Resource Locator,URL)引用联系起来对元素和属性进行定义的方法。

    1.2.2 XMPP 的数据结构

      从结构上看, XMPP 有3 种数据: XML 流、流认证和XML 节。XML 流是实体交换XML 元素的容器,以<stream>开始, 以</stream>结束, 是通信双方采用异步方式进行数据传输的标准方法, 在整个XMPP 通信过程中处于最外层; XML 节是实体通过XML 流传输的结构化信息单元, 在XML 流中以深度为1 的子标记开头, 并以深度为1 的子标记结束, 这些标记为<message/>、<presence/>和<iq/>。XML 节也可通过包含其他子元素来传送结构化信息, 是实际需要交换的信息所在地; 流认证是在XML 流中有关协商传输层安全协议、简单认证与安全层协议和服务器回拨认证协议完成通信认证、加密等目的的数据交互, 是XMPP 安全机制的重要组成部分。

      XMPP 为XML 流扮演通用“传输层”的角色。XML 流中包含传输的认证信息和现场消息, XMPP 能使数据高效路由至最合适的请求源, 并最大限度地简化客户机上的实现, 使跨应用实时交流信息成为可能。

    2 工作过程

    (1)节点(如yb、pt)向本地服务器连接。

      ①XMPP 用户通过开启一个从客户端到服务器端的XML 流, 来申请一个在服务器上的Socket 连接。

      SEND: <stream: stream
         to=′sdpt.com′
         xmlns=′jabber: client′
         xmlns: stream=′http: //etherx.jabber.org/streams′>

      ②服务器通过开启一个从服务器到客户端的XML 流进行回复。

      RECV: <stream: stream
         from=′sdpt.com′
         id=′180763465′
         xmlns=′jabber: client′
         xmlns: stream=′http: //etherx.jabber.org/streams′>

    (2)节点向本地服务器申请登录。
      ①用户询问登录服务器时需提供的信息。

      SEND: <iq id=′2′type=′get′>
         <query xmlns=′jabber: iq: auth′>
         <username>yb</username>
         </query>
         </iq>

      ②服务器回应用户, 告知用户登录所需要的信息。
      ③用户提供所需的信息。
      ④服务器响应一个空的类型为“result”的iq 元素, 表明登录成功。
      
      RECV: <iq id=′3′type=′result′/>  

      ⑤yb 用户发送当前状态给服务器, 表明其在线。

      SEND: <presence>
         <status>Online</status>
         </presence>

    (3)用户获得花名册, 好友增加一个联系人( 如yb 获知朋友sd 在线) 。

    (4)用户间发送消息( 如yb 向sd 发送消息) 。
      用户发送一条消息:

      SEND: <message to′sd@jabber.org′>
         <body>Where are you?</body>
         </message>
     
     
      服务器会根据XMPP 用户的会话信息加上一个源地址, 这样接收者收到消息时, 消息中已经包含了源地址。

    (5)XMPP 服务器根据目标JID 中的域名查找、连接到目标服务器并进行认证(如sdpt.com 使用DNS 查找jabber.org, 连接到jabber.org 服务器上并进行认证) 。

    (6)XMPP 服务器jabber.org 证实sd 连接到该服务器上, yb 被授权与sd 进行通信。

    (7)数据在yb 与sd 间流动。

    (8)用户退出, 退出时只需要关闭<stream>。

    3 结束语

      简单的接口、开放的协议、互联的架构、权威的标准再加上坚实的用户基础是XMPP 的优势。相信XMPP 将为即时通信技术的运用提供更为广阔的空间。


    [此贴子已经被作者于2008-2-21 2:58:42编辑过]

       收藏   分享  
    顶(0)
      




    ----------------------------------------------

    I'M BACK, NEVER GO AWAY.

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/2/21 2:09:00
     
     GoogleAdSense巨蟹座1984-7-4
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML 与 移动嵌入式开发 』 的所有贴子 点击这里发送电邮给Google AdSense  访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/19 23:01:15

    本主题贴数4,分页: [1]

     *树形目录 (最近20个回帖) 顶端 
    主题:  [推荐] XMPP协议简介(4840字) - enyaxp,2008年2月21日
        回复:  详细,赞(8字) - yhy214,2008年2月29日
        回复:  我会多找些基础的入门型材料发到论坛上(36字) - enyaxp,2008年2月28日
        回复:  讲讲移动嵌入式开发和XML需要的知识基础吧感觉很难丫但还是想学学..(67字) - tinyqueen,2008年2月26日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    62.500ms