LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2124|回复: 4

请教一个有关xmpp协议的菜鸟问题

[复制链接]
发表于 2009-1-28 21:54:57 | 显示全部楼层 |阅读模式
都说Gtalk开放了jabber的服务器,可以实现GT与QQ,MSN等等IM的通讯,而且网上也看到好多人已经在这么做了,想问一下,QQ或是MSN等所用的服务器上是不一定装有XMPP协议的服务器软件的,为什么也能够与具备有jabber客户端的机器进行通讯啊?

PS:小弟是菜鸟中的菜鸟,没有学过LINUX,也没有碰过JAVA,希望大家表鄙视啊~~
 楼主| 发表于 2009-1-31 13:56:44 | 显示全部楼层
自己顶一下,请高手教一下小弟吧~~
回复 支持 反对

使用道具 举报

发表于 2009-2-2 09:26:32 | 显示全部楼层
我也觉得迷糊,顺路问问。以下内容出自百度百科:
1、什么是XMPP ?
  XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。
  XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分;
  核心的XML流传输协议
  基于XML流传输的即时通讯扩展应用
  XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。
  XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。
  XMPP的扩展协议Jingle使得其支持语音和视频。
  2、XMPP的基本网络结构是怎样的?
  XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。
  3、XMPP通过TCP传什么了?
  传输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行苻的方式发送(比如MSN)。而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错。而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。所以可以说,XMPP用TCP传的是XML流。
  4、举个例子看看所谓的XML流是什么样子的?
  客户端:<?xml version='1.0'?>
  <stream:stream
  to='example.com'
  xmlns='jabber:client'
  xmlns:stream='http://etherx.jabber.org/streams'
  version='1.0'>
  服务器:<?xml version='1.0'?>
  <stream:stream
  from='example.com'
  id='someid'
  xmlns='jabber:client'
  xmlns:stream='http://etherx.jabber.org/streams'
  version='1.0'>
  ...其他通信...
  客户端:<message from='juliet@example.com'
  to='romeo@example.net'
  xml:lang='en'>
  客户端: <body>Art thou not Romeo, and a Montague?</body>
  客户端:</message>
  服务器:<message from='romeo@example.net'
  to='juliet@example.com'
  xml:lang='en'>
  服务器:<body>Neither, fair saint, if either thee dislike.</body>
  服务器:</message>
  客户端:</stream:stream>
  服务器:</stream:stream>
  以文档的观点来看,客户端或服务器发送的所有XML文本连缀在一起,从<stream>到</stream>构成了一个完整的XML文档。其中的stream标签就是所谓的XML Stream。在<stream>与</stream>中间的那些<message>...< /message>这样的XML元素就是所谓的XML Stanza(XML节)。XMPP核心协议通信的基本模式就是先建立一个stream,然后协商一堆安全之类的东西,中间通信过程就是客户端发送XML Stanza,一个接一个的。服务器根据客户端发送的信息以及程序的逻辑,发送XML Stanza给客户端。但是这个过程并不是一问一答的,任何时候都有可能从一个方发信给另外一方。通信的最后阶段是</stream>关闭流,关闭TCP/IP连接。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-2 09:42:45 | 显示全部楼层
对于楼上的问题,我有一个想法:因为说,在通信过程中会建立起两条XML信息流,一条是由服务器到客户端,一条是由客户端到服务器的,所以在这样的一个过程当中,可以实现即时通信,而这一个过程是不需要一问一答的,只用实现单项的传输就行。

以上菜鸟的猜想,不知道对不对
回复 支持 反对

使用道具 举报

发表于 2009-9-14 15:29:47 | 显示全部楼层
说是互通,其实是各家把自己的协议转换为xmpp,然后再进行互通的。
相当于多了层转换到xmpp的过程,也是通过这个转换过程才能够互通的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表