Jingle是用于点对点通信的标准框架。 它允许在两个可扩展消息和状态协议(XMPP)设备之间建立多媒体通信。 两者之间的协商是通过XMPP通道进行的,而实际媒体使用的是一个单独的专用数据通道,该通道采用了实时传输协议(RTP)。
Jingle的主要目的是促进使用VoIP和视频会议的通信。 它是由Google和XMPP标准基金会设计的。 [1]它无意替代其他协议,例如SIP(会话发起协议),该协议允许进行更通用的语音通信,也不支持任何电话功能,如呼叫转移,转接等。 但是,它旨在与SIP一起使用,以便XMPP客户端可以使用来自国际专业VoIP批发提供商(例如IDT)的现有VoIP网络。
好的,这只是叮叮当当和所做的简短介绍。 如果您仍在我们身边并想了解更多信息,请继续阅读有关框架使用的更多详细信息。
叮当的工作原理
如我们所见,Jingle允许一对XMPP客户端建立,维护和终止多媒体会话。 在这种情况下,多媒体通常涵盖语音和视频。 两者之间的协商是通过XMPP进行的,而媒体传输是在XMPP外部进行的。
在继续之前,我们需要对XMPP有所了解。 XMPP是一组用于使用语音和视频进行即时消息传递和聊天的开源标准。 它的主要设计目的是在推出时为封闭的专有消息系统提供一个开放的,分散的替代方案。
XMPP成功的关键在于它具有与电子邮件相同的去中心化基础结构,因此任何人都可以运行自己的XMPP服务器并控制自己的通信。 XMPP还可以与公共网络隔离安全地运行,以提供专用通信。 使用XMPP可以运行多种技术,而Jingle只是其中之一。
当您要启动多媒体会话时,第一个客户端“发起者”向第二个客户端发送邀请,即“会话发起要约”。 第二个客户端“响应者”对此进行了确认,并询问用户是否要继续进行-尽管可以将客户端配置为自动接受来自特定启动器的请求-无论哪种情况,响应器都接受来自启动器的会话。
接受会话后,响应者将以其可以接受的编解码器列表进行响应。 启动器接受响应,然后两者将协商将哪个编解码器用于媒体传输,并将开始媒体会话。
在通话结束时,任何一方都可以要求终止会话,另一方一旦确认这一点,就可以断开两者之间的链接。 简单。
多场会议管理
为了使所有这些工作正常,Jingle必须控制会话流。 在建立会话时,发起者必须找出响应者的哪些可用XMPP资源最适合应用程序以及可以使用哪种传输方法。 还可以选择指定允许两个客户端交换数据之前必须满足的安全条件,例如加密链接。
Jingle会话具有一定程度的灵活性,因此,一旦会话处于活动状态,就不必保持其配置固定不变。 可以更改活动会话以修改或删除内容-例如在停止视频时保持语音畅通-或更改传输协议。 Jingle还可以在客户端之间发送信息消息。
叮当下有两种不同的运输方式。 数据报具有交换数据包的组件。 这些可以是任何长度,并且可以以任何顺序接收。 使用数据报时,传输必须指定需要哪些组件以及如何使用它们。
另一种选择是流传输。 这交换类似于TCP中所见方法的双向流。 流上的数据包按顺序接收,每个数据包必须具有字符串标识符和最大数据包长度。 在会话开始时确定应使用哪种传输方式。
保护叮当
与任何在线服务一样,使用静乐时,安全性是重要的考虑因素。 使用某种形式的传输层安全性是一个不错的开始,并且正如我们所看到的,您可以根据存在的条件来启动会话。
Jingle可能还容易受到DDoS攻击的攻击,该DDoS攻击会以过多的请求轰炸客户端,因此,通过将系统配置为仅接受来自已知实体的连接来防范这一点很重要。 同样,可以通过确保会话ID匹配来避免呼叫的拦截和重定向。
[1] https://xmpp.org