1、通信软件与协议工程课程作业基于SDL的SIP协议设计(重定向服务器)学 院: 计算机学院 专 业: 通信与信息系统 年 级: 2012级 学 号: 2012021495 学生姓名: 尹恒 小组成员:尹恒,曹嵘晖,娄洹熙 指导教师: 刘紫燕 2013 年 6 月 26日 第 22 页 目 录第一章绪 论31.1研究的背景和意义31.2课题研究现状3第二章SIP 协议综述42.1SIP协议简介42.1.1 SIP协议的历史42.1.2 SIP协议的特点42.1.3 SIP协议的功能52.2 SIP 实体62.2.1 用户代理62.2.2 重定向服务器62.2.3 注册服务器72.2.4 定位服务器
2、7第三章SIP工作流程及注册服务器配置和实现方法83.1 SIP 工作流程83.1.2 注册过程83.2 注册服务器配置及实现方式103.2.1注册服务器103.2.2 注册服务器实现方式103.2.3 用户注册方式10第四章重定向服务器的设计以及在SDL上的实现114.1 重定向服务器概述114.2重定向服务器软件设计124.2.1 OSIP开发库124.2.2 SIP消息解析模块134.3 SIP重定向服务器在sdl_ttcn上的仿真实现144.3.1 重定向呼叫144.3.2 SIP重定向服务器模式在SDL上的各类截图15第五章总结与展望215.1 总结215.2 技术展望215.2.1
3、 办公OA系统215.2.2 呼叫中心系统215.2.3重定向攻击防范21参 考 文 献23致 谢24第一章 绪 论1.1 研究的背景和意义SDL(specification and description language)是一种基于扩展有限状态机和抽象数据类型的形式化描述语言,定义在ITU的建议Z.100中。SDL自身的特性非常适合通信协议的形式化描述和实现。现在越来越多的电信设备开发商开始使用SDL 进行协议软件开发。设计模式是成功的软件实践经验和设计思想的总结。在通信协议软件中,这种可重用的开发经验和设计思想的特点体现的尤为明显。为了减少通信协议的开发成本,降低出错率,提高开发效率和协
4、议软件的质量,SDL模式技术应运而生。SIP是由IEFT(Internet Engineering Task Force)组织于1999年提出的多媒体通信框架的应用层信令协议,现在的版本是2001年提出的RFC3261,它可以用来在IP网络上建立一个多媒体会话,在需要的时候会改变和结束这个会话。SIP协议的设计思想和SMTP以及HTTP一样,都是基于互联网,采用的编码方式是基于比较简单的文本方式,协议简洁高效并易于扩展,很适合基于Internet的传输,是未来多媒体通信系统的主流发展方向。SIP用来在因特网或者任意IP网络上创建、改变和结束一个多媒体会话,会话参与者可以只有两个,也可以是很多个
5、,也就是说可以用来创建一个会议。SIP协议在下一代网络中有很重要的地位,SIP 能够连接使用任何IP网络(有线 LAN 和 WAN、公共 Internet 骨干网、移动 2.5G、3G 和Wi-Fi)和任何IP设备(电话、PC、PDA、移动手持设备)的用户,而传统的电话的通信范围和通信方式太窄,利用SIP,可以做到很多以前做不到的应用,这些应用将来会很有市场,而且会为众多企业和运营商提供很多商机,应用前景非常好。基于SIP的应用丰富多样,这些应用都离不开SIP服务器的支持,所以研究SIP服务器如代理服务器、重定向服务器等就很有必要,也很有意义。1.2 课题研究现状SIP协议最早是在1999年出
6、现的。当时IETF(Internet工程任务组)在IETF上提出了这一概念,当时出来了第一个版本RFC2543,最新的版本是在2001年出来的,即RFC3261,SIP的理论基础一旦建立,就相继出现看众多基于SIP协议的服务和产品。国内对于SIP的研究相对少些,但也有一些公司投入了力量,如华为、中兴等。他们在研究SIP的基础上也推出了一些应用和产品,产品当然包括SIP服务器,还有SIP终端之类的。但是总体来说,国内对SIP的研究和产品以及应用不多,就算有产品和应用,也几乎没有多少市场份额。况且SIP协议也会根据技术发展和人们的需求做一些补充和完善,所以对SIP协议、服务器和SIP用户终端及其他
7、新兴应用的研究很有必要和意义,很多的技术创新会在这过程中产生。第二章 SIP 协议综述2.1 SIP协议简介2.1.1 SIP协议的历史SIP(Session Initiation Protocol)会话初始协议,是由IEFT(Internet Engineering Task Force:Internet 工程任务组)下的MMUSIC(Multiparty Multimedia Session Control:多方多媒体会话控制工作组)提出来的。SIPv1是SIP协议的第一个版本,不过这里的SIP还不是人们所熟知的会话初始协议,而它的含义是会话邀请协议(Session Invitation
8、Protocol)。SIPv1于1996年2月22日第36届IETF会议上,作为一个Internet草案提交给IETF。不过SIPv1已经和后来的SIP一样使用了会话描述协议(SDP,Session Description Protocol),SIPv1使用的传输协议是基于UDP的,编码方式已经是基于文本的了,SIPv1协议的功能相对简单,只是用来处理会话的建立。同是在1996年2月22日,简单会议邀请协议(SCIP, Simple Conference Invitation Protocol)的草案也提交给IETF。SCIP和SIPv1不同,SIPv1使用UDP,SCIP则使用TCP协议进行
9、传输,SCIP的信令比SIPv1持续时间长,会持续到会话建立以后。在用户标识符方面,SCIP使用的是E-mail地址,采用的是超文本传输协议。在1996年12月的IETF第37届大会上,SIPv2作为Internet的草案提交给IETF。这时的SIP含义相比较SIPv1来说已经发生了变化,它不在是会话邀请协议(Session Invitation Protocol),而是由SIPv1和SCIP合并而成,是人们所熟知的会话初始协议(Session Initiation Protocol)。因为是两个协议合并而来的,所以这个新的SIP包含了SIPv1和SCIP这两个协议的特点,即,基于HTTP,使
10、用的传输协议既可以是TCP也可以是UDP,它同时也是基于文本的。IETF在1999年2月发布了SIP的提议标准,这个提议标准即RFC2543规范。IETF在2001年又发布了新的规范,即RFC3261,并在以后不断地进行了完善。RFC3261中对多媒体会话过程是如何建立、如何修改和如何结束等进行了定义。它定义了用户间多媒体会话过程的建立、修改和终止。SIP协议的设计思想和SMTP以及HTTP一样,都是基于互联网,采用的编码方式是基于比较简单的文本方式,协议简洁高效并易于扩展,很适合基于Internet的传输,是未来多媒体通信系统的主流发展方向。2.1.2 SIP协议的特点1. 基于 Inter
11、net 的设计原则,易于业务整合。在 OSI 七层结构体系中,SIP 位于应用层,这使得 SIP 协议可以独立于底层的协议,这样在建立、调整和结束一个会话的时候,它就可以和底层相互独立,底层只需要提供相应的接口和协议规范即可。同时由于 SIP 协议基于 Internet 的设计原则,这使得很多也是基于Internet 的协议可以和 SIP 很方便的互通。SIP 消息的语法衍生于 HTTP,所以 HTTP 中的很多消息和语法可以在 SIP 中重用,所以容易把相关业务整合起来。2. 独立的传输层SIP 协议处于应用层,独立于底层协议,自然而然的也独立于传输层,对传输层没有多少限制。3. 第三方控制
12、机制第三方控制是指自己本身并不参与会话,但是会有一些诸如建立呼叫的功能,SIP 协议支持第三方的控制机制。4. 很容易开发多媒体业务以前的固定电话只是单一的语音呼叫,但 SIP 不止如此,它管理的对象是会话,这个会话当然包括语音在内,但它还有新的内容在里面。如它可以包括数据、图像、视频流等业务,也就是说,使用 SIP 很容易开发其他通信业务。5. 移动性、兼容性和扩展性移动性体现在 SIP 定义了重定向服务器,这个服务器是 SIP 服务器的重要内容,它一般使用统一资源定位器(URL)的方式来标识自己,有了重定向服务器,用户就可以得知目的用户的新位置。SIP 还具有向上兼容的特性,这主要体现在
13、SIP 的忽略机制上。SIP 提供了很多功能和消息标题头,但并不是每个代理服务器或用户都能完全用到,用不到的功能将会被忽略掉。SIP 的强大之处还在于SIP 有很多扩展功能,这些功能随着一些新的想法和应用还在不断扩展。6. 协议格式清楚,维护方便SIP 协议基于比较简单的文本格式,这样下来协议的可读性很强,在出现错误时,可以很方便地对错误进行分析,维护起来比较方便。2.1.3 SIP协议的功能1. 用户定位用户定位的完成主要是通过 SIP 协议的请求和应答消息来实现的。请求可以有 INVITE请求,也可以是 ACK 等其他请求,当传送的应答状态码为“200 OK”时,就可以根据以上这些消息来确
14、定哪些用户代理或终端正在通信。SIP 协议也支持 URL,SIP 重定向服务器还支持终端用户的重定向功能。另外,其他的一些定位服务器也可以和 SIP 协议一起来用。2. 会话能力的协商SIP 请求消息中有一个 OPTION(可选项),它的状态码是 600-699。OPTION 为 SIP 会话的双方提供了可供他们选择的参数、他们想要了解的会话属性来进行会话的协商。3. 会话管理这是 SIP 协议中很重要的一个功能。任何一个 SIP 的终端用户都可以通过会话管理功能发起一个呼叫,同样的话,如果他想把一些新的会话参与者加入会话或者结束这个会话,也是可以的。4. 呼叫建立一般是 SIP 代理服务器通
15、过 100-199 的状态码来完成振铃,振铃也就是“Ringing”,这只是一个临时应答,但是这个临时应答却起到了连接主叫和被叫以及各种会话参数建立的功能。5. 呼叫处理有时候被叫方并不在你所知道的那个位置,或是他现在忙,这时你要通过 SIP 的重定向功能来找到被叫方的新位置,用通过包含有 Contact 头域的 BYE 请求消息来进行呼叫转移。2.2 SIP 实体C/S 模型,是互联网中经常采用的一种模型,也就是客户端/服务器模型(Client/Server),SIP 基于因特网,自然也采用了这种结构。SIP的实体有两种,即 SIP 用户代理(User Agent, UA)和 SIP 服务器
16、(SIP Server)。用户代理通常是用于发送和接收SIP的请求和应答消息,SIP电话是 SIP 用户代理的一个比较常见的形式。一个 UA 包含一个 UAC(User Agent Client,用户代理客户端)和一个UAS(User Agent Server,用户代理服务器)。服务器是用于对客户端提出的请求进行处理并提供应答。SIP服务器可以分为代理服务器(Proxy Server)、重定向服务器(Redirection Server)和注册服务器(Registrar),另外还有一个不属于SIP服务器的范围,但也很重要的定位服务器。2.2.1 用户代理SIP 用户代理也就是 SIP 的端系统
17、,常见的 SIP 用户代理有多媒体手持设备、各种 SIP电话(包括硬件或软件实现的 SIP 话机)、具有能创建和管理 SIP 功能的移动电话、PC 等。用户代理有两种类型,一种是用户代理客户端(简称 UAC),另外一种就是用户代理服务器(简称 UAS)。这两种类型在一个呼叫中起到不同的作用,分居于服务器的两端,UAC 发出呼叫的消息,UAS 用于接收呼叫的应答消息。2.2.2 重定向服务器重定向服务器用来对户代理进行重新定位,产生的应答码介于 300-399 之间,在所请求的用户地址改变以后,它重定向到用户的新的地址,并通过 URL 的方式把这个新地址放在应答消息 3xx 中返回出去。代理服务
18、器可以发送 SIP 请求消息,但是重定向服务器不会,而且重定向服务器也不能接受通话请求。一般一个好的 SIP 服务器会包括代理服务器、重定向服务器和注册服务器,这几个服务器可以放到一个平台上。而在通常情况下,通常说的术语 SIP 服务器是一般是指代理服务器,但有时也可以指重定向服务器,这并没有按照它们基本行为的不同来区分。在实际的应用中,同一个 SIP 服务器根据具体情形,有时可以表现出重定向服务器的功能,但可能又同时作为代理服务器来用。举个例子,某个人想要重定向所有会话邀请,一个 SIP 服务器就可以帮他实现这个要求,同时,这个服务器又可以使用代理功能去处理其他的请求。2.2.3 注册服务器
19、SIP 注册服务器是接收注册(Register)请求的服务器,用户向注册服务器发送了一个注册请求,注册服务器收到后,接收请求消息,注册成功后返回一个最终应答“200 OK”。同时它会把这个新注册的用户信息送到定位服务器中,以便日后需要的时候可以很方便地查找用户的位置信息。注册服务器从某种意义上说也可以是一个数据库,所有用户代理的位置信息都放在其中。2.2.4 定位服务器在 SIP 的实体中并没有定位服务器,而且 SIP 服务器和定位服务器之间也不像 SIP 实体之间那样使用 SIP 协议,但它却是 SIP 体系结构中很重要的一部分。注册服务器把新注册的用户代理的信息传到定位服务器中,定位服务器
20、也可以和本地的数据库相连,用来存储这些用户的注册信息,包括位置、IP 地址等信息,为用户提供定位的功能。一些定位服务器使用的是轻量级目录访问协议(Lightweight Directory Access Protocol, LDPA)或 My SQL 和 SIP 服务器进行通信。第三章 SIP工作流程及注册服务器配置和实现方法3.1 SIP 工作流程SIP 定义了注册/注销、呼叫、重定向以及能力查询四种工作过程,下面结合图例说明几种典型的呼叫处理。3.1.1 注册目的注册就是将自己的 IP登记给注册服务器的过程, 以便其他用户通过一个称为统一资源指标符 URL 的地址来访问到。URL 地址可在
21、该用户域的 SIP代理中解析。 每个用户在启动时, 都要到注册服务器注册当前的 SIP URL 和 IP地址的绑定,服务器最后把这些信息保存在位置服务器中。用户发送 REGISTER 请求向服务器通知他们当前所处的位置,这样,所有进入以 SIP格式所表示的目的地址的请求都被代理处理,或重定向到用户当前所在的 IP地址。注册过程为后续会话连接做准备。3.1.2 注册过程用户代理要通过SIP进行通信,首先要在相应的服务器上登记注册,如图 3-1 所示:图3-1 SIP注册流程注册的具体流程如下:1) 用户代理 Alice 发送 REGISTER 请求给注册服务器,请求登记注册;2) 注册服务器通过
22、在数据库中查询发现该用户不合法,返回一个 401 错误(Unauthorized)给 Alice,该错误响应中包含了令牌信息,用于用户再次注册的安全验证;3) Alice 再次发出注册请求,这时用户的账号密码等已被步骤 2 中的令牌作了加密处理;4) 注册服务器再次收到 REGISTER 请求,通过对用户的加密信息进行解密后再到数据库中进行合法验证,若 Alice 的信息合法,则登记入库,注册成功。另外,注册服务器会返回一个 200 OK 响应(成功响应)给用户代理 Alice。3.1.3 通过重定向服务器的呼叫图 3-2 给出了两个UA之间通过重定向服务器进行呼叫的具体流程:图3-2 通过重
23、定向服务呼叫的具体流程具体的呼叫流程如下:1) 用户代理 Alice发出会话邀请消息INVITE;2) 服务器收到请求后查询被叫方 Bob 的地址,然后发送302 响应(Moved Temporarily)给 Alice 的代理,告知 Bob 的地址信息;3) Alice 的代理收到响应后发送 ACK 向重定向服务器证实收到的响应消息;4) Alice 依照 302 的 Contact 中指明的地址直接发送 INVITE 消息给代理 Bob;5) Bob 端振铃的同时发送 180 响应给 Alice;6) Bob 用户摘机,发送 200 OK 响应给 Alice;7) Alice 收到响应后返
24、回 ACK 进行确认;8) Alice 和 Bob 会话连接成功,两用户之间可以进行媒体流的传输;9) Bob 欲结束通话,于是发出 BYE 请求,提出终止通话的请求;10) Alice 同意结束会话,返回一个 200 响应,此后通话结束。3.2 注册服务器配置及实现方式3.2.1注册服务器SIP 提供了一个搜索机制,如果一个用户希望建立和其他用户的会话,SIP必须查找能够找到对方用户正在使用的当前主机(hosts)。这个搜索机制经常被 SIP网络基本元素使用,比如 proxy 服务器,重定向服务器等等。他们在接收、以及响应一个请求的时候,会基于这个用户的位置信息来判定这个消息应该发送到哪里。
25、要实现这个,SIP 网络部件考虑了一个抽象的服务:位置服务;位置服务是通过对特定地区提供地址绑定来实现的。一个 proxy 会从把输入的 URI 转换到用户实际位置的位置服务中得到最终用户的位置。注册服务为特定地区的位置服务创建绑定关系,这个绑定关系是用来建立包含一个或者多个联系地址的 address-of-record URI。因而,当那个地区的 proxy接收到一个请求,这个请求的 Request-URI 和 address-of-record 的记录匹配,那么这个 proxy 会转发请求到这个 address-of-record 中登记的联系地址中去。3.2.2 注册服务器实现方式注册服
26、务是为了实现位置的绑定,而这种绑定的目的在于最大可能的搜索到目标地址,从而成功转发消息。怎么样才能最大可能的完成搜索呢?这个就要求登记服务所覆盖的区域和 URI 中的 address-of-record 所覆盖的区域相同。注册服务器通过两种不同的注册方式来实现,用户注册方式和服务器注册方式。3.2.3 用户注册方式只有当对那个 address-of-record 的请求会被路由到这个区域的时候,登记这个address-of-record 到这个区域的位置服务才是有意义的。因为每个 proxy 主要处理本域的 UA,所以,发往这些 UA 的消息基本上都是要经过他的 proxy。这就要求UA 必须
27、向负责他的域的注册服务器进行注册。UA 通过发送一个 register 消息到注册服务器进行注册,注册信息存储在位置服务。凡是发送到 UA 的 proxy 的消息,通过查询 UA 的注册信息得到 UA 地址,然后转发消息。如图3-3所示:图3-3 用户注册第四章 重定向服务器的设计以及在SDL上的实现4.1 重定向服务器概述代理服务器负责请求消息的路由。某些体系结构下可能需要降低它们的负荷,并提高信令传输通道的鲁棒性,这时可依靠请求重定向来达到目的。重定向即服务器用响应消息将某一请求的路由信息返回给客户端,从而使服务器既起到了帮助选路的功能,又可以不必处理由该请求所导致的更多消息往来当请求的发
28、起者收到重定向响应后,它将基于收到的URL发送新的请求。重定向通过把URL信息从网络的核心传递到边缘而使网络获得了相当大的扩展升级能力。重定向服务器逻辑上由一个服务器端事务端的事务层和一个能够访问某种定位服务的事务用户组成。定位服务器实质上是一个数据库,它包含单个URL到一个或者多个联系地址之间的映射,通过这些联系地址就能找到URL所对应的用户或实体。重定向服务器自己不发送任何SIP请求。在收到除CANCEL以外的请求时,重定向服务器可以拒绝它,或者通过定位服务获得一个可选地址列表并返回一个3XX最终响应。对格式正确的CANCEL请求,重定向应返回2XX最终响应。该响应将结束被取消请求的SIP
29、事务。重定向服务器维护整个SIP事务的状态。客户端检测重定向服务器之间发生的转发循环。当重定向服务器返回某个请求的3XX响应时,它在Contact头字段中装入一个地址列表(含一个或多个可选地址)。Contact头字段值中还可能提供“expires” 参数,以指名Contact数据的有效期。Contact头字段包含了可供发送的URL,这些URL给出了新的目标位置或新的用户名,或者只是简单地指定了其它的传输参数。301(永久移动)或302(临时移动)响应可能会给出与初始请求不一样的目标位置和用户名,同时又指定另外的传输参数,比如一个不同的服务器地址或多播地址,或者将SIP消息的传输方式从UDP改为
30、TCP或者从TCP改为UDP,等等。然而,重定向服务器决不能将请求重定向到一个与请求的Request- URI相同的URL地址。如果重定向的目的地URL所指的并非当前重定向服务器,它可能将请求向重定向目的地转发,或用一个404(未找到)响应来拒绝请求。重定向服务可以归结成为访问一个绝对位置服务来构建新的目的地址的形式,该服务是从 SIP 注册服务器创建的位置服务获得信息。通过 Request-URI 访问注册服务器中的注册信息,找到 Request-URI 对应的 Contact 列表,把 Contact 列表中的地址作为目标地址集合。在 Request-URI 的区域并非本 proxy 负责
31、的区域的情况下,由于 proxy 之间存在注册关系,仍然可以尝试重定向服务,如果失败才把 Request-URI 放在目标集合中,并且作为唯一的一个目标 URI。在 Request-URI 的区域是本 proxy 负责的区域的情况下,如果 Request-URI 没有提供足够的信息来让 proxy 产生目的地集和,它应当返回一个 485(Ambiguous)应答。这个应答应当包含一个 Contact 头域,包含一些应当尝试的新位置。重定向服务流程如图4-1 所示。图4-1 重定向服务流程4.2重定向服务器软件设计4.2.1 OSIP开发库OSIP是按照RFC3261(SIP)和RFC2327(
32、SDP)标准,并使用标准c编写的一个SIP协议栈。它是一个公开源码的免费协议栈。OSIP协议栈结构简单而小巧,它并不提供高层的SIP会话控制的API,它主要提供一些解析SIP/SDP消息的API和事务处理的状态机。OSIP的优点:OSIP没有给开发者限定在特定的某个执行模式下,能够使开发者选定一个比较适合自己的模式;OSIP的各个模块是相对清晰、独立的,因而去掉某个模块时也比较容易;OSIP的解析器提供了较为完善的API,包含了消息的构造、修改和产生等;OSIP的缺点:OSIP目前版本源代码结构、定义比较混乱,并且缺乏文档,阅读比较困难;该问题将在OSIP2中得到改善;OSIP不提供任何快速产
33、生请求消息和响应消息的方法,所有请求消息和响应消息的形成必须调用一组sip message API来手动组装完成; 由于OSIP结构简单,外围相关模块需要用户自己开发,如SIP消息的接收和发送,RTP/RTCP的语音数据的处理等.4.3.2 OSIP结构分析OSIP主要包括三大部分的内容:状态机模块(Finite State Machines)、解析器模块和工具模块。其结构如图4-2图所示。图4-2 SIP结构图4.2.2 SIP消息解析模块解析器模块主要有SIP解析器,URL解析器和SDP解析器三种。SIP解析器可以处理SIP起始行,SIP头域(如TO、FROM、CSEQ、VIA等),可以处
34、理SIP消息体和状态码,其流程如图4-3所示。图4-3 消息解析4.3 SIP重定向服务器在sdl_ttcn上的仿真实现4.3.1 重定向呼叫SIP系统支持重定向,目前对重定向的使用主要包括完成呼叫转移业务和完成路由寻址或载荷分担应用两个方面。对于利用重定向完成路由寻址或载荷分担一般应用于组网环境下。此时网络中存在类似于路由查询的服务器,当此服务器接收到请求后,返回路由地址,从而完成路由查询或载荷分担功能。对于完成呼叫转移类业务,一般是用户的具体业务需求使用重定向功能。例如,用户可以定义在某种条件下(对于某一时刻或某人的呼叫)将呼叫路由到其他路径。这种业务类似于目前我们所使用的呼叫转移业务。该
35、业务可以由网络启动也可以由用户终端启动。用户终端启动重定向的呼叫模型如图4-4所示.该重定向行为由SIP终端发起。假设用户C当前正在开会或其他重要事务,在自己的SIP终端上设置了条件屏蔽,在这一期间,只有重要客户的呼叫才能够接续进来,其他用户的呼叫将会接续到新的地址或自己的秘书处。在此期间,当用户A(用户A为普通用户)呼叫用户C时,用户C的SIP话机将会发送重定向(3*消息),告知网络服务器(软交换机2)将此呼叫接续到新的地址、网络服务器收到重定向消息后,根据3*消息中的内容,将呼叫路由到新的地址。图4-4重定向的呼叫模型4.3.2 SIP重定向服务器模式在SDL上的各类截图 图4-5 sip
36、重定向服务器模式图此次仿真是假设已经做好注册服务的基础上进行的仿真测试。注册服务器里的位置服务器LS与PS服务器合成为Proxy服务器。并假定在进行位置查询过程在proxy服务器内自行进行,不再另行建立单独的LS服务器。 图4-6 sip重定向服务器模式系统图 图4-6为SIP重定向服务器模式的系统图,包括3个功能模块:一个发起者UA1、一个原地址接收者UA2、一个新地址的接受者UA3、以及集成了代理服务器和位置服务器的Proxy服务器。以及各类信号:u_ip、u_op与SIP信号pac、pac2以及重定向信号pac3。图4-7 UA1功能块图图4-7为UA1功能块图里包括进入主叫用户向进程p
37、s_ua1发出的信号u_ip、进程ps_ua1应答信号u_op。进程ps_ua1向服务器发起的信号pac以及服务器的应答信号pac2。图4-8 UA3功能块图图4-8为UA3功能块图,里面包括包括由proxy服务器发送的pac、u_ip信号以及其应答的重定向信号pac3和u_op。 图4-9 UA2功能块图图4-9为 UA2功能块图,里面包括进入进程ps_ua2的信号pac、进程ps_ua2应答信号pac2。进程ps_ua2向被叫用户发送的信号u_op以及被叫用户的应答信号u_ip。图4-10 proxy服务器功能块图图4-10中proxy服务器功能块图,里面包括由主叫用户代理向进程proxy
38、_ps发送的pac信号以及应答pac2信号,通过的信道是cn_ua1;被叫用户原有地址代理接收的由进程proxy_ps发送的pac、u_ip信号以及其返回的重定向信号pac3,通过信道是cn_ua3;进程proxy_ps向用户新地址代理发送的pac信号以及返回的pac2信号,通过信道是cn_ua2。 图4-11 process ps_ua1进程块图图4-11为ps_ua1进程块图,ps_ua1由初始到idle状态,idle状态下又u_ip信号的进入讲50赋值给sip!code再发出sip信号pac,且状态由idle变成invite_sent。图4-12 process ps_ua3进程块图图4
39、-12为ps_ua3进程图,由开始到idle状态收到u_ip的入信号,赋值50给sip!code。但由于是不能正常接入呼叫所以发送重定向sip信号pac3并状态转为invite_sent。图4-13 process ps_ua2进程块图图4-13为重定向后新的用户代理ps_ua2进程图,包括接收到主叫用户的呼叫信号、被叫用户收到该信号进行的回应、振铃时常等。图4-14 process proxy_ps进程块图图4-14为proxy服务器进程块图,包括对主叫用户的呼叫信号处理,被叫用户原有地址的呼叫以及返回的重定向信号处理,被叫用户新地址的呼叫以及新地址的呼叫连接。第五章 总结与展望5.1 总结
40、SIP协议自制定到不断完善,其简单、灵活、可扩展性强等优点吸引了众多开发者和商业界的关注,基于SIP协议的相关产品和业务被不断研究和开发,SIP在未来的网络和通信领域中都将占有非常重要的位置,其市场前景和发展空间都非常大。本文在查阅了sip重定向服务器的相关资料后,深入研究了SIP协议的相关语法和规范等,实现出基于 SIP 协议的重定向服务器的设计,主要进行SIP注册和其重定向服务器的实现。5.2 技术展望5.2.1 办公OA系统 办公OA系统中的邮件系统传送以及办公内部的呼叫建立,经常会由于被叫方的不方便接收或接听而导致文件信息的流失。引入重定向服务器后,将改变以往单一的呼叫通道,而达到多通
41、道的备用准备从而尽最大可能保证信息的无丢失性。5.2.2 呼叫中心系统呼叫中心系统,尤其是24小时无间断的呼叫中心,重定向的使用尤为必要和重要。重定向的准确与否直接影响呼叫中心工作的质量。由之前课程所学内容,现对公交系统呼叫中心引入重定向系统作如下展望与设计:1. 正常呼叫中心工作时间(8:00-18:00)以外,对于每辆发车都进行SIP注册,将位置信息录入进行位置服务器LS上。2. 8:00-18:00以外的呼叫接入,如是对公交车进行呼叫,直接由代理服务器通过位置服务器进行重定向转接。3. 8:00-18:00以为的呼叫接入,如若是对呼叫中心进行呼叫,由代理服务器重定向到移动呼叫中心处理端,
42、进行呼叫处理。 5.2.3重定向攻击防范 通话劫持攻击虽然原理比较简单,但很实用。对于绝大部分常用的客户端和服务器,存在通话劫持攻击的漏洞。因为这种攻击方法,并不要求客户端支持呼叫转移功能,只要服务器能对302报文产生正确的回应即可。为了防御该种攻击,可以采取如下措施: 1.改进认证方案。攻击者冒充合法用户,使用真实的参数非法使用网络。认证机制提供了验证用户合法性的方法。解决办法是在302 报文中,加入认证字段,并且,在它发送到服务器端时,对其进行校验,如果response字段不正确,就不接受该请求。 2.传输层安全(TLS)加密。TLS是面向连接即TCP之上的传输层安全,该协议分为上层的TL
43、S Handshake协议和下层的TLS Record协议。TLSHandshake协议为一个安全的会话建立加密参数。TLS客户端(也是TCP 的客户端)在TCP 链接建立之后,发出一个ClientHello来发起握手,这个消息里面包含了自己可实现的算法列表和其他一些需要的消息,TLS 的服务器端会回应一个ServerHello,这里面确定了这次通信所需要的算法,然后发过去自己的证书(里面包含了身份和自己的公钥)。Client在收到这个消息后会生成一个秘密消息,用TLS服务器的公钥加密后传过去,TLS服务器端用自己的私钥解密后,会话密钥协商成功,双方就可用同一份会话密钥来通信了。 3.禁止第三
44、方发送3xx 报文。由于我们进行通话劫持攻击时通常以第三方的IP来发送伪造报文。因此,可以判断是否为第三方发来的3xx信息,只有From和To字段中的address-of-record一致时,代理服务器才执行呼叫转移。参 考 文 献1 胡江涛,SIP会话注册及邀请流程设计J.煤炭技术,2010,10(29):217-2182 彭焕峰,SIP注册服务器的研究与设计J.电脑知识与技术,2010,6(32):9024-90263 舒挺,魏仰苏,基于SDL模式的通信协议开发J.计算机工程与设计,2007,16(28):3846-38514 陈媛媛,基于SDL语言的SIP协议的形式化设计J.信息通信,2
45、008,2(24):24-265 赵静峰,张力军,基于SDL语言的SIP协议的形式化研究J.计算机与数字工程,2006,7(34):4-76 梅钦,基于SIP的网络融合关键技术的研究D.电子科技大学硕士学位论文,2009,67 孙波,多媒体集群调度平台SIP服务器的研究与实现D.南京邮电大学硕士学位论文,2012,68 尤立江,基于SIP协议的无线局域网语音系统的研究与重定向服务器实现D.北京邮电大学硕士学位论文,2007,69 程冠琪,基于SIP的远程多媒体教学系统的设计与研究D.武汉理工大学硕士学位论文,2005,610 郑晓娟,基于SIP协议的软终端的研究与实现D.南京邮电大学硕士专业学
46、位论文,2012,611 蔡林涛,基于SIP协议的IP-PBX系统的设计与实现D.华中科技大学硕士学位论文,2010,612 袁飞燕,彭长根,基于SIP的远程呼叫中心的设计方案J.计算机与数字工程,2009,5(37):99-102致 谢时光飞逝,一学期的通信软件设计课程即将结束,我心中感慨万分。这半年是我人生中一段宝贵的财富,我结识了很多朋友,受到了老师和同学们关怀和爱护,有太多的感动,有太多的人需要感谢。我首先要感谢我的老师刘紫艳副教授,她对我的悉心指导和教诲让我甚是感动。她使得我在学术研究和工作方法上受到了严格的训练,在专业知识的广度和深度上都有较大的收获。刘老师有着出众的人格魅力和严谨的治学精神,拥有广博的专业知识。她和蔼可亲,在我学习过程中给予了我很多建设性的意见,使我把握了正确的方向。自从这学期她开始讲授我们通信软件设计这门课时,她每次都是提前备好课,早早的来到教室,足以体现她的敬业精神和责任心。她的课堂上信息量大,图文并茂,重点突出。此外,刘老师还给我们灌输了很多做人做事的道理,使我受益匪浅。在此谨向刘老师致以由衷的敬意和最诚挚的感谢。同样要感谢选修刘老师这门课程的所有同学,是你们,让我感受到了大集体的温暖。大家互帮互助,营造了一个良好的学习氛围。最后要感谢我们组的组员们,特别是曹嵘晖同学,他完成了大部分SDL图的制作,也感谢唐思腾同学对我们