即时通讯技术简介:即时通讯技术(IM- Instant Messaging)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友再其中输入信息并让交谈双方都看到交谈的内容。
有许多的IM系统,如AOL、Yahoo IM、 MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议
协议用来说明信息在网络上如何传输,如果有了统一的传输协议,那么应当可以实现各个IM之间的直接通讯,为了创建即时通讯的统一标准,目前已经出现过的IM协议包括:IETF的对话初始协议(SIP)和即时通讯对话初始协议和表示扩展协议(SIMPLE)、应用交换协议(APEX)、显示和即时通讯协议(PRIM)及基于XML且开放的可扩展通讯和表示协议(XMPP)协议(常称为 Jabber 协议)XMPP框架是以XML格式的数据进行发送通讯的。
人们多次努力,试图统一各大主要IM供应商的标准(AOL、Yahoo 及 Microsoft),但无一成功,且每一种IM仍然继续使用自己所拥有的协议
XMPP的起源
XMPP是基于XML的协议,用于即时消息(IM)以及在线现场探测。最初,XMPP作为一个框架开发,目标是支持企业环境内的即时消息传递和联机状态应用程序。
XMPP前身是Jabber(1998年),是一个开源组织定义的网络即时通信协议
XMPP是一个分散型通信网络,这意味着,只要网络基础设施允许,任何XMPP用户都可以向其他任何XMPP用户传递消息。多个XMPP服务器也可以通过一个专门的“服务器-服务器”协议相互通信,提供了创建分散型社交网络和协作框架的可能性
尽管XMPP的出现是为了满足“个人-个人”即时消息传递的要求,但它完全不必局限于此任务
XMPP概述
XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。这表明XMPP是可扩展的。可以通过发送扩展的信息来处理用户的需求,以及在 XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配置好的系统添加功能
XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮
XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性
XMPP的扩展协议Jingle使得其支持语音和视频,目前iOS尚不支持
XMPP的官方文档是RFC 3920
XMPP协议曾经是Google力推的即时通信协议,其代表作品是GTalk
协议就是标准。
XMPP 即时通讯协议。
SGIP 短信网关协议 手机发短信。
移动支付和网页支付。
只要是协议,必须会有一个协议文档。
XMPP定义
XMPP:The Extensible Messaging and Presence Protocol(可扩展通讯和表示协议)
XMPP可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输。XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议
XMPP是基于XML的协议,用于即时消息(IM)以及在线现场探测。促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同
XMPP的结构:
XMPP是一个典型的C/S架构,而不是像大多数即时通讯软件一样,使用P2P客户端到客户端的架构,也就是说在大多数情况下,当两个客户端进行通讯时, 他们的消息都是通过服务器传递的。采用这种架构,主要是为了简化客户端,将大多数工作放在服务器端进行
XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生
服务器同时承担了客户端信息记录,连接管理和信息的路由功能
网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等
基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML流
(XMPP是通过Socket进行通讯的,Socket本身就是基于TCP/IP 传输控制协议的。)
C/S 客户端/服务器,数据处理和传送都要通过服务器,服务器的压力比较大。
P/P点对点,任意两台主机之间直接可以进行通讯,服务器 的压力很小。点对点的原理:假设两台主机进行通讯,由先发起会话的那台主机充当被连接的对象,服务器会把先发起会话的客户端的IP地址发送给另一个客户端。那么两个客户端就可以直接进行点对点通讯了。
XMPP工作原理:只要多个服务器都遵守了XMPP协议,那么所有连接在多个服务器中客户端都可以互相通信。如下图所示:
XMPP的传输内容:
XMPP应用传输的是与即时通讯相关的指令。在以前这些命令要么用二进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行符的方式发送(比如MSN)
而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错
而XMPP的核心部分就是一个在网络上分片段发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议,可以说XMPP用TCP传的是XML流
XMPP的优缺点:
优点
开放
标准(XMPP的技术规格已被定义在RFC 3920及RFC 3921)
证实可用,谷歌证实了GTalk
分散
安全
可扩展
缺点
数据负载过重XML
没有二进制传输
XMPP的传输小结:
XMPP是一种类似于HTTP协议的一种数据传输协议,其过程就如同“解包装--〉包装”的过程。只需要理解其接收的类型及返回的类型,便可以很好的利用XMPP来进行数据通讯
XMPP官方网站——http://xmpp.org
打开XMPP网站如下:
我们使用的服务器时Openfire
使用Spark和Adium客户端作参考:
我们单独开发一个客户端需要导入的框架:(xmppframework)
我们开发通讯软件的大致流程如下:
大致步骤:先安装一个数据库专门用于存放服务器中的数据,再安装服务器,最后再模仿开发。