心胸决定格局,眼界决定境界...

SIP和XMPP的异同

WebRTC并未规定使用何种信令机制和消息协议,象SIP、XMPP、XHR、WebSocket这些技术都可以用作WebRTC的信令通信。

除了信令服务器peer跟peer建立连接还需要借助另一种服务器(称为STUN server)实现NAT/Firewall穿越,因为很多peer是处于私有局域网中,使用私有IP地址,必须转换为公有IP地址才能相互之间传输数据。这其中涉及到一些专业术语包括STUN、TURN、ICE等,具体的本人还有待学习。网上找到的WebRTC demo好象都用的是Google提供的STUN server。

 

SIP和XMPP的异同

其实我们不能简单地拿SIP和XMPP做比对,就像我们不能直接比较比较苹果和橘子,前者主要是为了会话协商,后者主要是为了结构化数据交换,只不过随着各自对Simple和Jingle的引入,他们有了一些相似.

1,SIP提供连接的建立、修改和终止,而XMPP在客户端内部提供流管道,交换结构化数据。

也就是说:SIP的重点是终端之间连接的建立和维护,连接以后的数据和信息传送他不关注;而XMPP重点是考虑终端内部的数据交换,连接建立是基本的功能,而不是重点。所以,XMPP对应用的支持和扩展性的考虑很充分,比SIP天生要好.

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

3,SIP信令由header和body两部分组成,也就是说,SIP报文格式的header已经包含了部分内容,类似于HTTP,与具体的上层应用直接关联,而不是通用的报文格式;而XMPP所有信息都是采用XML在流管道之间透明传送。

SIP的连接建立通道与数据传送通道是各自独立的,连接建立在SIP client与Server之间,而数据传送通道是在Client--Client之间直接进行的。这个对视频、语音和文件传送业务很合适,但是不适合其他形式的应用。

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

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

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

5,SIP是双向对称,客户端和服务器都可以主动发起连接请求并响应,这种对称连接的方式在穿越NAT和Firewall的时候很麻烦,无法保证穿越NAT。而XMPP是单向的连接,只有Client可以向Server发起连接请求,Server不会向Client发起连接。这样便于NAT和Firewall的穿越

posted @ 2015-12-28 19:01  WELEN  阅读(521)  评论(0)    收藏  举报