个人管理功能

在CSDN Blog撰写技术文章,即有机会入选CSDN技术中心,现在就去免费注册!已注册用户,点击登录

搜索
热门标签
专题历史

有人说SOA是一种IT策略,有人说SOA是一种架构理念,还有人说SOA是一种服务。SOA到底是什么?它将带来什么?软件产业的变革亦或是新的机遇下的挑战?业界权威专家带领我们一起去深究,去探索。BEA三位重量级专家与您共同探讨SOA

随着WPF/E更名为正式名称Silverlight,以及Silverlight 1.1 Alpha 版本的发布,答案变得清晰,而且令人兴奋! - 一个跨操作系统,跨浏览器的Web应用平台出现了。Silverlight 这样一个4.5MB的浏览器插件(1.1 Alpha文件)是如何做到的这些的?周岳: SilverLight-Web应用的一道强光

中国移动用户数量在大踏步地发展与增长,根据产业部的数据,仅三月就新增了670万户。预估计6月份之后,中国很快将迎来第五亿手机用户(平均不到3人拥有一台手机)而J2ME做为最重要的手机跨平台技术,凭借Java平台以其良好的开放性和支持能力,得到了众多手机厂商的支持。对众多开发者来说,J2ME程序易于移植,轻松实现“一次编写,到处运行”。J2ME系列开发专题,将带你从最基本的工具安装,环境配置开始,进入移动应用开发的世界。
 
CSDN移动开发系列之-“J2ME开发实训”

7月31日-8月1日,即将在上海召开甲骨文全球大会•亚太地区会议同期举行的甲骨文开发者大会,这是一项付费参加的面向开发人员的活动。在甲骨文开发者大会期间,您将听到世界一流的专家讲述如何使用Java、.NET、XML和PL/SQL以及Ajax、PHP、Spring、Groovy on Rails等流行技术来简化开发过程。在为期两天的甲骨文开发者大会中,您将能够提高自身的开发技能,扩充知识,参加几十场由专家主持的深入细致的技术讲座并在专家的辅导下进行上机操作、了解高级技能和获得详细指导。在甲骨文开发者大会期间,您有机会直接向业界一流的技术专家和开发人员请教。欢迎参加甲骨文全球大会·2007·亚太地区开发者大会

2007年6月29日,自由软件基金会宣布,其创始人Richard Stallman将在GNU的网站上,在本周太平洋时间星期五上午9点通过视频发布GPLv3。本来,GPL并不是所有开源组织所认可的协议。其从出现以来一直存在争议,GPL被认为是一种“病毒式”的协议,BSD的fans和老牌Unix黑客们认为,他们编写Unix的年头都比GPL声明要长得多,他们更愿意采用比GPL更加的自由的BSD协议。今天,开源社区中有70%左右的项目采用了GPL。很多在开源社区的老牌黑客们认为,Richard Stallman所鼓吹开源软件的言行与当年卡尔·马克思号召产业无产阶级反抗工作的努力如出一辙。在GPLv3的第三版修订案发布时,开源软件团体中的许多成员都反对这种协议。尤其是Linux的核心开发小组,其中29个高级架构师有28个反对这个协议。Linus Torvalds称这个协议有“宗教性质”,并公开反对。而整个软件行业特别是开源社区对GPLv3的争论也愈演愈烈。GPLv3:大教堂和集市的新一轮对抗

2007年7月14日由CSDN与ThoughtWorks联合主办的第二届“敏捷中国”技术大会在北京丽亭华苑酒店召开,多位开源社区和ThoughtWorks公司的技术领袖即将带来精彩的演讲。本次“敏捷中国”技术大会集中展现塑造敏捷企业所需的方方面面:业界领先的敏捷项目管理工具;极大提升软件开发效率的新语言和新框架;数据库领域的敏捷实践;全方位的敏捷项目管理指导;还有身临其境的亲身体验。来自开源社区和ThoughtWorks公司的技术领导者们将带领听众全面感受敏捷企业。“敏捷中国大会”现场直击

从2004年起,在每年的夏季,CSDN都会举办面向中国程序员的大型网上调查活动。这是中国样本最丰富的开发者社区调查,持续、全面和深入地反映了中国开发者社群自身状况、各项技术、工具、产品的使用状况和发展趋势,是完整、准确地了解中国开发者市场的重要参考资料。本次调查覆盖基础信息、.NET、Java、C/C++、Web开发、数据库应用开发、软件工程及项目管理、移动及嵌入式开发、开放源代码、企业信息化等10个领域。还有惊喜大奖等着你哦,赶快进入吧! 2007中国软件开发者大调查正式启动

推荐作者
  • 大宝大宝

    时间如流水,知惜方成功。

  • SkymanSkyman

    江苏人氏,梅兰芳之老乡。现游学渝州之最...

  • ralph623ralph623

新进作者
  • 冲 s冲 s

  • 小鱼小鱼

  • 棱角棱角

    多年J2EE构架设计与开发经验,专注于企业信息系统建设,精通Java设计模式,并能熟练的运用到企业开发中。 精通Struts与Spring框架。数据库方面精通Oracle数据库,从事过数据库方面的开发以及oracle优化方面的工作。

最新技术图书推荐
ICE概要

发表日期:2007-6-27
更新日期:2007-6-27
作者文章阅读次数:3101

源自:jitom (个人网站) 标签:网络管理

您认为本文应该得       打印|收藏|讨论|投诉

本文档从ICE的产生背景入手,讨论了ICE的基本原理及其特性,并对其工作的几个核心部位进行了简单的概述,在此基础之上,分析了一个基于ICE通信的例子。所涉及的内容都是在宏观上的考虑,进一步的详细论述将在后续工作中展开。

 

一、ICE产生的背景

基于信令协议的多媒体传输是一个两段式传输。首先,通过信令协议(如SIP)建立一个会话连接,通过该连接,会话双方(Agent)通过SIP交互所承载的SDP消息彼此学习传输媒体时所必须的信息,针对媒体传输机制达成共识。然后,通常采用RTP协议进行媒体传输。

基于传输效率的考虑,通常在完成第一阶段的交互之后,通信双方另外建立一条直接的连接传输媒体。这样就会减少传输时延、降低丢包率并减少开销。这样,用于SIP传输的链路就不再用于传输媒体。现在,问题出现了,由于不采用原来的链路,当传输双方中任一方位于NAT之后,新的传输链接必须考虑NAT穿越问题。

通常有四种形式的NAT,对于每一中NAT方式,都有相应的解决方案。然而,每一种NAT穿越解决方案都局限于穿越对应得NAT方式,对于复杂的网络环境来说,将会出现无法进行媒体传输的情况,同时这些方案给整个系统带来了在不同程度上的脆弱性和复杂性。

在这种背景下,Interactive Connectivity Establishment交互式连通建立方式)也即ICE解决方案应运而生。ICE方式能够在不增加整个系统的复杂性和脆弱性的情况下,实现对各种形式的NAT进行穿越,使得媒体流在通信双方顺利传输。

 

二、ICE工作的基本原理及特性

ICE是一种探索和更新式的解决方案。通过收集自己的和通信对端的尽可能多的网络信息(各种网络地址),尝试在这些地址之间建立数据通道,并在此过程中不断更新先前收集到的信息,从而找到和选择一条能够进行NAT穿越的数据通道。

其特性如下:ICE实现不是很复杂,支持TCP穿透,对NAT设备没有要求,支持所有类型的NAT,必须在客户端实现ICE,在网络结构中需要STUN/TURN服务器,具有与协议无关性和良好的可扩展性,安全性和健壮性都比较好。

 

三、ICE工作的核心

如下内容是ICE实现NAT穿透的所要完成的核心处理。包括收集地址,对地址进行排序、配对,然后执行连通性检查。

1、收集地址

Agent必须确定所有的候选的地址。这些地址包括本地网络接口的地址和由它派生的其他所有地址。本地网络地址包括本地网卡地址、VPN网络地址、MIP网络地址等。派生地址指的是通过本地地址向STUN服务器发送STUN请求获得的网络地址,这些地址分为两类,一类是通过STUN的绑定发现用法得到的地址,称为服务器反向候选地址(Server Reflexive Candidates)或服务器反向地址。另一类是通过中继用法得到的,称为中继地址(RELAYED CANDIDATES)。上面提到的两种用法在相应的规范中提出。

服务器反向地址实际上就是终端的网络包经过一重或多重NAT穿透之后,由STUN服务器观察到的经过NAT转换之后的地址。中继地址是STUN服务器收到STUN请求后,为请求发起方在本机上分配的代理地址,所有被路由到该地址的网络包将会被转发到服务器反向地址,继而穿透NAT发送到终端,因此如名字所示,它是STUN服务器完成中继功能的地址。

为了找到服务器反向地址,Agent通过每一个主机候选地址(通过绑定主机某个接口和端口而获取的候选地址),使用绑定发现用法(Binding Discovery Usage [11])发送一个STUN绑定请求给STUN服务器(STUN服务器的地址已经配置或者可以通过某种途径学习到)。当Agent发送绑定请求,NAT将分配一个绑定,它映射该服务器反向地址到主机候选地址。这样,通过主机候选地址发送的外发包,将通过NAT转换为通过服务器反向地址发送的包。发往服务器反向候选地址的包,将被NAT转换为发往该主机候选地址的包,并转发给Agent

AgentSTUN服务器之间存在多重NAT,那么STUN请求将会针对每一个NAT创建一个绑定,但是,只有最外部的服务器反向地址会被Agent发现。如果Agent不在任何NAT之后,那么,基候选传输地址将与服务器反向地址相同,服务器反向地址可以忽略。

关于中继地址,STUN中继用法允许STUN服务器作为一个媒体中继器进行工作,在LR之间进行转发。为了发送消息到LR必须发送消息给媒体中继器,通过媒体中继器转发给L。反之亦然。

LR的消息其地址信息将两次被重写:第一次被NAT,第二次被STUN中继服务器。这样,R所了解的想与之通信的地址就是STUN中继服务器的地址。这个地址就是中继地址。

 

2、连通性检查

Agent L收集到所有的候选地址后,就将它们按优先级高低进行排序,再通过信令信道发送给Agent R。这些候选地址作为SDP请求的属性被传输。当R收到请求,它执行相同的地址收集过程,并且把它自己的候选地址作为响应消息发给请求者。这样,每个Agent都将有一个完整的包含了双方候选地址的列表,然后准备执行连通性检查。

连通性检查的基本原理是:

l        按照优先顺序对候选地址进行排序。

l        利用每个候选地址发送一个检查包。

l        收到另一个Agent的承认检查包。

首先,Agent将本地地址集和远程地址集进行配对,如本地有n个地址,远程有m个地址,那么配成n*m对。对这些地址对进行连通性检查是通过发送和接收STUN请求和响应完成的,此时,Agent在每个地址对的本地地址上,必须同时充当STUN服务器和STUN客户端的角色。若通信双方以某一地址对通过一个完整的四次握手,那么该地址对就是有效地址对。

四次握手是指:当通过地址对中的本地地址向地址对中远程地址发送一个STUN请求,并成功收到STUN响应,称该地址对是可接收的;当地址对中的本地地址收到地址对中远程地址的一个STUN请求,并成功地响应,则称该地址对为可发送的。若一个地址对是可接收的,同时又是可发送的,则称该地址对是有效的,即通过连通性检查。则此地址对可用于媒体传输。

通常在对称NAT的情况下,在地址对验证过程中,会出现发现以前收集地址时没有收集到的地址对,这时就要对这些新的地址对进行连通性检查。

 

3、对候选地址进行排序

由于收集候选地址时,收集的是所有的候选地址,为了能够更快更好的找到能够正常工作的候选地址对,对所有组合进行排序是势在必行的。在此说明进行排序的两个基本原则,详细地排序算法将在后续文档中描述。

l        Agent为它的每个候选地址设置一个数值的优先级,这个优先级连同候选地址对一起发送给通信的对端。

l        综合本地的和远程的候选地址的优先级,计算出候选地址对的优先级,这样,双方的同一个候选地址对的优先级相同。以此排序,则通信双方的排序结果相同。

4、进行SDP编码

为了实现基于ICENAT穿越,对SDP进行了扩展,主要增加了四个属性。分别是candidate属性、ice-ufrag属性、ice-pwd属性和remote-candidates属性。

candidate属性为通信提供多种可能的候选地址中的一个。这些地址是使用STUN的端到端的连通性检查为有效的。

remote-candidates属性提供请求者想要应答者在应答中使用的远程候选传输地址标识。

ice-pwd属性提供用于保护STUN连通性检查的密码。

ice-ufrag属性提供在STUN连通性检查中组成用户名的片断。

 

四、一个例子

两个AgentLR,使用ICE。它们都有单个IPv4接口。对于Agent L地址为10.0.1.1,对于R192.0.2.1。它们都配置了单独的STUN服务器(实际上是同一个),STUN服务器在192.0.2.2地址的3478端口监听STUN请求。这个STUN服务器同时支持绑定发现和中继功能。Agent L位于NAT之后,R位于公网。NAT有一个终端独立的映射特性和依靠地址的过滤特性。NAT公网端的地址是192.0.2.3。网络结构图如下所示。

 

图一 ICE的典型应用环境

为了便于理解,传输地址用变量名代替。变量名的格式是entity-type-seqno,其中entity是具有该传输地址的接口所在实体,具体为是LRSTUNNAT之一。type不是PUB(地址位于公网)就是PRIV(地址位于内网)。seqno是在实体上的相同类型的各传输地址各自的序列号。每个变量都有一个IP地址和端口号,分别用varname.IPvarname.port表示,varname就是变量名。

STUN服务器有公网的传输层地址STUN-PUB-1192.0.2.23478),绑定发现用法和中继用法都使用这个地址。但在此处,两个Agent都不使用中继用法。

在呼叫过程中,STUN消息有被许多属性注解。“S=”属性表明消息的源传输地址,“D=”属性表明消息的目标传输地址。“MA”属性用于STUN绑定响应消息,指明映射的地址。

基于以上规定,媒体传输的初始过程如下图所示。

 

消息1-4获取服务器反向地址。消息5发送一个请求给R,该请求包括了本地主机候选地址和服务器反向地址。R收到消息5之后,通过消息6-7获取服务器反向地址(由于R不在NAT之后,服务器反向地址与主机候选地址相同),然后发送一个应答(消息8)给L,应答中包括主机候选地址。至此,通信双方都获取了彼此的网络信息。

双方都对获取的传输地址进行配对,确定优先级并排序。之后,R开始执行其连通性检查(消息9),由于来自L的候选地址是一个私有地址,所以此检查必定失败,而被丢弃。

同时,L收到应答后,除去包含了服务器反向地址的那对检查,只剩一对检查。基于此对地址,执行连通性检查(消息10),经过NAT转换后发送给R(消息11)。R收到之后发送响应给L(消息12),该消息中通过MA属性指明映射地址,经过NAT之后返回给L(消息13),这样L的连通性检查成功。L检查收到的消息13,以NAT-PUB-1为本地地址,R-PUB-1为远程地址创建新的地址对,并添加到有效列表中。

ICE查看有效列表,发现有一对存在,就发送一个更新请求(消息14)给R,这个请求用于删除没有被选中的候选地址,并且指示远程地址。

消息11到达R之后,会触发R执行一个相同地址对的检查,消息16-19反映了这个过程,在收到消息19的响应之后,R会像L一样创建一对新的地址对(以R-PUB-1为本地地址,以NAT-PUB-1为远程地址),并添加到有效列表中。这样就可以进行媒体传输了。

 

五、总结

本文档从ICE的产生背景入手,讨论了ICE的基本原理及其特性,并对其工作的几个核心部位进行了简单的概述,在此基础之上,分析了一个基于ICE通信的例子。所涉及的内容都是在宏观上的考虑,进一步的详细论述将在后续工作中展开。

 

 

您认为本文应该得       打印|收藏|讨论|投诉

暂无图片

一个尚未成功的人,一个期待成功的人,一个必将成功的人!

评论

CSDN技术中心团队官方Blog:http://blog.csdn.net/techcenter/,反馈邮箱:techcenter at csdn.net (注意:请把 at 换成@)


网站简介广告服务网站地图帮助联系方式诚聘英才English问题报告

北京百联美达美数码科技有限公司  版权所有  京 ICP 证 020026 号

Copyright © 2000-2006, CSDN.NET, All Rights Reserved