sip和xmpp都是应用层的协议,主要用来在互联网上发送语音和即时通讯IM,rfc3521定义了sip,rfc3920定义了xmpp。xmpp来自即时通讯系统,sip类似语音和视频通信。
xmpp协议主要负责数据的交换,sip主要负责端与端的链接建立,维护,终结,2者不是一个概念
随后,xmpp协议增加了jingle协议后,支持语音,视频 而sip协议添加了simple协议后,支持数据交换
sip协议,有sip报文格式的头部和内容2部分组成,是基于文本格式的,十分平面化,解析不容易被继承,而xmpp是采用xml进行传输数据的
sip的连接建立通道与数据传送通道是各自独立的,连接建立在sip client 与 server之间,而数据传送通道是在client---client之间之间进行的,这个对视频、音频文件的传送业务很适合。
xmpp协议的连接与数据的传递通道是一体的,client只与server建立连接,而client与client之间是没有连接的。client之间传送的通道是client1 --- server1 ------ server2 ------ clent2 。这种方式看起来扩展性差,server压力很大,但是能够实现很好的业务功能,比如留言,广播,群聊,状态更新,blog,微博等。
xmpp服务器对比:http://hi.baidu.com/chs_garea/item/74468028891943c5dcf69a3b
个人认为:openfire可以优点是用java编写 。缺点是不支持群集功能
ejabberd: 主要缺点是用erlang开发,是俄罗斯人开发的,很少有人懂,支持群集
jabberd:是用c语言开发
企业内部部署IM使用 Wildfire + Spark 是最佳的组合
公开地址:http://blog.csdn.net/learnios/article/details/23334597