XMPP和SIP的对比

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mandagod/article/details/70807924

简介:

XMPP和SIP都是应用层协议,主要用于互联网上发送语音和即时通讯.

SIP在RFC 3621中定义,XMPPRFC 3920中定义,

XMPP是从即时通讯中演变而来,SIP是从VOIP中演变而来,

XMPP为了会话协商添加了一个扩展叫做Jingle,

SIP 为了即时通讯业务添加了一个扩展叫做SIMPLE.

 

SIP (Session Initiation Protocol)

SIP是一个应用层协议,是用在类似VOIP这样的场合,

用来建立,修改,中止会话,同时在多人会议中他也能在已有会话中加入新的会话

基本上SIPVOIP中的信令协议,它处理呼叫建立,呼叫转移和产生CDR(Call Detail Record,供通话计费用).

 

XMPP (Extensible Messaging Presence Protocol)

XMPP是一个为即时通讯和请求响应业务服务的XML协议.

最早由Jabber开源社区在1999年开发,2002XMPP工作组为了更适合即时通讯对Jabber进行了扩展

 

SIP和XMPP的异同

其实我们不能简单地拿SIPXMPP做比对,就像我们不能直接比较比较苹果和橘子,

前者主要是为了会话协商,

后者主要是为了结构化数据交换,

只不过随着各自对SimpleJingle的引入,他们有了一些相似.

 

1. SIP提供连接的建立、修改和终止,

XMPP在客户端内部提供流管道,交换结构化数据。

也就是说:SIP的重点是终端之间连接的建立和维护,连接以后的数据和信息传送他不关注;而XMPP重点是考虑终端内部的数据交换,连接建立是基本的功能,而不是重点。

所以,XMPP对应用的支持和扩展性的考虑很充分,SIP天生要好.

 

2. SIP的信令和消息传送是基于文本的,不太好解析,或者说解析起来缺少规律性,在新增数据消息体的时候缺少继承性,需要开发新的代码来封装和解析,原有代码的继承性比较差。而XMPP采用XML,是一种结构化的消息结构,能够方便地表达层次化的内容,以及内容之间的内在逻辑。这种XML结构对应用的扩展和内容的解析带来极大的方便,大量软件代码可以复用。

 

3. SIP信令由headerbody两部分组成,也就是说,SIP报文格式的header已经包含了部分内容,类似于HTTP,与具体的上层应用直接关联,而不是通用的报文格式;

 

XMPP所有信息都是采用XML在流管道之间透明传送。

SIP的连接建立通道与数据传送通道是各自独立的,连接建立在SIP clientServer之间,而数据传送通道是在Client--Client之间直接进行的。

这个对视频、语音和文件传送业务很合适,但是不适合其他形式的应用。

XMPP的控制和数据通道是一体的,Clent只与Server建立连接,而ClientClient之间是没有之间连接的。Client之间传送的通道是:Client1---Server1---Server2---Client2。这种方式看起来扩展性差,server压力很大,但是能够实现很好的业务功能,比如留言、广播、群聊、状态更新、Blog、微博、数据共享等等。

这种C-S模型,很多业务的控制在Server上完成,新功能的增加在server上实现,在server上定义新的XML对象和逻辑,客户端只要负责XML数据流的解析和呈现就可以了所以,终端实现简单

 

4. SIP可以使用UDP,TCP,TLS进行传送,XMPP仅仅使用TCPTLS进行发送.

 

5. SIP是双向对称,客户端和服务器都可以主动发起连接请求并响应,这种对称连接的方式在穿越NATFirewall的时候很麻烦,无法保证穿越NAT

XMPP是单向的连接,只有Client可以向Server发起连接请求,

Server不会向Client发起连接。这样便于NATFirewall的穿越。

展开阅读全文

没有更多推荐了,返回首页