(通信与信息系统专业论文)sip协议栈研究与开发.pdf_第1页
(通信与信息系统专业论文)sip协议栈研究与开发.pdf_第2页
(通信与信息系统专业论文)sip协议栈研究与开发.pdf_第3页
(通信与信息系统专业论文)sip协议栈研究与开发.pdf_第4页
(通信与信息系统专业论文)sip协议栈研究与开发.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(通信与信息系统专业论文)sip协议栈研究与开发.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 s i p ( s e s s i o ni n i t i a t i o n p r o t o c 0 1 ) 最初是为管理多媒体会话过程而提出的,现 在已经成为v o 口( v o i c eo v c ri p ) 系统建设中最被看好的信令控制协议。扩展s i p 协议栈以适合电话应用,是当前研究的热点之一。 1 论文在深入分析o s i p 和e x o s i p 这两个s i p 协议栈的基础上,根据v o 口的 潜在需求提出了针对电话服务的s i p 协议栈的架构。基于这个架构,设计实现了 新的s i p 协议栈。该栈在结构上比原s i p 协议栈集成了更多的网络通信模块,特 别是把呼叫过程控制单独抽象成一个模块,并提供了大量面向电话服务的接口, 使之与口电话服务契合更加紧密。另外针对网络应用程序开发,在该栈中引入 了新的定时器管理机制用以增强网络性能。最后在局域网环境下应用该栈实现了 一个v o i p 网络通信原型系统,并进行了一系列实验,证明了该栈的正确性和实用 性。 关键词: 会话初始化协议协议栈有限状态机时间轮 a b s t r a c t s i pw a so r i g i n a l l yd e v e l o p e df o ri n i t i a t i o no fm u l t i m e d i as e s s i o n s i ti sc u r r e n t l y r e c e i v i n gt h em o s ta t t e n t i o ni nt h ec o n s t r u c t i o no fv o i ps y s t e m t od e v e l o pt h es t a c k b a s e do i ls i p , f o rt h ep u r p o s eo ff i t t i n gi tf o rt h et e l e p h o n ys e r v i c e s ,i st h eh o t p o tn o w i nt h i sp a p e r , b yr e s e a r c h i n gt w oi m p l e m e n t a t i o n so fs i pp r o t o c o l ,o n en a m e d o s i pa n dt h eo t h e rn a m e de x o s i p , a l la r c h i t e c t u r eo ft e l e p h o n y c o m m u n i c a t i o nw i t h s i pp r o t o c o li sp r e s e n t e d b a s e do nt h ea r c h i t e c t u r e ,n e ws i pp r o t o c o ls t a c ki s d e s i g n e df o rt h ep u r p o s eo fd e v e l o p i n gwt e l e p h o n es e r v i c e s ,t h es t r u c t u r eo fw h i c h h a si n t e g r a t e dm o r em o d u l e so fc o m m u n i c a t i o no n i n t e r n e tt h a nt h eo r i g i n a l e s p e c i a l l y , t h ec a l l i n gp r o c e s sc o n t r o li ss e p a r a t e da sas i n g l em o d u l e ,a n da d e q u a t e i n t e r f a c e sa l es u p p l i e df o rt h et e l e p h o n es e r v i c e s s ot h a ta p p l i c a t i o n so fv o 口c a nb e c o n s t r u c t e dm o r ee a s i l ya n dr a p i d l y a d d i t i o n a l l y , t h et i m e rm a n a g e m e n to fn e t w o r k a p p l i c a t i o n si si n t r o d u c e dt oi m p r o v e t h en e t w o r kp e r f o r m a n c eo ft h en e ws t a c k a tl a s t ,s e r i e so fe x p e r i m e n t sh a v eb e e nm e d ei nt h el a ne n v i r o n m e n t ,w h i c hh a s a p p l i e da l le l e m e n ts y s t e mo fv o l et h e r e s u l t ss h o wt h ev a l i d i t ya n dc o m p a t i b i l i t yo f t h en e ws t a c k , w h i c hi se f f e c t i v et ob u i l dac a l l i n ga p p l i c a t i o n k e y w o r d : s i p p r o t o c o ls t a c k f s m t i m i n gw h e e l s 创新性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做 的任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:金蕴日期:! 宣量亟 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生 在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕业 离校后,发表论文或使用论文工作成果时署名单位仍然为谣安电子科技大学。学 校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部 或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。f 保密的论文在 解密后遵守此规定) 本学位论文属于保密在年解密后适用本授权书。 本人签名: 导师签名; 第一章绪论 1 1 1s i p 的历史发展 第一章绪论 1 1 选题背景和意义 s i p 1 j 是在两个终端之间建立或者释放连接的协议,是第一个适合各种媒体内 容而实现多用户会话的协议,现在已成为i e t f ( i n t e m e te n g i n e e r i n gt a s kf o r c e ) 组织的规范s i p 的出现满足了通信运营商和服务商对新一代口业务的需求。 s i p 出现于二十世纪九十年代中期,源于哥伦比亚大学计算机系副教授 h e n n i n gs c h u l z d n n e 及其研究小组。s c h u l z r i n n e 教授与其他人共同提出通过 i n t e m e t 传输实时数据的实时传输协议( at r a n s p o r tp r o t o c o lf o rr e a l t u n e a p p l i c a t i o n s ,r t p ) 后1 2 】,还与人合作编写了实时流传输协议( r e a lt i m es t r e a m i n g p r o t o c o l ,r t s p )标准提案1 3 l ,用于控制音频视频内容在w e b 上的流传输。 s c h u i z r i n n e 为了编写多方多媒体会话控制( m u l t i p a r t ym u l t i m e d i as e s s i o nc o n t r o l , m m u s l c ) 标准,于1 9 9 6 年向i e t f 提交了一个相关的草案,其中孕育了s 口的 重要内容。1 9 9 9 年,s h u l z r i n n e 在提交的新标准中删除了有关媒体内容方面的无 关内容。随后,i e t f 发布了第一个s i p 规范,即r f c 2 5 4 3 1 4 1 。一些供应商担心 h 3 2 3 协议可能会大大危及他们在s i p 服务方面的投资,但i e t f 继续进行这项工 作,于2 0 0 1 年发布了s i p 规范r f c 3 2 6 1 1 1 i 。r f c 3 2 6 1 的发布标志着s i p 的基础已 经确立,之后又发布了几个r f c 增补版本,充实了安全性和身份验证等领域的内 容。例如,r f c 3 2 6 2 对临时响应的可靠性作了规定啊,通信运营商和服务商通信 运营商和服务商r f c 3 2 6 3 确立了s i p 代理服务器的定位规则嘲,r f c 3 2 6 4 提供了 提议应答模型 7 1 ,r f c 3 2 6 5 确定了具体的事件通知 s l 。早在2 0 0 1 年,供应商就已 开始推出基于s i p 的服务,直到今天,人们对该协议的热情依然高涨。s u n m i c r o s y s t e m s 的j a v ac o m m u n i t yp r o c e s s 等组织正在使用通用的j a v a 编程语言定 义应用编程接口,以便开发商能够为服务提供商和企业构建s i p 组件和应用程 序。 今天越来越多的运营商、c l e c ( c o m p e t i t i v el o c a le x c h a n g ec a r r i e r ) 和i t s p ( i n t e r a c tt e l e p h o n ys e r v i c ep r o v i d e r ) 都在提供基于s i p 的服务,如市话和长途电 话技术、在线信息和即时消息、1 1 c e n t r e x h o s t e dp b x ( p r i v a t eb r a n c he x c h a n g e ) 、 语音短信、p u s h t o t a l k ( 按键通话) 、多媒体会议等等。独立软件供应商( i s v ) 正在开发新的开发工具,用来为运营商网络构建基于s 口的应用程序以及s i p 软 件。网络设备供应商正在开发支持s i p 信令和服务的硬件。现在,有众多i p 电 话、用户代理、网络代理服务器、v o 口网关、媒体服务器和应用服务器都在使用 2 s i p 协议栈研究与开发 s i p 。越来越多的竞争者正在借助前途光明的新服务进入s 口市场。迄今为止,3 g 界已经选择s i p 作为下一代移动网络的会话控制机制。m i c r o s o f t 已经选择s i p 作 为其实时通信策略,并在m i c r o s o f tx p 、p o c k e tp c 和m s n m e s s e n g e r 中进行了部 署。m i c r o s o f t 同时宣布c e n e t 的下一个版本将使用基于s i p 的v o i p 应用接口 层,并承诺向用户p c 提供基于s i p 的语音和视频呼叫。s i p 正在成为自h t y p 和 s m t p 以来最为重要的协议之一。 1 1 2s i p 协议栈的现状与发展 提出s i p 的初衷是为了管理多媒体会话。两个运用s i p 协议的终端进行对话, s i p 规定会话发起方要先向被叫方发送i n v i t e 消息,围绕这个i n v i t e 控制原语, 双方进行一系列原语交互的操作,最终建立会话,这个过程s i p 术语称之为事务。 s i p 协议规范就是诸多这样会话控制原语和事务的规定集合。相应的很多公司和 组织根据协议写出了s i p 协议实现( 一般称之为s i p 协议栈) ,并在此基础上实现 了具有各种功能的s i p 电话。其中最著名的实现称为o s i p 协议栈,它是一个c 写就的开源的实现,完全忠实于r f c 3 2 6 1 规范,结构简单小巧,因此应用起来成 本低,兼容性好。但在v o l p 应用方面,o s i p 协议栈存在一些先天上的缺陷,如 具体电话服务或功能没有实现,也不涉及到媒体方面的内容,这是因为s i p 协议 本来只是一种类似于h t t p 的基于文本交互的协议,是为了建立并管理各种媒体 流逻辑链路而产生的,并不规定各种具体的服务,且与媒体流的传递无关。于是 开发基于s i p 的v o l p 系统时,在应用o s i p 协议栈之外,还需要开发者增加各种 功能模块,如呼叫控制模块、媒体服务模块等,以形成符合自己需求的、面向特 定服务集合的协议栈f 1 0 1 。其中最典型的例子就是e x o s i p 协议栈,它在0 s 口协 议栈的基础上增加网络传输模块和对话管理模块,使开发端到端的网络对话程序 成为可能。 一 目前,人们正设法使s i p 运行环境下的电话功能向p b x 靠拢。由1 e t f 下属 的s i p 工作组领导,一些核心电话功能正在逐步定义完善,如多路在线呼叫、呼 叫等待,呼叫保持、呼叫转移以及多方通话等;一些管理功能,如多路电话同时 振铃、中途电话优先接入以及轻声通话( 仅让一方听见声音) 或对讲功能都在进 行标准化。同时还有话务员业务,如自动话务员、话务员控制台以及夜间服务功 能等。除这些核心p b x 功能外,s i p 工作组也在关注s i p 运行环境下的其它问题, 如n a t 和防火墙转换问题,分别形成文档r f c3 5 8 1 和r f c 3 4 8 9 ;认证问题在文 档r f c2 6 1 7 、3 2 6 1 及3 3 1 0 中进行了规范;此外还定义了信号保护功能,意在防 止用户窃听信息澍“j 。 可以看出,适应v o i p 的应用是s i p 协议的发展趋势,因此现有的s i p 协议栈 第一章绪论 3 必定会综合更多的v o i p 功能模块,向着高集成度、多模块化的方向发展。有鉴于 此,本论文选择现在流行的两个开源协议栈( o s i p 和e x o s i p ) 研究,并以此为 基础,提出多模块、层次清晰、具有电话功能的栈结构,并在实现了新栈的基础 上开发基于s i p 协议的客户代理( u s e r a g e n t ,u a ) ,然后利用现存的通信方案搭 建了一个v o 口原型系统,最后对此协议栈做出测试和评估,显示出了它相对于其 它s m 协议栈的优越性。 1 2 论文所做的主要工作 论文的背景是普罗通信公司的v o i p 系统f r e e p p 的研究项目,主要的研究工 作有: 1 研究了v o 口的核心协议s i p 以及各相关语音通信协议; 2 研究了两种主流s i p 协议栈的实现,分析了其优缺点: 3 提出了一个面向u a 的栈结构,该栈结合了o s i p 和e x o s i p 的长处,综 合并重新设计了二者的部分模块,另外引入了会话控制模块,这是对构建适合 v o 口应用的栈的一次探索。 4 在开发新的协议栈时引入一种新的可以提高网络性能的定时器管理机制一 一时间轮; 5 基于提出的栈结构,实现了一组s i p 电话客户端,并实现了和f r e e p p 服务 器的对接,从而建立了一个v o 口通信系统原型,验证了协议栈的性能和实用性。 1 3 论文章节安排 第一章介绍论文选题的背景和意义; 第二章论述基于s 口的通信系统架构和软件上的结构组成: 第三章分析研究o s i p 协议栈和e x o s 驴协议栈; 第四章参考e x o s 口栈的u a 结构,设计新的协议栈结构; 第五章介绍在开发协议栈中采用的一种新的定时器技术; 第六章组网测试,对开发的协议栈做一个总结。 第二章s i p 通信系统 5 第二章s i p 通信系统 2 。1s i p 协议框架 i n t e r n e t 的许多应用都需要建立和管理一个会话,会话在这里的含义是在参与 者之间的数据的交换。考虑到参与者的实际情况,这些应用的实现往往是很复杂 的:参与者可能是在代理间移动,他们可能有多个名字,他们中间的通信可能是 基于不同的媒介( 比如文本、多媒体、视频、音频等) - 有时候是多种媒介一 起交互。人们制定大量通信协议应用于各种不同的媒介,s i p 和这些协议一样, 也允许使用i n t e r n e l 终端( 用户代理) 来寻找参与者并且允许建立一个可共享的 会话。所不同的是,它独立运作于通信协议之下,并且不依赖于建立的会话类型。 为了能够精确地定位会话参与者,同时也为了其它目的,s i p 允许创建基础 的n e t w o r k h o s t ( 称为代理服务器) ,并且允许终端用户注册上去,发出会话邀请 或者发出其它请求。 s i p 是一个应用层的控制协议,可以用来建立、修改和终止多媒体会话( 或 者会议) ,例如i n t e r n e t 电话。s i p 也可以邀请参与者参加已经存在的会话,比如 多方会议,还可以在一个已经存在的会话中方便地增加或者删除某种通信媒介, 如语音编码方式。s i p 支持名字映射和重定向服务,这可以用来支持个人移动业 务一用户可以使用一个唯一的外部m 来表示自己的存在,而不用关联到实际 网络地址。本质上,s i p 提供以下功能1 1 2 l : 名字翻译和用户定位:无论被呼叫方在哪里,都确保呼叫达到被叫方;执行 任何描述信息到定位信息的映射;确保呼叫( 会话) 的本质细节被支持。 特征协商:它允许与呼叫有关的组( 这可以是多方呼叫) 在支持的特征上达 成一致( 注意:不是所有方都能够支持相同级别的特征) ,例如视频可以或不可以 被支持。 呼叫参与者管理:呼叫中参与者能够指引其它用户加入呼叫或取消到其它用 户的连接。此外,用户可以被转移或置为呼叫保持。 呼叫特征改变:用户应该能够改变呼叫过程中的呼叫特征。例如,一次呼叫 可以被设置为“v o i c e - o n l y ”,但是在呼叫过程中,用户还能开启视频功能,也就 是说一个加入呼叫的第三方为了加入该呼叫可以开启不同的特征。 s i p 不打算搭建一个层层耦合的通信系统。s i p 可以看作、b i p 系统的一个组 件,它可以用作其他i e t f 协议的一个部分,用来搭建完整的多媒体通信体系。 例如,这些架构将会包含:实时数据传输协议( i 盯p ) 用于传输实时的数据并且 提供服务质量( q u a l i t yo fs e r v i c e ,q o s ) 反馈,实时流协议( r s t p ) 用于控制流 6 s i p 协议栈研究与开发 媒体传输,媒体网关控制协议( m e d i ag a t e w a yc o n t r o l ,m e g a c o ) 用于控制到 公共电话交换网( p u b l i cs w i t c h e dt e l e p h o n en e t w o r k ,p s t n ) 的网关,还有会话 描述协议( s e s s i o nd e s c r i p t i o np r o t o c o l ,s d p ) 用于描述多媒体会话。因此,s i p 应该和其他的协议一起工作,才能提供完整的对终端用户的服务,尽管s i p 协议 的基本功能组件并不依赖于这些协议。 s i p 协议框架如图2 1 所示。 。- f 青令控制一 服务质量。 ,9 r 忡1 等 唧 l磷用层l 媒体编码 h 2 6 1 m p e g i l h 3 2 3 li s i p ll r t s pi l r s v il r t c p llr t p 二一t c p u d p i 传输层 li p v 4 , ,i p v 6l 网络屡 i 数据链路层 l 图2 1 i p 电话协议栈结构 该协议框架从纵向将协议分为两部分:核心层( k e r n e l ) 和应用领域 ( a p p l i c a t i o nd o m a i n ) 。核心层由物理层、链路层、网络层、传输层四部分组成, 应用领域则根据用途分为信令、质量控制、媒体传输。该框架为p s t n 和l p 网络 将自身服务引入对方网络提供了协议上的保证。 s i p 本身并不提供服务,但是s i p 定义了一些基本方法,可以用来实现不同 的服务。比如,s i p 定义了一个定位用户并发送一个封装好的对象到对方的当前 位置的基本方法,如果利用这个方法通过s d p 来传输描述当前会话的参数,则对 方的用户代理马上可以得到关于当前会话的参数:同样,如果可以把用户信息像 会话参数一样传递,就实现了一个简单的“名片服务”。这个简单的例子说明s i p 是一个基本方法集,可以在其上提供很多不同的服纠1 3 】。 s i p 协议本身并不提供会议控制服务,并且没有规定会议怎样管理,但可以 通过在s i p 上建立其他的会议控制协议来发起一个会议由于s i p 可以管理参与 会议的各方的会话,所以会议可以跨越异构的网络。 安全对于提供的服务来说特别重要。为了达到理想的安全程度,s i p 提供了 一套安全服务,包括防止拒绝服务( d e n i a lo fs e r v i c e ,d o s ) 攻击、认证服务( 用 第二章s i p 通信系统 7 户到用户或代理到用户) 、完整性保证、加密和隐私服务【1 4 1 1 1 5 1 。 2 2s i p 构成要素 s i p 中有两个要素:s i p 用户代理和s i p 网络服务器。用户代理是呼叫的终端 系统元素,而s i p 服务器是处理与多个呼叫相关联信令的网络设备。 用户代理本身具有u a c ( u s e r a g e n tc l i e n t 用户代理客户机) 和u a s ( u s e r a g e n t s e r v e r 用户代理服务器) 。客户机元素发起呼叫而服务器元素应答呼叫,这 允许点到点的呼叫通过c s ( c l i e n t s e r v e r ) 模式来完成。 s i p 网络服务器又有三种形式:s i p 代理服务器、s i p 注册服务器和s i p 重定 向服务器。 由于呼叫者未必知道被呼叫方的口地址或主机名,s i p 服务器的主要功能是 提供名字解析和用户定位。呼叫者可以获得被呼叫方电子邮件形式的s i p 地址或 电话号码,然后使用该信息,确定特定服务器来解析地址信息这可能涉及网 络中很多服务器。s i p 代理服务器接收请求,决定将这些请求传送到何处,并且 将它们传送到下一跳服务器。在网络中传输s i p 消息可以有多跳。 s l p 代理服务器又可以分为有状态和无状态代理服务器。有状态代理服务器 记住它接收的入请求、回送的响应和它转送的出请求;无状态代理服务器一旦转 送请求后就忘记所有的信息。这允许有状态代理服务器生成请求,以并行地尝试 多个可能的用户位置并且送回最好的响应。有状态代理服务器可能是离用户代理 最近的本地设备,它控制用户域,是应用服务的主要平台。无状态代理服务器反 应迅速,是s i p 系统结构的骨干。 注册服务器是完成用户代理注册脏销功能的逻辑实体,它接收其管辖范围内 的用户代理的注册请求,将用户代理的地址信息添加到定位服务器中,使得该用 户代理的地址可以被其他用户知晓。由于注册在s i p 中是一个重要服务,所以处 理r e g i s t e r 请求的服务器有一个专门的名字“r e g i s t r a r ”注册服务器。 重定向服务器接收请求,但不是将这些请求传递给下一服务器,而是向呼叫 者发送响应以指示被呼叫用户的地址。这使得呼叫者可以直接联系在下一服务器 上被呼叫方的地址。 2 3s i p 通信模型 从功能上看,s i p 系统可以分为两部分:用户应用终端和呼叫处理平台。用 户应用终端根据应用逻辑调用s i p 信令服务接口,通过s i p 协议向被呼叫方发出 呼叫请求或接收呼叫方的呼叫请求。呼叫处理平台用于处理用户注册、呼叫及定 位等请求。呼叫处理平台包括;用户和系统配置子系统、心跳服务子系统、s i p 8 s i p 协议栈研究与开发 代理服务子系统、注册和定向服务子系统。呼叫处理平台采用集群技术,为系统 提供可靠及可扩展的运算环境。 网管系统 型剑 一 lo 注册服务器|! 代理服务器i i 用户in 田厂 门研同 l 代理ii 代理li i 代理il 代理i 图2 2 s i p 系统通信模型 不考虑心跳服务器( 不属于s i p 协议范畴) ,s i p 网路简单模型如图2 2 所示。 这是一个最基本的,最小的s i p 网络构成,此最小单元系统有可扩展性强、可复 用性的特点1 1 6 1 : 1 可扩展性:由于地域的影响、管理上的需求及系统本身处理能力的问题, 系统可扩展性将直接影响系统的可用性。本系统的扩展性分为两种:单元内扩展 和单元间耦合。单元内扩展用于增加备份设备、增加管理级别。单元间耦合用于 增加部署范围,扩大管理区域。 2 可复用性:s i p 协议提出的用户代理、s i p 代理服务、重定向服务、注册服 务都是基于s i p 信令流的服务,而这些服务的区别主要在服务逻辑。本系统提供 了一套基于消息驱动的软件框架,开发人员只要根据服务逻辑,结合本框架,即 可快速开发基于s i p 协议的相关服务。 2 4 s i p 分层概念 s i p 是一个分层的协议,其操作可以由一组松耦合的不同层次的规定来描述。 协议分成不同层次来描述可以把相近功能的元素集中起来描述,能够更清晰的表 达协议的结构。但s i p 协议并没有规定一个具体实现。s i p 协议分层描述有一个 “包含”的概念,当提到某一要素“包含”某一层时,意思是此要素的行为不能 违背这一层的定义。不是s i p 的每个元素都一定包含某一层。此外,s i p 定义的 要素是逻辑上的,一个物理实体可以作为不同的逻辑元素。 s i p 协议的最底层是它的语义和编码层。编码方式是采用扩展的b n f ( b a c k u s n a u rf o r mg r a m m a r 范式) 。 第二章s i p 通信系统 9 第二层是传输层。它定义了一个客户端如何发送请求和接收应答,以及一个 服务器如何接收请求和发送应答。所有的s i p 要素都包含传输层。 第三层是事务层。事务是s i p 的基本组成部分。一个事务是客户发起的一个 请求,和所有服务器对此请求后续应答及客户端对这些应答的处理。事务层主要 处理请求和应答的匹配及应用层的消息重发和超时。任何一个u a c 完成的任务 都是由一系列事务构成的。u a 以及有状态的代理服务器都包含一个事务层,无 状态的代理服务器并不包含事务层。事务包含客户元素( 可以认为是一个客户事 务) 和服务器元素( 可以认为是一个服务器事务) ,其操作流程可以用有限状态机 来表达。 第四层是事务用户( t r a n s a c t i o nu s e r ,t u ) 。每一个s i p 实体,除了无状态 代理服务器,都是一个事务用户。当一个t u 希望发送请求时,它生成一个客户 机事务实例并且向它传递请求、目的m 地址和端口、用来发送请求的传输机制。 一个t u 生成客户机事务也能够删除它。当客户端取消一个事务时,它请求服务 器停止进一步的处理,将状态恢复到事务初始化之前,并且生成特定的错误响应 到该事务。这由c a n c e l 请求完成,它构成自己的事务,但涉及要取消的事务。 事务层处理是整个层次的核心( c o r e ) ,它的有限状态机驱动着所有s i p 信令 的交互。s i p 中事务逻辑上是以对话为驱动来处理的。网络通信的本质就是两个 网络端点之间的一段对话或多个端点之间的一次会议过程。对话就是指一个持续 一定时间的两个用户之间的端到端的s i p 关系,对话前、对话中、对话终止都会 产生许多事务。对话过程要求两个用户代理之问的信息是有序且被正确路由传输 的。在r f c 规范中,只有i n v i t e 请求可以用来建立对话,一个对话的产生由一 个对i n v i t e 请求的o k 响应确定。s 口中最重要的方法就是i n v i t e 方法,它可 以用来在不同的参与者中创建会话使用。一个会话由一组参与者及他们之间交流 的媒体流组成l 1 7 1 。 2 5 s i p 会话示例 s i p 协议栈研究与开发 本节通过简单的示例演示了s i p 协议的基本功能i l l :定位一个用户代理,发 出通信请求,然后通过协商会话参数建立会话,最后拆卸这个会话。同时本节还 结合示例说明了s i p 消息的基本格式。 砒l a n t a c o mb i l o x l c o m p 哆一一,p ! o 口c y , 、 ,、 a l i c e s 2 一一一一一一一一一一一一一一一一一一一一一,一一一一一一一一、b o b s 图2 3 s i p 会话示例 图2 3 表示一个典型的a l i c e 和b o b 两个用户问的s i p 消息交换的例子,每 一个消息采用字母“f ”和一个用来指向正文的一个数字做标记。在这个例子里, a i i c e 在她的p c 上使用一个s 口的应用程序( 比如说一个软的电话) ,呼叫b o b 在i n t e m e t 上的一个s i p 电话。这个例子也演示了两个s i p 代理之间,怎样为a l i c e 和b o b 建立会话连接。 a l i c e 通过b o b 的s i p 标志呼叫b o b ,这个s i p 标志是统一分配的资源标志 第二章s i p 通信系统 符( u n i f o r mr e s o u r c ei d e n t i f i e r ,u r j ) 称作s i pu r i 。s i pu r i 它很像一个e m a i l 地址,典型的s i pu r i 包括一个用户名和一个主机名。在这个范例中,s i pu r i 是s i p :b o b b i l o x i t o m ,“b f l o x i c o i n ”是b o b 的s i p 服务提供商。a l i c e 有一个s i p u r hs i p :a f i c e a f l a n t a o d m 。a l i c e 可以输入b o b 的u r l ,或者直接在地址本的一 个超级链接上点击一下b o b 的u r l 。s i p 也提供加密u r l ,称作s i p su r i 。例如: s i p s :b o b b i l o x i c o m 。基于s i p su r i 的通话可以保证这个通话是安全的,呼叫者 和被叫的所有的s i p 消息是加密传输的( 通过传输层安全策略1 h n s p o r t l a y e r s e c u r i t y ,t l s ) 。在t l s 中,请求是通过加密方式传输给被叫方,但是这个加密 机制是基于被叫方宿主服务器的实现。 s i p 是基于一个类似h t i t 协议的请求应答的通信模式。每一次通信都由某 个请求开始,对这个请求有且至少有一个应答。a l i c e 的s o f tp h o n e 发送一个含有 b o b 的s i pu r j 的i n v i t e 请求。i n v i t e 是一个s i p 请求,表示请求方( a l i c e ) 希望服务方( b o b ) 应答。i n v i t e 请求包含一系列的包头域( h e a d e rf i e l d s ) 。包 头中包含很多属性并且包含了传输消息的附加信息。在i n v i t e 中有如下的字段: 呼叫的唯一标志,被叫地址,呼叫方地址,a l i c e 和b o b 建立会话的类型。在省 略s d p 的情况下,i n v i t e 请求( 图2 3 中的f 1 ) 如下所示: i n v i t e s i p :b o b b i l o x i c o ms i p 2 0 v i a :s i p 2 o u d pp e 3 3 a t l a n t a c o m ;b r a n c h = z 9 h g 4 b k l a s d s m a x f o r w a r d s :7 0 t o :b o b f r o m :a l i c e ;t a g = 1 9 2 8 3 0 1 7 7 4 c a l l i d :a 8 4 6 4 c 7 6 e 6 6 7 1 0 p c 3 3 a t l a n t a c o m c s e q :3 1 4 1 5 9i n v i t e c o n t a c t : c o n t e n t - t y p e :a p p l i c a t i o n s d p c o n t e n t - l e n g t h :1 4 2 ( s d p ) 在文本消息的第一行,包含了请求的类型( i n v i t e ) 。在这行之后的是这个 请求的头字段。此例中列举了一个最小头字段集合。 v i a 域包含了呼叫方a l i c e 接收应答的主机“p c 3 3 a t l a n t a c o m ”,并包含了一 个分支参数b r a n c 缸来标志这个会话事务。 t o 域包含被叫方的显示姓名- b o b ,及其s i pu r i ( 或s i p su r i ) s i p :b o b b i l o x i 伽,请求将首先传输到这个u r i 中。显示姓名( d i s p l a yn a m e s ) 在砌c 2 8 2 2 中定义 f r o m 域包含呼叫方的显示姓名。a 1 泐”及其s i pu r i ( s i p :a l i c e a t l a n t a c o m ) 。 1 2 s i p 协议栈研究与开发 这里的呼叫方指的是请求的原始发起者。这个域还包含了一个t a g 参数,为一随 机字符串1 9 2 8 3 0 1 7 7 4 ,用来标志会话。 c a l li d 域包含一个标志此呼叫全局唯一标志,通过随机字串和s o f tp h o n e 的 主机名或i p 地址混合生成。通过t o ,f r o m 的t a g 域和c a l l i d 完整确立了a l i c e 和b o b 之间的端到端的s i p 关系,并且表明了这是一个对话性质的关系。 c s e q ( c o m m a n ds e q u e n c e ) 域包含了一个整数和一个请求名字。这个整数是 顺序递增的,对话中每发起个新的请求都会引起这个数字增加。 c o n t a c t 域包含一个s i p 或s i p su r i ,用来表示访问a i i c e 的直接方式,通常 由用户名和一个f q d n ( f u l l yq u a l i f i e dd o m a i nn a m e 主机全域名) 组成。但是 很多终端用户没有注册域名,所以往往直接用口地址来代替f q d n 。v i a 域表示 此请求发送到哪及在哪接收应答,而c o n t a c t 域表示后续请求发送到哪里。 m a x - f o r w a r d s 域表示最大转发数:通信过程中报文能够经过的最多网络节点 数。它由一个整数组成,每转发一次,整数减1 。 c o n t e n t t y p e 域包含了消息正文的描述( 消息正文在本例中没有列出) 。 c o n t e n t 1 e n g t h 域包含消息正文的长度( 字节数) 。 会话的细节比如媒体类型、编码格式或采样速率等等,没有通过s w 来描述。 它们可以通过其他定义的协议在s i p 的消息正文中进行描述。有一种会话描述协 议是s d p ,这个s d p 消息通过s i p 的消息正文传送,就像通过e m a i l 发送附件 一样,或者说像通过h t f p 消息传输网页一样。 由于s o f tp h o n e 并不知道b o b 或者b o b 的s i p 服务器b i l o x i c o m 在哪里,所 以s o f tp h o n e 发送i n v i t e 请求到a l i c c 的s i p 服务器a t l a n t a c o m 。这个a t l a n t a o d m s i p 服务器应该已经在a l i o c 的s o f tp h o n e 中配置了,或者可以通过d h c p 获得。 a t l a n t a t o m 服务器是一台s i p 代理服务器。代理服务器接收s i p 请求并且转 发这些请求。a t l a n t a o d m 服务器接收到i n v i t e 请求,并回送一个1 0 0 ( 研i i i g ) 应答给a l i c e 。1 0 0 ( t r y i n g ) 应答表示i n v i t e 请求已经收到,并且代理服务器正 试图转发i n v i t e 请求到目标地址。 s i p 应答头部用一个三位数的数字和紧随其后的描述字符串表示对请求的处 理情况。s i p 应答同样包含t o 、f r o m 、c a l l i d 、c s e q 和在v i a 中的分支参数,这 个参数使得a l i c e 的s o f tp h o n e 可以把请求和应答关联起来。a t l a n t a o d m 代理服务 器收到i n v n e 请求之后,就查找( 通过d n s 服务) b i l o x i c o m 的地址,然后转 发i n v i t e 请求到b i l o x i c o i n 或者能到达b i l o x i c o i n 的代理服务器。在转发请求之 前,a t l a n t a c o m 代理服务器会在v i a 域上增加自己的地址。b i l o x i t o m 代理服务器 收到这个i n v i t e 请求并且返回一个1 0 0 ( t r y i n g ) 应答给a t l a n t a t o m 代理服务器, 标志着它已经收到这个请求并且正在处理这个请求。这个代理服务器通过查询数 据库通常叫做地址服务,得到b o b 的当前的坤地址。b i l o x i c o m 代理服务增 第二章s i p 通信系统 加另一段包含自己地址的v i a 域并且将它发送到b o b 的s i p 电话。 b o b 的s i p 电话接收到i n v i t e 请求并且提醒b o b 有一个从a l i c e 的呼入, b o b 可以决定是否响应这个呼叫。b o b 的s i p 电话发送个1 8 0 ( r i n g i n g ) 回应, 这个回应通过两个代理服务器原路返回给a l i c e 。每一个代理服务器通过v i a 域决 定该把这个应答发送到哪里,并且在发送之前把自己的地址从包头上拿走。这样 1 8 0 ( r i n g i n g ) 响应可以简单返回给发起者而不需要通过d n s 定位服务查找发起 者在哪里,并且不需要在代理服务器保留状态:同时,每一个转发矾i e 的代 理也可以得到i n v i t e 的每一个应答,这个特性也非常有用。当a l i c e 的s o f tp h o n e 收到1 8 0 ( r i n g i n g ) 应答的时候,它提示i o e 一可能是通过一个回铃音或屏幕 上的一个消息提示。 在此例中,b o b 决定响应这个呼叫。当他拿起电话,他的s i p 电话发送2 0 0 ( 0 k ) 回应给发送者,表示这个电话已经接起来了。这个2 0 0 ( o k ) 包含了一 个消息体,这个消息体包含s d p 媒体描述,这个媒体描述包含b o b 希望和a l i c e 建立何种媒体连接。同样,s d p 消息也是两段交换:a l i c e 发送一个给b o b ,b o b 发送一个回给a l i c e 。这个两段交换提供基本的兼容性协商( 协商媒体格式、编解 码方法、发送速率等等) ,并且基于简单的s d p 提出应答交换模型。如果b o b 不 想响应这个呼叫或者正在响应别的呼叫,一个表示出错的响应消息会代替正常的 2 0 0 ( o k ) 回送出去,这样,就不会有连接建立。b o b 发出的2 0 0 ( 0 k ) ( 图2 3 的f 9 消息) 可以如下: s 口2 0 2 0 0 0 k v i a :s i p 2 0 a j d ps e r v e r l 0 b i l o x i c o m ;b r a n c h = z g h g 4 b k r f f 6 h ;r e c e i v e d = 1 9 2 0 2 3 v i a :s i p 2 o a j d pb t s q u e a t l a n t a c o m ;b r a n e h = z 9 h g 4 b k v 7 s d f ;r e c e i v e d = 1 9 2 0 2 2 v i a :s i p 2 0 a j d pp c 3 3 ,a t l a n t a c o m ;b r a n c h = z g h g 4 b k l a s d s ;r e c e i v e d = 1 9 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论