Libjingle和各协议的关系

    前两篇blog介绍了P2P的原理和libjingle库的基本情况,如果直接看代码,很多细节可能不会注意到,这种时候最有效的方法当然是看它的开发文档,因为库是由Google开发和维护,所以这方面我们不用担心,文档首页见这里。但是如果要深入了解库代码为什么这么写,为什么这么约定时,还需要了解相应的协议。
   便于大家了解,特整理如下。(转载请注明作者和出处  by peakflys)

一、相关协议简介
·XMPP协议(核心协议):
      全称:The Extensible Messaging and Presence Protocol,即可扩展通讯和表示协议。说白了,就是规定基于XML流传输指定节点数据的协议。这么做的好处就是统一(peakflys注:大家都按照这个定义,做的东西就可以相互通讯、交流,这个应该很有发展前景!)。它是一个开放并且可扩展的协议,包括Jingle协议 都是XMPP协议的扩展。(peakflys注:使用Wireshark抓包时,早期的版本可能找不到这个协议,这时候可以选择Jabber,它是XMPP协议的前身)。现在很多的IM都是基于XMPP协议开发的,包括gtalk等。

·Jingle协议(重要的协议):

Jingle协议是XMPP协议上的扩展协议,它着手解决在XMPP协议框架下的点对点的连接问题,也即P2P连接。在Jingle框架下,即使用户在防火墙或是NAT网络保护之下,也能够建立连接,从而提供文件传送、视频、音频服务等。纲领性文件是XEP-0166

   ·TURN协议:

全称:Traversal Using Relays around NAT,顾名思义,就是通过中继服务器来传输数据的协议。

     ·STUN协议:

全称:Simple Traversal of UDP over NATs,即NAT UDP简单穿越,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。知道NAT类型并且有了公网IPportP2P就方便多了。

     ·ICE协议:

全称:Interactive Connectivity Establishment,即 交互式连接建立,说白了,它就是利用STUNTURN等协议找到最适合的连接。

二、Libjingle和各协议的关系

Jingle协议的发起方是Google,而libjingle库也是Google公司实现,ICE协议又基本包含在Jingle协议里,所以只需要知道libjingleJingle协议的区别即可。

历史:Libjingle大概和jingle XMPP 扩展在同一时间被建立。Libjingle的团队建立了他们自己的协议去处理回话协商,后来和使用标准化的jingle(基于XMPP的标准)一起工作。尽管,jinglelibjingle是非常相似的,但是它们是不一样的,而且不能共同使用。现在libjingle的源码版本依然使用原始的网络协议,跟以前的稍微有些不同,而且无法兼容jingle的规范。不过它还是足够的接近jingle,所以学习jingle的说明书是值得的。类似的“接近但不是一样”,libjingle的视频内容描述(早期的jingle的视频内容描述格式XEP-0167),ICE的传输描述(早期的jingleICE传输XEP-0176),以及流的UDP描述(早期的jingleUDP的传输描述XEP-0177

三、相关文档:
      RFC3921(下载: RFC3921)                          XMPP协议的核心文档
      RFC3489(STUN)(下载:RFC3489             STUN协议的草案
      rfc5245(ICE) (下载:RFC5245)                    ICE协议的草案
      xep-0166(Jingle)(下载:XEP-0166             Jingle协议的官方主体文档
      xep-0176(Jingle ICE-UDP)(下载:XEP-0176 定义Jingle和ICE结合的官方文档(主要就是用XMPP作为ICE信道来重新描述ICE协议)

                                                                              --by peakflys 15:30:19 Monday, February 04, 2013

 

posted on 2013-02-04 15:29 peakflys 阅读(7521) 评论(2)  编辑 收藏 引用 所属分类: P2P

评论

# re: Libjingle和各协议的关系 2013-02-05 05:38 essaycastle

的稍些 接不兼容 微有 的容 述(早期的  回复  更多评论   

# re: Libjingle和各协议的关系 2014-07-02 09:58 FreeLancer

是不是可以理解成libjingle实现了原来jingle协议的内容后又添加了新的协议?
还有webrtc的网络部分用的还是libjingle么,改动大不大?  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2013年2月>
272829303112
3456789
10111213141516
17181920212223
242526272812
3456789

导航

统计

公告

人不淡定的时候,就爱表现出来,敲代码如此,偶尔的灵感亦如此……

常用链接

留言簿(4)

随笔分类

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜