Libjingle和各协议的关系
一、相关协议简介
·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类型并且有了公网IP和port,P2P就方便多了。
·ICE协议:
全称:Interactive Connectivity Establishment,即 交互式连接建立,说白了,它就是利用STUN和TURN等协议找到最适合的连接。
二、Libjingle和各协议的关系
Jingle协议的发起方是Google,而libjingle库也是Google公司实现,ICE协议又基本包含在Jingle协议里,所以只需要知道libjingle和Jingle协议的区别即可。www.2cto.com
历史:Libjingle大概和jingle XMPP 扩展在同一时间被建立。Libjingle的团队建立了他们自己的协议去处理回话协商,后来和使用标准化的jingle(基于XMPP的标准)一起工作。尽管,jingle和libjingle是非常相似的,但是它们是不一样的,而且不能共同使用。现在libjingle的源码版本依然使用原始的网络协议,跟以前的稍微有些不同,而且无法兼容jingle的规范。不过它还是足够的接近jingle,所以学习jingle的说明书是值得的。类似的“接近但不是一样”,libjingle的视频内容描述(早期的jingle的视频内容描述格式XEP-0167),ICE的传输描述(早期的jingle的ICE传输XEP-0176),以及流的UDP描述(早期的jingle流UDP的传输描述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协议)

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Editor of Machine Power Report: Wu Xin The domestic version of the humanoid robot + large model team completed the operation task of complex flexible materials such as folding clothes for the first time. With the unveiling of Figure01, which integrates OpenAI's multi-modal large model, the related progress of domestic peers has been attracting attention. Just yesterday, UBTECH, China's "number one humanoid robot stock", released the first demo of the humanoid robot WalkerS that is deeply integrated with Baidu Wenxin's large model, showing some interesting new features. Now, WalkerS, blessed by Baidu Wenxin’s large model capabilities, looks like this. Like Figure01, WalkerS does not move around, but stands behind a desk to complete a series of tasks. It can follow human commands and fold clothes

Object-relational mapping (ORM) frameworks play a vital role in python development, they simplify data access and management by building a bridge between object and relational databases. In order to evaluate the performance of different ORM frameworks, this article will benchmark against the following popular frameworks: sqlAlchemyPeeweeDjangoORMPonyORMTortoiseORM Test Method The benchmarking uses a SQLite database containing 1 million records. The test performed the following operations on the database: Insert: Insert 10,000 new records into the table Read: Read all records in the table Update: Update a single field for all records in the table Delete: Delete all records in the table Each operation

Object-relational mapping (ORM) is a programming technology that allows developers to use object programming languages to manipulate databases without writing SQL queries directly. ORM tools in python (such as SQLAlchemy, Peewee, and DjangoORM) simplify database interaction for big data projects. Advantages Code Simplicity: ORM eliminates the need to write lengthy SQL queries, which improves code simplicity and readability. Data abstraction: ORM provides an abstraction layer that isolates application code from database implementation details, improving flexibility. Performance optimization: ORMs often use caching and batch operations to optimize database queries, thereby improving performance. Portability: ORM allows developers to

To deeply analyze the meaning of the pip protocol, specific code examples are required. Introduction: In the Python world, pip (i.e. pipinstall) is our preferred way to install and manage third-party libraries. It is a Python package management tool. It is widely used in the development process because of its simplicity, efficiency, ease of use and convenience. This article will deeply analyze the meaning of the pip protocol, demonstrate the important role and usage of pip through specific code examples, and help readers better understand and use pip. 1. pip protocol

"Is the core of Golang limited to single-core operation? 》Golang, as a modern programming language, has excellent performance in concurrent processing and performance. However, some have questioned whether Golang's core is limited to single-core operation. In this article, we will explore the concurrency features of Golang and its performance on multi-core processors, and answer this question through concrete code examples. Golang has in-depth design and support for concurrent processing at the language level. It uses goroutin

Research on the relationship between Huawei Hongmeng system and Android With the continuous development of technology, smartphones have become an indispensable part of people's lives. As one of the world's leading mobile phone manufacturers, Huawei has been constantly innovating and is committed to providing better mobile operating systems and user experiences. In recent years, with the United States' suppression of Huawei, Huawei has begun to accelerate the development of its own operating system, and HarmonyOS came into being. In this context, people have begun to pay attention to the relationship between Hongmeng System and Android. First, we need to understand

Object-relational mapping (ORM) is a technology that allows building a bridge between object-oriented programming languages and relational databases. Using pythonORM can significantly simplify data persistence operations, thereby improving application development efficiency and maintainability. Advantages Using PythonORM has the following advantages: Reduce boilerplate code: ORM automatically generates sql queries, thereby avoiding writing a lot of boilerplate code. Simplify database interaction: ORM provides a unified interface for interacting with the database, simplifying data operations. Improve security: ORM uses parameterized queries, which can prevent security vulnerabilities such as SQL injection. Promote data consistency: ORM ensures synchronization between objects and databases and maintains data consistency. Choose ORM to have

The Android system and the Linux kernel are two closely related entities, and the relationship between them is close and complex. In the Android system, the Linux kernel plays an important role, providing underlying hardware drivers and system call support for the Android system. This article will explore the relationship between the Android system and the Linux kernel, how they interact and work together, and provide some specific code examples. Android is a mobile operating system developed based on the Linux kernel and is mainly used for mobile devices such as smartphones and tablets. L
