主流的四种IM(IM:instant messaging,即时消息)协议
转载:http://hi.baidu.com/zhaojinwei1986/blog/item/fe3b9f12d5784e24dd5401db.html
XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM(IM:instant messaging,即时消息)协议之一,其他三种分别为:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)。
在这四种协议中,XMPP是最灵活的。XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。
1、什么是XMPP ?
XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分;
核心的XML流传输协议
基于XML流传输的即时通讯扩展应用
XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。
XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。
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连接。
采用XMPP协议的即时通信应用,当数google吧,Google Talk是基于XMPP协议,而且它还允许其它IM自由使用XMPP协议。如此一来,任何IM供应商在遵循XMPP协议的前提下,都可以随时与Google Talk实现免费连接.
附:主流的四种IM通讯协议简介
IMPP:IMPP主要定义必要的协议和数据格式,用来构建一个具有空间接收、发布能力的即时信息系统。到目前为止,这个组织已经出版了三个草案RFC,但主要的有两个:一个是针对站点空间和即时通讯模型的(RFC 2778);另一个是针对即时通讯/空间协议需求条件的(RFC2779)。RFC2778是一个资料性质的草案,定义了所有presence和IM服务的原理。RFC2779定义了IMPP的最小需求条件。另外,这个草案还就presence服务定义了一些条款,如运行的命令、信息的格式,以及 presence服务器如何把presence的状态变化通知给客户。
SIMPLE:SIMPLE是目前为止制定的较为完善的一个。SIMPLE和XMPP两个协议,都符合RFC2778和RFC2779 。SIMPLE计划利用SIP来发送presence信息。SIP是IETF中为终端制定的协议。SIP一般考虑用在建立语音通话中,一旦连接以后,依靠如实时协议(RTP)来进行实际上的语音发送。但SIP不仅仅能被用在语音中,也可以用于视频。SIMPLE被定义为建立一个IM进程的方法。 SIMPLE在2002年夏季得到额外的信任,目前,微软和IBM都致力于在它们的即时通讯系统中实现这个协议。 SIMPLE小组致力于进程模式的操作,这将提升运行效率,使基于SIP的机制能够进行会议和三方电话交谈控制,也考虑到能和未来提供的许多新特性实现兼容并提升表现能力。有了进程模式,SIMPLE使用SIP来建立一次进程,再利用SDP(进程描述协议)来实际传输IM数据。
主流的四种IM(IM:instant messaging,即时消息)协议相关推荐
- 身在天津的宝妈有福了,2021四种飞速涨粉方法第一手消息。
身在天津的宝妈有福了,2021四种飞速涨粉方法第一手消息. 在dy短视频如果你的粉丝不到1000就不要想着赚钱了.因为dy短视频一千粉是很多福利的门槛. 所以今天就教天津的你四种快速涨到一千粉的方法, ...
- spi四种工作模式时序图_SPI总线协议及SPI时序图详解
嵌入式linux QQ交流群:175159209,欢迎爱好者加入交流技术问题! SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种 ...
- IM --- Instant Messaging 即时通讯(环信IM云)
1 环信IM云 准备工作 : 1). 注册环信IM账户 2). 创建IM应用 2.架构 接口测试 : 3. 用户微服务 tensquare_user : 统一管理十次方系统中的用户信息 ; 1). p ...
- python主要就业方向-四种Python高薪就业方向
前言: Python使用范围很广泛,一个人精力有限,不可能精通所有的领域.就拿Python官网的Python应用领域来说,Python有以下几个方面的应用: Web Programming:Djang ...
- js 复制文本的四种方式
一.总结 一句话总结:js文本复制主流方法:document的execCommand方法 二.js 复制文本的四种方式 纯 转载复制,非原创 原地址:http://www.cnblogs.com/xh ...
- 四种方式搭建文件服务器
最近做工程,文件存储.图片存储没有一个统一的管理方式,很不爽. 准备搭建个文件服务器来玩玩,百度了一圈,找到了主流的四种搭建服务器的方式,并且把它部署到了我的阿里云服务器上. 四种搭建文件服务器的方式 ...
- Post请求的四种方式
Post请求四种传送方式的Python实现 HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式.常见的四种编码方式如下: ♦ ...
- 【美联储圣路易斯分行在其研究数据库中追踪四种数字货币价格】
gbcax链交所 [美联储圣路易斯分行在其研究数据库中追踪四种数字货币价格] 据coindesk消息,美国联邦储备银行圣路易斯分行正在其研究数据库Federal Reserve Economic Da ...
- 知道接口地址 如何传数据_如何选显示器连接线?四种主流接口要知道
前两天家里电脑显示器的线坏了,火急火燎的买了根线,谁知道买回来之后接口不匹配,不能用.显示器为什么要有这么多接口呢?这些接口又有什么区别呢?必须把它搞清楚!这不,经过我的不屑努力,终于搞明白了,马不停 ...
最新文章
- urlrewrite使用小结
- R语言可视化分别使用lattice包和ggplot2包可视化热图(heatmap)并绘制热力图对应的系统树图(dendrogram)实战
- ACL 2020今日放榜,779篇论文被接收,姚班校友陈丹琦首日演讲
- Java:包的使用Pack
- 卸载sharepoint2013
- 这样用组图创作内容,能让你的文章被转发
- Spring Boot - 自动配置实现原理
- 【Linux】19.Linux环境变量名LD_LIBRARY_PATH 和 ldd命令详解
- 印象笔记无法连服务器(internet explore的问题)
- HashMap 源码解析(JDK1.8)
- linux之head命令
- java 交替_Java 8:使用交替接口公开的类型安全地图生成器
- 如何成功构建大规模 Web 搜索引擎架构?
- pcl求平面法向量_PCL1.8.1 点的法向量
- CCF NOI1016 计算天数
- 【二分答案】【中位数】codeforces 394 bun
- mcisendString制作播放器
- easyUI的iconCls
- 随机存储器与只读存储器
- Ubuntu大于2T硬盘,分区并挂载