`
jiagou
  • 浏览: 2608126 次
文章分类
社区版块
存档分类
最新评论

ICE 原理学习

 
阅读更多

本文 来自 csdn ucserhttp://blog.csdn.net/perfectpdl, 转载注明出处,谢谢。


ICE提供的是一种框架,使各种NAT穿透技术可以实现统一。该技术可以让基于SIP的VoIP客户端成功地穿透远程用户与网络之间可能存在的各类防火墙,下图为ICE基本流程:



ICE定义的是一种标准化的方法,使SIP客户端(或者是基于其他多媒体会话协议的客户端)能够确定客户端之间存在的是哪一种类型的NAT防火墙,并且确定一连串可以用于实现连接的IP地


址。通过使用多种协议及网络连接机制,如STUN、中继NAT实现的穿透(Traversal Using Relay NAT ,TURN),ICE可以学习客户端所在网络的


拓扑结构以及这些设备可以实现通信的各类网络地址。

当一个具备ICE功能的客户端(发起端)希望与另外一台设备(接收端)通信时,它首先会从STUN、TURN、RSIP等来源中收集尽可能多的IP地址信息,并在本地对那些地址进行配置,选择


其中可以向客户端提供IP流量的地址。ICE的一项关键优势就是能够统一这些IP地址信息源提供的信息,并创建尽可能多的路径来连接自己的目的地。
  此时,发起的客户端通过这些地址连接至一台STUN服务器,并向所需要的接收端客户机发送一条启动信息。这条信息中包含先前学习到的所有可能的地址组合,并利用它们到达自己的目的地。
  当接收端收到启动信息后,它会通过这些地址向发起端发送一系列的STUN请求。通常情况下,由于沿途网络拓扑结构和NAT防火墙的缘故,接收端发出的STUN请求中至少会有一条到达发起端。当发起端接收到这些STUN请求后,它会逐条进行回复。如果一部分STUN请求能够穿透并抵达接收端,那么就表明设备可以利用这部分地址进行通信。在此基础上,设备还会利用启动信息中排序最高的那部分地址进行进一步的设备间通信。
  由于该技术是建立在多种NAT穿透协议的基础之上,并且提供了一个统一的框架,所以ICE具备了所有这些技术的优点,同时还避免了任何单个协议可能存在的缺陷。因此,ICE可以实现在未知网络拓扑结构中实现的设备互连,而且不需要进行对手配置。另外,由于该技术不需要为VoIP流量手动打开防火墙,所以也不会产生潜在的安全隐患。


分享到:
评论

相关推荐

    Zeroc_ICE学习大全

    1. **中文教程**:这部分内容可能包含一系列的中文教学材料,帮助中文读者更方便地理解和学习 ICE 的基本概念、原理和使用方法。教程可能涵盖诸如服务发布、客户端连接、数据序列化等主题,是初学者的入门佳选。 2....

    Ice通信框架原理与实践

    《Ice通信框架原理与实践》是一份深度探讨Ice框架的宝贵资源,对于初学者和有经验的开发者来说都是绝佳的学习材料。Ice,全称为“Internet Communication Engine”,是一种高性能、跨平台的分布式对象中间件,它提供...

    ICE学习资料

    ICE 3.4.2 是该版本的源代码,对于深入理解ICE的工作原理和进行二次开发至关重要。通过阅读源码,开发者可以了解到ICE内部的类结构、通信协议以及各种操作的实现细节。这不仅有助于定制化需求,也能帮助提升程序员的...

    ice.rar_ice matlab_ice.m matlab_matlab ice_matlab ice_matlab i

    本文将深入探讨名为"ICE"的MATLAB源码,它源自冈萨雷斯的《数字图像处理》一书,并结合提供的ice.m文件,解析其核心功能和实现原理。 "ICE"是Image Contrast Enhancement(图像对比度增强)的缩写,是数字图像处理...

    Ice-3.3.1 ICE

    总的来说,《Distributed Programming with Ice》是一本深入浅出的书籍,不仅详细介绍了Ice框架的内部工作原理,而且还提供了丰富的实例和最佳实践,是学习和掌握Ice的理想资源。对于那些希望在分布式计算领域有所...

    Ice-3.5.1.zip

    通过阅读这些源代码,可以深入了解Ice的内部工作原理。 2. `include`目录:存放头文件,定义了Ice的各种接口和类。 3. `doc`目录:文档资料,包括用户手册、开发者指南等,对理解和使用Ice非常有帮助。 4. `bin`目录...

    ice.rar_ICE_ICE 开发_ICE CORBA_corba_ice接口

    ICE(Internet Communications Engine)是一种现代的、高...通过学习提供的资源,如Ice.ppt和www.pudn.com.txt,开发者可以掌握ICE的基础知识,了解其工作原理,并能将其应用于实际项目中,构建高效的分布式解决方案。

    ice源码(Ice-3.4.1.tar.gz)

    通过深入分析ICE 3.4.1的源码,开发者不仅可以了解其工作原理,还能学习到分布式系统设计的最佳实践,提升自己在分布式计算领域的专业技能。同时,对于那些希望定制ICE或扩展其功能的开发者来说,源码分析更是不可或...

    Ice入门完整实例

    最后,通过实际运行iceTest并观察其交互过程,可以加深对Ice工作原理的理解。 总之,"Ice入门完整实例"是一个很好的起点,帮助你从零开始学习和实践Ice中间件。通过深入研究这个实例,你将能够熟练地运用Ice来构建...

    ICE包_32位

    对于初学者,建议从阅读官方文档开始,了解ICE的基本概念和工作原理,然后逐步通过示例代码加深理解和实践。对于有经验的开发者,ICE的灵活性和强大功能使其成为构建高性能分布式应用的理想选择。

    552404 ZeroC Ice权威指南_ZeroCI_

    通过学习《552404 ZeroC Ice权威指南》,开发者不仅能理解ICE的基本原理,还能掌握如何在实际项目中应用这些知识,提升在分布式系统开发领域的专业技能。无论是初学者还是有经验的开发者,都能从中受益,实现更高效...

    Ice.zip_ICE_ICE C++

    【标题】"Ice.zip_ICE_ICE C++" 指的是一个压缩包,...总之,"Ice.zip_ICE_ICE C++"提供的源码是学习和研究ICE框架在C++中的应用的良好素材,它不仅有助于理解ICE的工作原理,也能提升在分布式系统开发中的实战能力。

    ice异步模式源码实例

    通过分析这些源代码,开发者可以学习如何在实际项目中应用ICE的异步模式,理解其内部工作原理,以及如何在C++中编写和管理异步回调。 在实践中,使用ICE的异步模式需要注意线程安全、错误处理和资源管理等问题。...

    ice-demos-3.7.0

    通过对ice-demos-3.7.0中的示例进行学习和实践,开发者可以深入理解zeroc Ice的工作原理,以及如何在实际项目中利用其优势。这些示例将帮助你快速上手,并能更好地应用于你的分布式系统设计和实现中。无论你是新手...

    ZeroC Ice3.7 官方手册英文版加注中文书签

    - **Ice协议概述(Overview of the Ice Protocol)**:解释了Ice通信协议的工作原理及其特性。 - **1.1.2 Ice 服务概览**:概述了Ice提供的一系列服务,包括但不限于身份验证、安全性和日志记录等。 - **1.1.3 ...

    ZeroC Ice权威指南

    , 与很多技术类书籍不同的是,《ZeroC Ice权威指南》不是简单地罗列知识点和简单代码,而是在指导学习的过程中,不断抛出一些高质量代码,如客户端封装、服务端框架、服务调用拦截监控等可立即应用于生产的代码,...

    ice-builder-eclipse

    【ice-builder-eclipse】是一个专为Eclipse IDE设计的插件,主要用于支持ICE(Integrated Computing ...通过学习和使用这个插件,开发者可以更好地理解和掌握ICE框架,并提升其在分布式系统开发中的专业技能。

    ice包以及一个用ice做的demo

    这个"ice包以及一个用ice做的demo"是为帮助开发者理解并学习ICE的使用而提供的实例。ICE提供了丰富的API和工具,支持多种编程语言,如C++、Java、Python等,使得开发人员可以在不同的操作系统上进行无缝通信。 ICE...

    ice-demos-3.6.4

    这些演示通常是为了帮助开发者更好地理解ICE的工作原理,学习如何使用ICE进行通信和数据交换,以及如何利用其特性来构建实际的应用。 在"ice-demos-3.6.4"中,我们可以期待找到以下内容: 1. **源代码**:包含各个...

    ice-3.7.3.tar.gz

    Ice 3.7.3是这个系列的一个版本,其源码的开放对于开发者来说,无疑是一个深入理解Ice工作原理、优化应用程序和进行二次开发的重要资源。 首先,让我们了解一下Ice的核心概念。Ice是一个基于代理(Proxy)模式的...

Global site tag (gtag.js) - Google Analytics