基于SDL的SIP协议设计重定向服务器毕业设计论文.docx
- 文档编号:6978455
- 上传时间:2023-01-14
- 格式:DOCX
- 页数:27
- 大小:401.67KB
基于SDL的SIP协议设计重定向服务器毕业设计论文.docx
《基于SDL的SIP协议设计重定向服务器毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于SDL的SIP协议设计重定向服务器毕业设计论文.docx(27页珍藏版)》请在冰豆网上搜索。
基于SDL的SIP协议设计重定向服务器毕业设计论文
《通信软件与协议工程》课程作业
基于SDL的SIP协议
设计(重定向服务器)
学院:
计算机学院
专业:
通信与信息系统
年级:
2012级
2013年6月26日
第一章绪论
1.1研究的背景和意义
SDL(specificationanddescriptionlanguage)是一种基于扩展有限状态机和抽象数据类型的形式化描述语言,定义在ITU的建议Z.100中。
SDL自身的特性非常适合通信协议的形式化描述和实现。
现在越来越多的电信设备开发商开始使用SDL进行协议软件开发。
设计模式是成功的软件实践经验和设计思想的总结。
在通信协议软件中,这种可重用的开发经验和设计思想的特点体现的尤为明显。
为了减少通信协议的开发成本,降低出错率,提高开发效率和协议软件的质量,SDL模式技术应运而生。
SIP是由IEFT(InternetEngineeringTaskForce)组织于1999年提出的多媒体通信框架的应用层信令协议,现在的版本是2001年提出的RFC3261,它可以用来在IP网络上建立一个多媒体会话,在需要的时候会改变和结束这个会话。
SIP协议的设计思想和SMTP以及HTTP一样,都是基于互联网,采用的编码方式是基于比较简单的文本方式,协议简洁高效并易于扩展,很适合基于Internet的传输,是未来多媒体通信系统的主流发展方向。
SIP用来在因特网或者任意IP网络上创建、改变和结束一个多媒体会话,会话参与者可以只有两个,也可以是很多个,也就是说可以用来创建一个会议。
SIP协议在下一代网络中有很重要的地位,SIP能够连接使用任何IP网络(有线LAN和WAN、公共Internet骨干网、移动2.5G、3G和Wi-Fi)和任何IP设备(电话、PC、PDA、移动手持设备)的用户,而传统的电话的通信范围和通信方式太窄,利用SIP,可以做到很多以前做不到的应用,这些应用将来会很有市场,而且会为众多企业和运营商提供很多商机,应用前景非常好。
基于SIP的应用丰富多样,这些应用都离不开SIP服务器的支持,所以研究SIP服务器如代理服务器、重定向服务器等就很有必要,也很有意义。
1.2课题研究现状
SIP协议最早是在1999年出现的。
当时IETF(Internet工程任务组)在IETF上提出了这一概念,当时出来了第一个版本RFC2543,最新的版本是在2001年出来的,即RFC3261,SIP的理论基础一旦建立,就相继出现看众多基于SIP协议的服务和产品。
国内对于SIP的研究相对少些,但也有一些公司投入了力量,如华为、中兴等。
他们在研究SIP的基础上也推出了一些应用和产品,产品当然包括SIP服务器,还有SIP终端之类的。
但是总体来说,国内对SIP的研究和产品以及应用不多,就算有产品和应用,也几乎没有多少市场份额。
况且SIP协议也会根据技术发展和人们的需求做一些补充和完善,所以对SIP协议、服务器和SIP用户终端及其他新兴应用的研究很有必要和意义,很多的技术创新会在这过程中产生。
第二章SIP协议综述
2.1SIP协议简介
2.1.1SIP协议的历史
SIP(SessionInitiationProtocol)会话初始协议,是由IEFT(InternetEngineeringTaskForce:
Internet工程任务组)下的MMUSIC(MultipartyMultimediaSessionControl:
多方多媒体会话控制工作组)提出来的。
SIPv1是SIP协议的第一个版本,不过这里的SIP还不是人们所熟知的会话初始协议,而它的含义是会话邀请协议(SessionInvitationProtocol)。
SIPv1于1996年2月22日第36届IETF会议上,作为一个Internet草案提交给IETF。
不过SIPv1已经和后来的SIP一样使用了会话描述协议(SDP,SessionDescriptionProtocol),SIPv1使用的传输协议是基于UDP的,编码方式已经是基于文本的了,SIPv1协议的功能相对简单,只是用来处理会话的建立。
同是在1996年2月22日,简单会议邀请协议(SCIP,SimpleConferenceInvitationProtocol)的草案也提交给IETF。
SCIP和SIPv1不同,SIPv1使用UDP,SCIP则使用TCP协议进行传输,SCIP的信令比SIPv1持续时间长,会持续到会话建立以后。
在用户标识符方面,SCIP使用的是E-mail地址,采用的是超文本传输协议。
在1996年12月的IETF第37届大会上,SIPv2作为Internet的草案提交给IETF。
这时的SIP含义相比较SIPv1来说已经发生了变化,它不在是会话邀请协议(SessionInvitationProtocol),而是由SIPv1和SCIP合并而成,是人们所熟知的会话初始协议(SessionInitiationProtocol)。
因为是两个协议合并而来的,所以这个新的SIP包含了SIPv1和SCIP这两个协议的特点,即,基于HTTP,使用的传输协议既可以是TCP也可以是UDP,它同时也是基于文本的。
IETF在1999年2月发布了SIP的提议标准,这个提议标准即RFC2543规范。
IETF在2001年又发布了新的规范,即RFC3261,并在以后不断地进行了完善。
RFC3261中对多媒体会话过程是如何建立、如何修改和如何结束等进行了定义。
它定义了用户间多媒体会话过程的建立、修改和终止。
SIP协议的设计思想和SMTP以及HTTP一样,都是基于互联网,采用的编码方式是基于比较简单的文本方式,协议简洁高效并易于扩展,很适合基于Internet的传输,是未来多媒体通信系统的主流发展方向。
2.1.2SIP协议的特点
1.基于Internet的设计原则,易于业务整合。
在OSI七层结构体系中,SIP位于应用层,这使得SIP协议可以独立于底层的协议,这样在建立、调整和结束一个会话的时候,它就可以和底层相互独立,底层只需要提供相应的接口和协议规范即可。
同时由于SIP协议基于Internet的设计原则,这使得很多也是基于Internet的协议可以和SIP很方便的互通。
SIP消息的语法衍生于HTTP,所以HTTP中的很多消息和语法可以在SIP中重用,所以容易把相关业务整合起来。
2.独立的传输层
SIP协议处于应用层,独立于底层协议,自然而然的也独立于传输层,对传输层没有多少限制。
3.第三方控制机制
第三方控制是指自己本身并不参与会话,但是会有一些诸如建立呼叫的功能,SIP协议支持第三方的控制机制。
4.很容易开发多媒体业务
以前的固定电话只是单一的语音呼叫,但SIP不止如此,它管理的对象是会话,这个会话当然包括语音在内,但它还有新的内容在里面。
如它可以包括数据、图像、视频流等业务,也就是说,使用SIP很容易开发其他通信业务。
5.移动性、兼容性和扩展性
移动性体现在SIP定义了重定向服务器,这个服务器是SIP服务器的重要内容,它一般使用统一资源定位器(URL)的方式来标识自己,有了重定向服务器,用户就可以得知目的用户的新位置。
SIP还具有向上兼容的特性,这主要体现在SIP的忽略机制上。
SIP提供了很多功能和消息标题头,但并不是每个代理服务器或用户都能完全用到,用不到的功能将会被忽略掉。
SIP的强大之处还在于SIP有很多扩展功能,这些功能随着一些新的想法和应用还在不断扩展。
6.协议格式清楚,维护方便
SIP协议基于比较简单的文本格式,这样下来协议的可读性很强,在出现错误时,可以
很方便地对错误进行分析,维护起来比较方便。
2.1.3SIP协议的功能
1.用户定位
用户定位的完成主要是通过SIP协议的请求和应答消息来实现的。
请求可以有INVITE请求,也可以是ACK等其他请求,当传送的应答状态码为“200OK”时,就可以根据以上这些消息来确定哪些用户代理或终端正在通信。
SIP协议也支持URL,SIP重定向服务器还支持终端用户的重定向功能。
另外,其他的一些定位服务器也可以和SIP协议一起来用。
2.会话能力的协商
SIP请求消息中有一个OPTION(可选项),它的状态码是600-699。
OPTION为SIP会话的双方提供了可供他们选择的参数、他们想要了解的会话属性来进行会话的协商。
3.会话管理
这是SIP协议中很重要的一个功能。
任何一个SIP的终端用户都可以通过会话管理功能发起一个呼叫,同样的话,如果他想把一些新的会话参与者加入会话或者结束这个会话,也是可以的。
4.呼叫建立
一般是SIP代理服务器通过100-199的状态码来完成振铃,振铃也就是“Ringing”,这只是一个临时应答,但是这个临时应答却起到了连接主叫和被叫以及各种会话参数建立的功能。
5.呼叫处理
有时候被叫方并不在你所知道的那个位置,或是他现在忙,这时你要通过SIP的重定向功能来找到被叫方的新位置,用通过包含有Contact头域的BYE请求消息来进行呼叫转移。
2.2SIP实体
C/S模型,是互联网中经常采用的一种模型,也就是客户端/服务器模型(Client/Server),SIP基于因特网,自然也采用了这种结构。
SIP的实体有两种,即SIP用户代理(UserAgent,UA)和SIP服务器(SIPServer)。
用户代理通常是用于发送和接收SIP的请求和应答消息,SIP电话是SIP用户代理的一个比较常见的形式。
一个UA包含一个UAC(UserAgentClient,用户代理客户端)和一个UAS(UserAgentServer,用户代理服务器)。
服务器是用于对客户端提出的请求进行处理并提供应答。
SIP服务器可以分为代理服务器(ProxyServer)、重定向服务器(RedirectionServer)和注册服务器(Registrar),另外还有一个不属于SIP服务器的范围,但也很重要的定位服务器。
2.2.1用户代理
SIP用户代理也就是SIP的端系统,常见的SIP用户代理有多媒体手持设备、各种SIP电话(包括硬件或软件实现的SIP话机)、具有能创建和管理SIP功能的移动电话、PC等。
用户代理有两种类型,一种是用户代理客户端(简称UAC),另外一种就是用户代理服务器(简称UAS)。
这两种类型在一个呼叫中起到不同的作用,分居于服务器的两端,UAC发出呼叫的消息,UAS用于接收呼叫的应答消息。
2.2.2重定向服务器
重定向服务器用来对户代理进行重新定位,产生的应答码介于300-399之间,在所请求的用户地址改变以后,它重定向到用户的新的地址,并通过URL的方式把这个新地址放在应答消息3xx中返回出去。
代理服务器可以发送SIP请求消息,但是重定向服务器不会,而且重定向服务器也不能接受通话请求。
一般一个好的SIP服务器会包括代理服务器、重定向服务器和注册服务器,这几个服务器可以放到一个平台上。
而在通常情况下,通常说的术语SIP服务器是一般是指代理服务器,但有时也可以指重定向服务器,这并没有按照它们基本行为的不同来区分。
在实际的应用中,同一个SIP服务器根据具体情形,有时可以表现出重定向服务器的功能,但可能又同时作为代理服务器来用。
举个例子,某个人想要重定向所有会话邀请,一个SIP服务器就可以帮他实现这个要求,同时,这个服务器又可以使用代理功能去处理其他的请求。
2.2.3注册服务器
SIP注册服务器是接收注册(Register)请求的服务器,用户向注册服务器发送了一个注册请求,注册服务器收到后,接收请求消息,注册成功后返回一个最终应答“200OK”。
同时它会把这个新注册的用户信息送到定位服务器中,以便日后需要的时候可以很方便地查找用户的位置信息。
注册服务器从某种意义上说也可以是一个数据库,所有用户代理的位置信息都放在其中。
2.2.4定位服务器
在SIP的实体中并没有定位服务器,而且SIP服务器和定位服务器之间也不像SIP实体之间那样使用SIP协议,但它却是SIP体系结构中很重要的一部分。
注册服务器把新注册的用户代理的信息传到定位服务器中,定位服务器也可以和本地的数据库相连,用来存储这些用户的注册信息,包括位置、IP地址等信息,为用户提供定位的功能。
一些定位服务器使用的是轻量级目录访问协议(LightweightDirectoryAccessProtocol,LDPA)或MySQL和SIP服务器进行通信。
第三章SIP工作流程及注册服务器配置和实现方法
3.1SIP工作流程
SIP定义了注册/注销、呼叫、重定向以及能力查询四种工作过程,下面结合图例说明几种典型的呼叫处理。
3.1.1注册目的
注册就是将自己的IP登记给注册服务器的过程,以便其他用户通过一个称为统一资源指标符URL的地址来访问到。
URL地址可在该用户域的SIP代理中解析。
每个用户在启动时,都要到注册服务器注册当前的SIPURL和IP地址的绑定,服务器最后把这些信息保存在位置服务器中。
用户发送REGISTER请求向服务器通知他们当前所处的位置,这样,所有进入以SIP格式所表示的目的地址的请求都被代理处理,或重定向到用户当前所在的IP地址。
注册过程为后续会话连接做准备。
3.1.2注册过程
用户代理要通过SIP进行通信,首先要在相应的服务器上登记注册,如图3-1所示:
图3-1SIP注册流程
注册的具体流程如下:
1)用户代理Alice发送REGISTER请求给注册服务器,请求登记注册;
2)注册服务器通过在数据库中查询发现该用户不合法,返回一个401错误(Unauthorized)给Alice,该错误响应中包含了令牌信息,用于用户再次注册的安全验证;
3)Alice再次发出注册请求,这时用户的账号密码等已被步骤2中的令牌作了加密处理;
4)注册服务器再次收到REGISTER请求,通过对用户的加密信息进行解密后再到数据库中进行合法验证,若Alice的信息合法,则登记入库,注册成功。
另外,注册服务器会返回一个200OK响应(成功响应)给用户代理Alice。
3.1.3通过重定向服务器的呼叫
图3-2给出了两个UA之间通过重定向服务器进行呼叫的具体流程:
图3-2通过重定向服务呼叫的具体流程
具体的呼叫流程如下:
1)用户代理Alice发出会话邀请消息INVITE;
2)服务器收到请求后查询被叫方Bob的地址,然后发送302响应(MovedTemporarily)给Alice的代理,告知Bob的地址信息;
3)Alice的代理收到响应后发送ACK向重定向服务器证实收到的响应消息;
4)Alice依照302的Contact中指明的地址直接发送INVITE消息给代理Bob;
5)Bob端振铃的同时发送180响应给Alice;
6)Bob用户摘机,发送200OK响应给Alice;
7)Alice收到响应后返回ACK进行确认;
8)Alice和Bob会话连接成功,两用户之间可以进行媒体流的传输;
9)Bob欲结束通话,于是发出BYE请求,提出终止通话的请求;
10)Alice同意结束会话,返回一个200响应,此后通话结束。
3.2注册服务器配置及实现方式
3.2.1注册服务器
SIP提供了一个搜索机制,如果一个用户希望建立和其他用户的会话,SIP必须查找能够找到对方用户正在使用的当前主机(hosts)。
这个搜索机制经常被SIP网络基本元素使用,比如proxy服务器,重定向服务器等等。
他们在接收、以及响应一个请求的时候,会基于这个用户的位置信息来判定这个消息应该发送到哪里。
要实现这个,SIP网络部件考虑了一个抽象的服务:
位置服务;位置服务是通过对特定地区提供地址绑定来实现的。
一个proxy会从把输入的URI转换到用户实际位置的位置服务中得到最终用户的位置。
注册服务为特定地区的位置服务创建绑定关系,这个绑定关系是用来建立包含一个或者多个联系地址的address-of-recordURI。
因而,当那个地区的proxy接收到一个请求,这个请求的Request-URI和address-of-record的记录匹配,那么这个proxy会转发请求到这个address-of-record中登记的联系地址中去。
3.2.2注册服务器实现方式
注册服务是为了实现位置的绑定,而这种绑定的目的在于最大可能的搜索到目标地址,从而成功转发消息。
怎么样才能最大可能的完成搜索呢?
这个就要求登记服务所覆盖的区域和URI中的address-of-record所覆盖的区域相同。
注册服务器通过两种不同的注册方式来实现,用户注册方式和服务器注册方式。
3.2.3用户注册方式
只有当对那个address-of-record的请求会被路由到这个区域的时候,登记这个address-of-record到这个区域的位置服务才是有意义的。
因为每个proxy主要处理本域的UA,所以,发往这些UA的消息基本上都是要经过他的proxy。
这就要求UA必须向负责他的域的注册服务器进行注册。
UA通过发送一个register消息到注册服务器进行注册,注册信息存储在位置服务。
凡是发送到UA的proxy的消息,通过查询UA的注册信息得到UA地址,然后转发消息。
如图3-3所示:
图3-3用户注册
第四章重定向服务器的设计以及在SDL上的实现
4.1重定向服务器概述
代理服务器负责请求消息的路由。
某些体系结构下可能需要降低它们的负荷,并提高信令传输通道的鲁棒性,这时可依靠请求重定向来达到目的。
重定向即服务器用响应消息将某一请求的路由信息返回给客户端,从而使服务器既起到了帮助选路的功能,又可以不必处理由该请求所导致的更多消息往来"当请求的发起者收到重定向响应后,它将基于收到的URL发送新的请求。
重定向通过把URL信息从网络的核心传递到边缘而使网络获得了相当大的扩展升级能力。
重定向服务器逻辑上由一个服务器端事务端的事务层和一个能够访问某种定位服务的事务用户组成。
定位服务器实质上是一个数据库,它包含单个URL到一个或者多个联系地址之间的映射,通过这些联系地址就能找到URL所对应的用户或实体。
重定向服务器自己不发送任何SIP请求。
在收到除CANCEL以外的请求时,重定向服务器可以拒绝它,或者通过定位服务获得一个可选地址列表并返回一个3XX最终响应。
对格式正确的CANCEL请求,重定向应返回2XX最终响应。
该响应将结束被取消请求的SIP事务。
重定向服务器维护整个SIP事务的状态。
客户端检测重定向服务器之间发生的转发循环。
当重定向服务器返回某个请求的3XX响应时,它在Contact头字段中装入一个地址列表(含一个或多个可选地址)。
Contact头字段值中还可能提供“expires”参数,以指名Contact数据的有效期。
Contact头字段包含了可供发送的URL,这些URL给出了新的目标位置或新的用户名,或者只是简单地指定了其它的传输参数。
301(永久移动)或302(临时移动)响应可能会给出与初始请求不一样的目标位置和用户名,同时又指定另外的传输参数,比如一个不同的服务器地址或多播地址,或者将SIP消息的传输方式从UDP改为TCP或者从TCP改为UDP,等等。
然而,重定向服务器决不能将请求重定向到一个与请求的Request-URI相同的URL地址。
如果重定向的目的地URL所指的并非当前重定向服务器,它可能将请求向重定向目的地转发,或用一个404(未找到)响应来拒绝请求。
重定向服务可以归结成为访问一个绝对位置服务来构建新的目的地址的形式,该服务是从SIP注册服务器创建的位置服务获得信息。
通过Request-URI访问注册服务器中的注册信息,找到Request-URI对应的Contact列表,把Contact列表中的地址作为目标地址集合。
在Request-URI的区域并非本proxy负责的区域的情况下,由于proxy之间存在注册关系,仍然可以尝试重定向服务,如果失败才把Request-URI放在目标集合中,并且作为唯一的一个目标URI。
在Request-URI的区域是本proxy负责的区域的情况下,如果Request-URI没有提供足够的信息来让proxy产生目的地集和,它应当返回一个485(Ambiguous)应答。
这个应答应当包含一个Contact头域,包含一些应当尝试的新位置。
重定向服务流程如图4-1所示。
图4-1重定向服务流程
4.2重定向服务器软件设计
4.2.1OSIP开发库
OSIP是按照RFC3261(SIP)和RFC2327(SDP)标准,并使用标准c编写的一个SIP协议栈。
它是一个公开源码的免费协议栈。
OSIP协议栈结构简单而小巧,它并不提供高层的SIP会话控制的API,它主要提供一些解析SIP/SDP消息的API和事务处理的状态机。
OSIP的优点:
·OSIP没有给开发者限定在特定的某个执行模式下,能够使开发者选定一个比较适合自己的模式;
·OSIP的各个模块是相对清晰、独立的,因而去掉某个模块时也比较容易;
·OSIP的解析器提供了较为完善的API,包含了消息的构造、修改和产生等;
OSIP的缺点:
·OSIP目前版本源代码结构、定义比较混乱,并且缺乏文档,阅读比较困难;该问题将在OSIP2中得到改善;
·OSIP不提供任何快速产生请求消息和响应消息的方法,所有请求消息和响应消息的形成必须调用一组sipmessageAPI来手动组装完成;
·由于OSIP结构简单,外围相关模块需要用户自己开发,如SIP消息的接收和发送,RTP/RTCP的语音数据的处理等.
4.3.2OSIP结构分析
OSIP主要包括三大部分的内容:
状态机模块(FiniteStateMachines)、解析器模块和工具模块。
其结构如图4-2图所示。
图4-2SIP结构图
4.2.2SIP消息解析模块
解析器模块主要有SIP解析器,URL解析器和SDP解析器三种。
SIP解析器可以处理SIP起始行,SIP头域(如TO、FROM、CSEQ、VIA等),可以处理SIP消息体和状态码,其流程如图4-3所示。
图4-3消息解析
4.3SIP重定向服务器在sdl_ttcn上的仿真实现
4.3.1重定向呼叫
SIP系统支持重定向,目前对重定向的使用主要包括完成呼叫转移业务和完成路由寻址或载荷分担应用两个方面。
对于利用重定向完成路由寻址或载荷分担一般应用于组网环境下。
此时网络中存在类似于路由查询的服务器,当此服务器接收到请求后,返回路由地址,从而完成路由查询或载荷分担功能。
对于完成呼叫转移类业务,一般是用户的具体业务需求使用重定向功能。
例如,用户可以定义在某种条件下(对于某一时刻或某人的呼叫)将呼叫路由到其他路径。
这种业务类似于目前我们所使用的呼叫转移业务。
该业务可以由网络启动也可以由用户终端启动。
用户终端启动重定向的呼叫模型如图4-4所示.该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 SDL SIP 协议 设计 定向 服务器 毕业设计 论文