基SIP系统模型的构建与其信令过程的验证

上传人:仙*** 文档编号:86634689 上传时间:2022-05-08 格式:DOC 页数:50 大小:729KB
收藏 版权申诉 举报 下载
基SIP系统模型的构建与其信令过程的验证_第1页
第1页 / 共50页
基SIP系统模型的构建与其信令过程的验证_第2页
第2页 / 共50页
基SIP系统模型的构建与其信令过程的验证_第3页
第3页 / 共50页
资源描述:

《基SIP系统模型的构建与其信令过程的验证》由会员分享,可在线阅读,更多相关《基SIP系统模型的构建与其信令过程的验证(50页珍藏版)》请在装配图网上搜索。

1、基SIP系统模型的构建与其信令过程的验证作 者 姓 名:李贺明指 导 教 师:赵丽红 副教授单 位 名 称:信息科学与工程学院专 业 名 称:通信工程东 北 大 学2006年6月Constructing the SIP system model and making the confirmation of signalling processby Li He MingSupervisor: Professor Zhao Li HongNortheastern UniversityJune 200642东北大学毕业设计(论文)摘要毕业设计(论文)任务书毕业设计(论文)题目:SIP系统模型的构建与

2、其信令过程的验证基本内容:在论文中将进行以下内容1 详细了解SIP 协议内容2 理解osip和exosip协议栈的编译方法3 对VC+6.0程序开发环境加以了解4 分析系统框架和功能模块5 设计SIP用户注册程序6 对SIP系统进行测试在设计的过程中,把重点要放在对协议的理解上面来,要对SIP协议的应用进行掌握。通过VC+进行SIP注册的程序设计,来完成SIP系统的软件设计,并将对系统进行测试。毕业设计(论文)专题部分:题目:基本内容:学生接受毕业设计(论文)题目日期第周指导教师签字:年月日SIP系统模型的构建与其信令过程的验证随着Internet的不断发展,它的许多应用都需要建立和管理一个会

3、话,会话在这里的含义是在参与者之间数据的交换。其应用实现往往是很复杂的:参与者可能是在代理间移动,他们可能有多个名字,他们中间的通讯可能是基于不同的媒介(比如文本,多媒体,视频,音频等),有时候是多种媒介一起交互等。人们创造了无数种通讯协议应用于实时的多媒体会话数据比如声音、影像和文本。为了更方便的建立一个会话,本文选择了会话初始协议(SIP,Session Invitation Protocol)来建立通信系统。建立一个完善的SIP系统是一项非常复杂的工作,本文在做了大量的调研工作基础上,选择了一个正确的程序开发工具和SIP协议栈,组建一组SIP服务器和客户端,完成SIP系统中的用户通过IP

4、网络向服务器进行注册的任务。本文通过设计一组SIP服务器和客户端,对它们之间的通信信令进行了采集和分析,通过与实际结果的对照来证明信令传输过程是正确的。本文首先介绍了SIP协议和开发工具的应用方法,在概述了SIP特点之后,提出了本系统的总体设计,然后介绍了系统的具体实现过程,最后分析了验证结果。本分析系统是在Visual C+6.0平台下设计实现的。通过抓包工具对整个通信过程进行检测和分析,从而明确SIP系统通信的原理和信令传输方法。通过对服务器和和客户端的设置来熟悉基本的IP网络特点,以此来观察和分析IP特性在SIP系统中的应用。关键词:会话初始化协议,用户代理,代理服务器,SIP信令,协议

5、栈东北大学毕业设计(论文)ABSTRACTConstructing the SIP system model and making the confirmation of signalling processAlong with the Internet unceasing development, its many applications all need to establish and to manage a conversation, converses in here meaning is the data exchange between participants. Consid

6、ered the actual situation of the participants, these applications realizations are usually very complex: participants possibly move between the proxies, they possibly have many names, their middle communication possibly is based on the different medium (for instance text, multimedia, video frequency

7、, audio frequency and so on), some times are the many kinds of media hand over together and so on. The people created the innumerable kind of communications protocol to apply to the real-time multimedia conversation data for instance sound, the image and the text.For a more convenient establishment

8、conversation, I chose the Session Invitation Protocol (SIP, Session Invitation Protocol) to establish my own communications system. Establishes a perfect SIP system is an extremely complex work, but my duty is completes in the SIP system the user to carry on the registration through the IP network t

9、o the server the duty. In order to complete this task, I must set up a group of SIP server and the customer end, again is chooses a correct procedure development kit and the SIP agreement stack, I has done the massive investigation and study work for this.This article through designing a group of SI

10、P server and the client, the correspondence letter command carries on gathering and the analysis to them between, through with the real result comparison proved the letter command transmits the process is correct. This article first introduced the SIP theory knowledge and the development kit applica

11、tion method, after has outlined the SIP characteristic, proposed this system design, then introduced the system concrete realization process, finally has analyzed the confirmation result.This analysis system is designed and realized under the Visual C+6.0 platform. Through grasps a package of tool t

12、o carry on the examination and the analysis to the entire course of communications, thus is clear about the SIP system communication the principle and the letter command transmits the method. Through to the server and with the customer end establishment familiar basic IP network characteristic, obse

13、rves and analyzes the IP characteristic by this in the SIP system application.Key words:Session Invitation Protocol, User Agent Register Server, SIP Signalling, protocol stack东北大学毕业设计(论文)目录目录任务书I中文摘要IIAbstractIII第1章 绪论11.1设计背景11.2设计目的21.3 论文概要2第2章 SIP理论基础和开发工具32.1 SIP理论基础32.1.1 SIP介绍32.1.2 SIP基本组成42

14、.1.3 SIP消息格式62.1.4 SIP运作模式102.1.5 SIP未来发展问题112.2程序开发工具122.2.1 Visual C+ 6.0具体特点122.2.2 MFC类库132.2.3 Osip2和EXosip协议栈的分析14第3章 SIP系统的定义和框架分析183.1 系统的定义183.2 可行性分析193.2.1 SIP 服务器实现方案193.2.2 SIP客户端实现方案213.3 系统框架设计和分析223.3.1系统总体结构设计223.3.2程序设计流程233.3.3主界面设计243.3.4协议栈的编译253.3.5 SIP包分析26第4章 局域网SIP用户注册的实现284

15、.1 程序设计介绍284.1.1重要文件介绍284.1.2 关键程序分析284.2实现系统功能配置304.2.1开发工具配置304.2.2程序抓包流程30第5章 系统功能的实现和结果分析335.1工程配置框图335.1.1工程配置原理335.1.2 工程配置方法345.2程序执行界面36结 论40参考文献41致 谢42东北大学毕业设计(论文)第1章 绪论第1章 绪论1.1设计背景随着传统电信网络和计算机网络的逐渐融合,出现了采用分组交换技术替代传统电路交换技术传送话音业务的IP电话,IP电话的出现不可避免地给传统电信市场带来了强大冲击,大多长途电信运营商都开始关注IP电话的发展。IP电话有着诱

16、人的市场前景,美国一家市场调研公司Killen Associates预测到2003年IP电话业务年收入将达10亿美元,很多传统电信公司、ISP和新一代电信公司都开始提供或试验IP电话业务。中国信息产业部已于1999年4月正式批准了中国电信、联通、吉通三家公司进行IP电话业务运行试验。目前国际上的IP电话标准主要有ITU-T H.323协议和IETF1(Internet Engineering Task Force)MGCP协议和SIP(Session Invitation Protocol)协议。本设计专注SIP协议。会话初始协议的开发目的是用来帮助提供跨越因特网的高级电话业务。因特网电话(I

17、P电话)正在向一种正式的商业电话模式演进,会话初始协议就是用来确保这种演进实现而需要的下一代网络(NGN,Next Generation Network)系列协议中重要的一员。目前业界对SIP 的支持越来越广泛。全球大的运营商都转向支持SIP 方式, 在北美和欧洲, 多数新的方案都选用SIP , 国内的服务商考虑组建新网络的时候, 也开始采用SIP 。SIP 可以提供PC 作为一个软客户,以这样的方式入网,可以通过IP 电话,终端识别器的方式,也可以通过网关的方式。还可以提供多媒体服务IP 电话、呼叫中心等个性化服务。会话初始协议是因特网工程特别工作组(IETF)标准进程的一部分,它是在简单邮

18、件传送协议(SMTP)和超文本传送协议(HTTP)基础之上建立起来的。它用来建立、改变和终止基于IP网络的用户间的呼叫。为了提供电话业务它还需要结合不同的标准和协议:特别是需要确保传输(RTP)与当前电话网络的信令互连,能够确保语音质量(RSVP),能够提供目录(LDAP),能够鉴权用户(RADIUS)等等。会话初始协议被描述为用来生成、修改和终结一个或多个参与者之间的会话。这些会话包括因特网多媒体会议、因特网(或任何IP网络)电话呼叫和多媒体发布。会话中的成员能够通过多播或单播联系的网络来通信。会话初始协议支持会话描述,它允许参与者在一组兼容媒体类型上达成一致。它同时通过代理和重定向请求到用

19、户当前位置来支持用户移动性。会话初始协议不与任何特定的会议控制协议捆绑。SIP软电话是基于因特网开发的电话软件,可以通过呼叫对方IP地址达到语音通信的目的,目前的研究还不算完善。由于SIP是基于纯文本的信令协议,可以管理不同接入网络上的会晤。会晤可以是终端设备之间任何类型的通信,如视频会晤、即时信息处理或协作会晤等。该协议不会定义或限制可使用的业务,传输、服务质量、计费、安全性等问题都由基本核心网络和其它协议处。所以会话初始协议目前倍受青睐,走在了研究领域的前沿。1.2设计目的本设计主要研究用计算机语言简单编程设计SIP服务器和注册流程,以及通过两台联网的计算机对其信令传输过程进行验证。所用的

20、计算机编程语言为Visual C+6.0。该设计是基于SIP信令流程的,与SIP信令有所不同,仅仅实现了SIP通信信令,忽略了语音通信。通过设计SIP软电话了解了SIP电话的设计理念,以及用计算机编程语言实现计算机之间的通信。通过信令流程验证过程了解了计算机之间通过SIP协议进行通信的过程。1.3 论文概要SIP已经发展好几年了,但仍然没有普及应用,一方面由于SIP设备开发利润的限制,另一方面大家对SIP不是很具体的了解。本文主要针对SIP开发者,介绍了SIP的理论知识和Visual C+6.0程序开发工具的具体应用,以及相关软件的配置和应用等,并编写了相关程序。论文分为六章内容:第一章简要介

21、绍课题研究的目的和重要意义;第二章讲述与本文有关的初级知识,理论基础以及程序开发工具;第三章介绍了设计的系统定义和自己对系统的分析;第四章主要讲述了自己在实现局域内SIP注册所做的工作;最后一章介绍的是整个系统实现的过程和系统验证工作。东北大学毕业设计(论文)第2章 SIP理论基础和开发工具第2章 SIP理论基础和开发工具2.1 SIP理论基础SIP(会话初始协议)的开发目的是用来帮助提供跨越因特网的高级电话业务。因特网电话(IP电话)正在向一种正式的商业电话模式演进,SIP就是用来确保这种演进实现而需要的NGN(下一代网络)系列协议中重要的一员。SIP是IETF1标准进程的一部分,它是在SM

22、TP(简单邮件传送协议)和HTTP(超文本传送协议)基础之上建立起来的。它用来建立、改变和终止基于IP网络的用户间的呼叫。为了提供电话业务它还需要结合不同的标准和协议,特别是需要确保传输(RTP),与当前电话网络的信令互连,能够确保语音质量(RSVP)、提供目录(LDAP)、鉴权用户(RADIUS)等等。SIP被描述为用来生成、修改和终结一个或多个参与者之间的会话。这些会话包括因特网多媒体会议、因特网(或任何IP网络)电话呼叫和多媒体发布。会话中的成员能够通过多播或单播联系的网络来通信。SIP支持会话描述,它允许参与者在一组兼容媒体类型上达成一致。它同时通过代理和重定向请求到用户当前位置来支持

23、用户移动性。SIP不与任何特定的会议控制协议捆绑。2.1.1 SIP介绍会话初始化协议(SIP)的第一个版本即SIPv1是使用会话描述协议(SDP)描述会话,同时使用UDP进行传输,是基于文本的。1996年2月22日,SIPv1和简单会话邀请协议(SCIP,Simple Conference Invitation Protocol)两个协议合并为SIPv2,即现在所说的SIP。SIP提供以下功能: (1)名字翻译和用户定位无论被呼叫方在哪里都确保呼叫达到被叫方。执行任何描述信息到定位信息的映射。确保呼叫(会话)的本质细节被支持。 (2)特征协商它允许与呼叫有关的组(可以是多方呼叫)在支持的特征

24、上达成一致(注意:不是所有方都能够支持相同级别的特征)。例如视频可以或不可以被支持。总之,存在很多需要协商的范围。 (3)呼叫参与者管理呼叫中参与者能够引入其它用户加入呼叫或取消到其它用户的连接。此外,用户可以被转移或置为呼叫保持。(4)呼叫特征改变用户应该能够改变呼叫过程中的呼叫特征。例如,一呼叫可以被设置为“voice-only”,但是在呼叫过程中,用户可以开启视频功能。也就是说一个加入呼叫的第三方为了加入该呼叫可以开启不同的特征。2.1.2 SIP基本组成SIP协议虽然是主要为IP网络设计的,但它并不关心承载网络,可以在ATM、帧中继等承载网中工作,可以运行于TCP、UDP、SMTP等各

25、种传输层协议之上。SIP用户通过类似于e-mail地址的URL标识,例如sip:myname,通过这种方式可以用一个统一名字标识不同的终端和通信方式。SIP主要由于4种元素组成:用户代理、代理服务器、重定向服务器以及注册服务器。(1)用户代理(User Agent)用户代理是用于用户与用户之间交互的SIP实体,它通常有一个与用户连接的接口。可分两个部分:用户客户端(UAC),负责发起呼叫;用户服务端(UAS),负责接受呼叫并做出响应。两者并不是绝对的。例如,Bob想要在他的计算机上通过Internet打电话给Jack,他运行了一个包含SIP用户代理的应用程序,Bob通过接口和UA交互。一旦Bo

26、b按了呼叫Jack的接口按钮,UA就触发相应的SIP消息建立呼叫请求。Bob的UA此时扮演的就是UAC。Jack的计算机上也有一个SIP用户代理,当这个代理收到Bob用户代理发来的请求时,可能给出两个按钮给Jack选择:接受请求和拒绝请求。当Jack作出接受请求时按下接受请求按钮,Jack的用户代理根据作出的选择给Bob的用户代理回送消息。Jack的UA此时扮演的就是UAS。用户和SIP之间的所有交互都是通过UA作为中介来完成的。(2)代理服务器(Proxy Server)代理服务器负责接收用户代理发来的请求,根据网络策略将请求发给相应的服务器,并根据收到的应答对用户代理做出响应。可分为保留呼

27、叫状态代理、保留状态代理和不保留状态代理。如表2.1所示。表2.1 代理服务器分类保留呼叫状态代理保留为后述事务发送的SIP消息的详细路径,这些代理存储从会话建立时刻起到会话结束为止所有状态信息。保留状态代理存储与一个给定事务相关的状态信息直到事务结束,它不需要位于那些为后述事务发送的SIP的路径中不保留状态代理收到一个请求时,就发向下一跳,立即删除与之相关的所有状态信息;收到应答时,根据Via标题头分析路径发往下一跳,它并不为之维持状态. 上例中Bob只发出一个呼叫请求,但是可能会有很多Proxy为他建立呼叫请求,设Jack是Hust电信系ITEC的一名研究生,Hust有一个代理服务器,电信

28、系也有一个代理服务器,当Bob的请求:Jack,到达Hust时,Hust的代理服务器将代表Bob的UA自动向Jack发出请求,当请求到达电信系服务器时,电信的代理服务器将自动向ITEC发出Jack请求。(3)重定向服务器(Redirect Server)重定向服务器用于在需要时将用户新的位置返回给呼叫方。呼叫方可根据得到新位置重新呼叫。如上例设Hust有一个重定向服务器,它知道Jack工作时在Jack202.114.5.36,休息时在Jack222.20.74.219它就将这两个地址返回给Bob的UA,UA根据返回的地址同时向这两个地址发送请求。重定向服务器也可以返回知道Jack更多地址的的服

29、务器。(4)注册服务器(Register)注册服务器用于接收和处理用户端的注册请求,完成用户地址的注册。SIP提供了一个搜索机制,如果一个用户期望建立和其它用户会话,SIP必须查找能够找到对方用户正在使用的当前主机。如Jack想要别人能够找到他就必须向服务注册可以找到他的一个或几个地址。2.1.3 SIP消息格式SIP消息采用的是文本格式编码,虽然在传输时占用的带宽比二进制更宽,但是采用文本更容易让人阅读,所以便于调试,而且采用文本协议更灵活更易于以后新功能的扩展。(1)SIP消息SIP消息有两种:请求消息和响应消息一个SIP消息由一个起始行、一个或几个字段组成的消息头、一个空行以及可选的消息

30、体组成。起始行分为请求行和状态行两种,分别对应请求消息和响应消息的起始行。(2)常用标题头标题头提供了有关于请求或应答的信息和关于这些消息所包含的消息体的信息。呼叫标识(Call-ID)代表了一种在两个或多个用户之间共享SIP信令的关系,它标识了一个特定的邀请和这个邀请相关的所有后续事务。一个多媒体会议可产生多个Call-ID不同的呼叫。下面简要说明一下From、To、Contact和Cseq这四个标题头含义。.From:表示了请求的来源地。这个可能和对话的来源不同,被叫方到呼叫方的请求会在From头域中使用被叫方的地址。.To:定义了逻辑上的请求的接受者。它通常还包含目的方的公用地址,在整个

31、会话过程中,To头域不能被更改。.联系(Contact):提供了一个URI,这个URI的含义取决玩是在请求还是在应答中。根据Contact标题头可以直接找到用户的URL,它们在路由第一个INVITE请求后就不再需要存放在信令中,这个特性非常重要。如Bob知道了Jack在222.20.74.219工作,他在ACK中就不需要再经过了。.命令序列标题头(Cseq):包含一个数字序列号和请求的方法。数字部分用于在同一会话中对不同的请求进行排序。如Bob发送一个INVITE消息给Jack:Cseq: 1 INVIITE如果他想重新发一个,可以写成如下:Cseq: 2 INVITE。在ACK和CANCEL

32、请求中应该有与对应的INVITE同样的Cseq。.Max-Forwards: 必须在任何一个SIP请求中使用,来限制中间转发请求到下一个节点的proxy or gateway的个数。每当服务器转发一次这个数字就减一。路由(Route):用于强制一个请求经过一个proxy路由列表。Via:用来描述请求当前经历的路径的,并且标志了应答所应当经过的路径。(3)对SDP的要求 详细介绍见表2.2所示。表2.2 SDP描述内容1.协议版本v = 02.会话源o = 3 连接数据c = 4.时间描述t = 5.媒体级描述m = 6.属性a = :(4)请求应答包括请求和应答两个部分,下面先介绍一下请求方法

33、。SIP核心规范了6种请求方法,分别是:INVITE、 ACK 、BYE、 CANCEL、 REGISTER 、OPTIONS。.请求(INVITE)用于邀请用户或服务参加一个会话。在INVITE请求的消息体中可对被叫方被邀请参加的会话加以描述,如主叫方能支持的媒体类型、发出的媒体及与其相应的一些参数;对INVITE请求的成功响应必须有在响应的消息体中说明被叫方愿意接收哪种媒体或者说明被叫方发出的媒体。假如Bob的用户代理用SDP描述会话如下:v = 0o = Bob 12345678 84571644 IN IPv4 222.20.45.123s = I miss you I want to

34、 talk to youc = IN IPv4 222.20.45.123t = 0 0 m = audio 12345 RTP/AVP 0 Jack的用户代理收到Bob 的INVITE邀请加入会话.根据会话描述,UA知道这是由Bob发起的,他想要在IP是222.20.45.123 ,UDP端口12345接受Jack声音的实时传输协议(RTP)的数据包,并且知道它可以接收PCM编码声音。UA通知Jack并发出“180振铃”给Bob的UA。当Jack决定接听时,UA发送个最终应答“200OK” 给Bob。.确认(ACK)ACK请求用于客户机向服务器证实它已经收到了对INVITE请求的最终响应。当

35、客户机没有收到临时应答和最终应答时就不断重发INVITE请求(或者放弃INVITE请求),因为他不能确定Jack是否收到请求或者消息在途中丢失了。只有请求客户端才有权利发送ACK。.再见(BYE)用户代理客户机用BYE请求向服务器表明它想释放呼叫。可以由主叫方发出也可以由被叫方发出。呼叫的一方在释放呼叫前必须发出BYE请求,收到BYE请求的这方必须停止发送媒体流给发出BYE请求的一方。.取消(CANCEL)用于取消一个Call-ID,To,From,和Cseq字段相同的下在进行的请求,但是取消不了已经完成的请求。如果电话很长时间没有人接听,Bob决定取消请求,他就会发一个Cancel请求。Ja

36、ck 的UA收到请求后停止振铃,会话没有建立成功,发送一个ACK请求给Bob的UA。同样也要三次握手:请求-取消事务-ACK。.注册(REGISTER)用于客户机向SIP服务器注册列在To字段中的地址信息。用户发送一个REGISTER请求给服务器通知他们当前所在地。如Jack可以向Hust服务器的注册员指示所有进入到Hust的请求都可以在Sip:jack,或者重定为jack。这样所有找Jack的请方便到一些可能的地方找到他。.选项(OPTIONS)用于向服务器查询其能力。如果服务器认为它能与用户联系,则可用一个能力集响应OPTIONS请求;对于代理和重定向服务器只要转发此请求,不用显示其能力。

37、应答当服务器收到请求时就会作出一个应答6,每个应答都有一个代表事务状态的编码。状态码大小是100699,其中1XX是临时应答,其他的都是最终应答。详细介绍见表2.3。表2.3 应答编码及对应状态1XX(Informational)请求已经收到、继续处理请求2XX(Uccess)行动已经成功地收到,理解和接受3XX(Redirection)为完成呼叫请求,还须采取进一步的动作4XX(Client Error)请求有语法错误或不能被服务器执行,客户机需修改请求5XX(Server Error)服务器出错,不能执行合法请求6XX(Global Failure)任务服务器都不能执行请求(5)事务. I

38、NVITE事务INVITE请求包含了一个三方的握手:客户端事务发送一个INVITE,服务端事务返回一个应答,客户端事务发送一个ACK。采用逐跳的机制,保证每一个信令被成功向下一跳传送。当然不保存状态机不能完成此任务。在传输中可以采用的不是同一个协议,服务器与服务器之间可能有点是UDP有的是TCP。在用户端和Proxy中都要设立定时器,以备重发。发送一个INVITE请求发送一个请求必须保证TU是用INVITE请求来初始化一个新的客户端事务。客户端事务必须把请求发送到通讯层来进行发送。SIP采用一种机制保证每一个INVITE请求成功的发往下一跳,路径上Proxy有义务把INVITE向下一个Prox

39、y或终端UA发送。在可靠的传输协议上Proxy不需要做其它的事了;如果在不可靠的协议中,Proxy在收不到应答时将每隔T重发请求,重发的时间间隔加倍。在无状态的Proxy中不能完成此任务。当Proxy收到请求时,总会产生一个“100trying”应答,防止请求端不断重发请求。而请求的用户代理可能产生任何的临时响应,如“ 180ringing”。 应答INVITE请求SIP不能保证临时应答都能够到达呼叫者的UA,即使丢失了也不重传。但对于最终应答,不论是成功还是非成功应答,SIP都是采用逐跳传送,在不可靠的传输UDP上传输时,要不断重传请求,直到收到ACK。当然在可靠的传输协议中也需要ACK应答

40、,因为SIP是三次握手协议。.非INVITE请求非INVITE事务并不使用ACK。他们只是简单的请求应答的交互。对于非可靠的传输来说,请求是间隔T1倍增地传输。如果只收到了一个临时应答,到达到T2时如果没有收到最终应答,重传继续。这与INVITE事务不同,这样做的目的是确保收到一个最终应答。2.1.4 SIP运作模式SIP 的呼叫建立如图2.18所示,开始的时候caller 会送出SIPINVITE的讯息给callee,callee收到之后,会马上响应一个100 Ringing的讯息通知caller,说明目前callee 已经收到INVITE 讯息且正在处理中,如果callee 愿意与call

41、er 通话,便会送出200 OK的response,最后caller 再送出ACK,此时便可以开始进行会议。当其中一方想结束通讯时,便会送出BYE 的讯息来通知对方,对方响应200 OK 便可以结束目前进行会议。 Client (Caller/UA) Server(Callee/UAS)INVITE100:Trying180:Ringing200:OKACKBye200:OKRTP图2.1 SIP 呼叫流程2.1.5 SIP未来发展问题目前来看,SIP协议并没有在电信领域大规模应用的先例,很多问题影响了SIP的未来发展方向。通过学习SIP协议和H323协议,我发现SIP还有很多问题急需解决,主

42、要包括以下几点:(1)SIP终端的智能性过强,可能会给网络带来很多的安全问题。(2)用户终端可以绕开运营商的管理直接向被叫用户发起呼叫。(3)SIP网络结构采用平面化形式,运营商不便进行管理和收费。(4)与H323想比,SIP不具备点到点的会话控制能力,如控制一方成为主席或点名一方发言等。(5)SIP规范还不是很健全,很多信令规范存在安全隐患,一旦用户不按规定进行操作,或恶意对会议进行破坏的话,系统不能采取相对有效的措施等。以上几点是我自己总结出来的,有问题就要解决问题。整体来看,SIP的发展前景还是很好的,而且,SIP协议的规范和应用也在不断的进行发展,以后SIP还可能应用到其他领域,让我们

43、拭目以待吧。2.2程序开发工具Microsoft Visual C+是运行于Windows平台上的交互式可视化继承开发环境。它是Microsoft Visual Studio家族的成员之一。Visual C+之所以称为集成开发环境,是因为它集程序的代码编辑、编译、连接和调试等功能于一体,给编程人员提供了一个完整而方便的开发环境,并提供许多有效的协助开发工具,如SourceSafe等。Visual C+的AppWizard可以为大部分类型的应用程序提供框架代码,用户无需书写代码,只需要简单的单击几个按钮就可以生成简单的可以运行的程序框架。与其他的可视化开发环境比较,除了共同的优点之外,Visua

44、l C+还具有许多优势。虽然使用Visual C+设计一些非常简单的程序时,可能体现不出其优势,甚至还很麻烦,需要书写很多的代码,但当用户需要完成更灵活的、特定的界面时,使用Visual C+则更加方便,它可以让用户“随心所欲”。由于Visual C+基于C+语言,并且来自Windows操作系统本身的开发者Microsoft公司,因此,在众多的可视化集成开发环境中,它是开发Windows应用程序的最佳选择。Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。eXosip是Osip2的一个扩展协议集,它

45、部分封装了Osip2协议栈,使得它更容易被使用。2.2.1 Visual C+ 6.0具体特点15Visual C+ 6.0是微软公司在多年使用、不断改进的基础上推出的用于支持Win95以上的平台应用程序(Applications)、服务(Service)和控件(Control)的开放环境。Visual C+ 6.0是一个典型的集成开发环境IDE(Integrated Develop Enviroment),它集编辑、编译、链接和调试等功能于一体,是一系列开发工具的组合。具有以下特点:开放环境Visual Studio由一套继承工具组成,用于开发WVIN 32(in95/98或Windows

46、NT)环境下运行的应用程序。提供功能强大的向导工具(MFC AppWizard、Class Wizard)。Developer Studio 的项目工作区的形式组织元件、项目及项目等配置。MFC类库支持多线程应用程序开发。具有Windows Socket和Mapi支持,可以与网络及Email连接。最快的继承数据库访问,允许用户适应强有力的数据库应用程序。具有强有力的Internet支持,对OLE提供强有力支持。2.2.2 MFC类库对于任何一种操作系统,如果想在其上进行应用程序开发,那么就必须了解它所提供的API(Application Program Interface,应用程序接口)。如果

47、说以前的标准Windows API函数库是用于编写Windows应用程序的C函数库,那么MFC(Microsoft Foundation Class)则是用于编写Windows应用程序的C+类库。本文在程序设计时选择了C+语言,用到了MFC类库。MFC完整的封装Windows API函数,而且包括具有共性的应用程序操作,如打印、状态条和工具栏等。MFC库具有与C语言为基础的Windows API开发的的Windows应用程序共存的能力。在同一程序中,用户可以同时使用MFC中的类和Windows API函数,为混合编程提供了方便。MFC提供了自动消息处理功能。MFC库将自动处理每一条Window

48、s消息,并且每一条Windows消息都被直接映射到一个进行相应处理的成员函数。MFC提供了面向对象的Windows应用程序接口,与传统的Windows API相比较,它具有以下一些明显的优势:.有效简化了编写Windows应用程序的难度。与C语言API具有相当的执行速度,使经常使用的代码量最小化。有能够直接调用任何一个API函数的能力。比C语言的Windows API更易使用。更容易使用一些强大的复杂功能的抽象概念,如ActiveX、打印、工具栏和状态栏等。2.2.3 Osip2和EXosip协议栈的分析(1)SIP协议栈的介绍Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语

49、言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。但缺点也很明显,首先就是可用性差,没有很好的api封装,使得上层应用在调用协议栈时很破碎;其次,只做到了transaction层次的协议过程解析,缺少call、session、dialog等过程的解析,这也增加了使用的难度;再次,缺少线程并发处理的机制,使得它的处理能力有限。eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。eXosip增加了call、dialog、registration、subscription等过程的解析,使得实用性更强。但是eXosip局限于UA的实

50、现,使得它用于registrar、sip server等应用时极其不容易。另外,它并没有增加线程并发处理的机制。而且只实现了音频支持,缺少对视频和其它数据格式的支持。综合来说,Osip2加上eXosip协议栈仍然是个实现Sip协议不错的选择。当然需要根据不同的需求来增加更多的内容。(2)SIP协议栈的组成协议栈大致可以分为三部分:sip协议的语法分析、sip协议的过程分析和协议栈框架。下面以osip 为例加以阐述。.ip协议的语法分析主要是osipparser2部分,目前支持RFC3261和RFC3265定义的sip协议消息,包括INVITE、ACK、OPTIONS、CANCEL、BYE、SU

51、BSCRIBE、NOTIFY、MESSAGE、REFER和INFO。不支持RFC3262定义的PRACK。遵循RFC3264关于SDP的offer/answer模式。带有SDP的语法分析。支持MD5加解密算法。支持Authorization、www_authenticate和proxy_authenticate。.ip协议的过程分析主要是osip2部分,基于RFC3261、RFC3264和RFC3265的sip协议描述过程,围绕transaction这一层来实现sip的解析。Transaction是指一个发送方和接收方的交互过程,由请求和应答组成。请求分为Invite类型和Non-Invite

52、类型。应答分为响应型的应答和确认型的应答。响应型的应答是指这个应答仅代表对方收到请求。请求经过处理后都必须返回确认型的应答。响应型的应答有1xx,确认型的应答包括2xx、3xx、4xx、5xx和6xx。一个transaction由一个请求和一个或多个响应型应答、一个确认型应答组成。Transaction根据请求的不同和发送/接收的不同可以分为四类:ict、nict、ist和nist。.Ict是指Invite client transaction,就是会话邀请的发起方。.Nict是指Non-Invite client transaction,是指非邀请会话的发起方。.Ist是指Invite se

53、rver tranaction,是指会话邀请的接收方。.Nist是指Non-Invite server transaction,是指非邀请会话的接收方。每种类型的transaction都有自己相应的状态机,Osip2协议栈根据状态机来处理所有的sip事件,所以这部分就是整个协议栈的核心。但是因为Osip2只做到transaction这一层,所以它可以忽略掉call、registration等应用的复杂性,显得相当简单,这就使得需要使用它的应用必须要自己处理应用的逻辑。必须注意的一点是,transaction的资源在Osip里是由协议栈负责释放的,但是在Osip2里改成由使用的应用负责释放。.议

54、栈框架框架并不是指代码的某一部分,而是指它的构成形式。主要有三部分:底层套接字接收/发送,模块间通信管道,上层调用api接口。Osip2并不实现底层套接字的接收/发送,由eXosip实现,现在只支持UDP的链路连接。模块间的通信管道包括:transaction的消息管道、jevent的消息管道。Transaction的消息管道是驱动其状态机的部件,通过不断的接收来自底层套接字的远端信令,或者来自上层调用的指令,根据上述的状态机制来驱动这个transaction的运转。Jevent的消息管道是eXosip实现的,用于汇报底层事件,使得调用程序能处理感兴趣的事件。上层调用的api接口大致有两类:s

55、ip协议的调用接口和sdp协议的调用接口。EXosip封装了大部分的sip协议调用接口,一般来说都不需要直接调用osip2的接口函数。接口函数很多,在这里就不详述了,函数定义请参照源代码部分的注释。(3)Osip的应用在使用oSIP前必须先初始化oSIP,主要调用函数osip_global_init()和osip_init(),具体操作代码如下:/osip_t *osip; / initialise internal element first if (0!=osip_global_init() return -1; / allocate a global osip element. if (

56、0!=osip_init(&osip) return -1;/ Osip的具体应用流程见图2.2。 图2.2 osip应用其中:.初始化oSIP和注册CALL BACK函数;.添加事件A;.执行事务;.取消事件A;.解析消息;.触发CALL BACK函数;.接收/发送消息; A:保存状态;B:接收/发送语音包。东北大学毕业设计(论文)第3章 SIP袭用的定义和框架分析第3章 SIP系统的定义和框架分析系统上位机和下位机的连接采用的是串口RS-232。上位PC机与下位89C51单片机最简单的连接是零调制3线经济型,但由于89C51单片机输入、输出电平为TTL电平,而PC机配置是RS-232C标准

57、串行接口,二者的电器范围不一致,因此,要完成上位PC机与下位单片机数据通信,必须进行电平转换。本设计采用MAX232单芯片实现89C51单片机与PC机的RS-232C标准接口通信电路。在上位机的设计中,可以使用VB6.0的MSComm控件来实现对串口的编程,以加快系统的开发进度。3.1 系统的定义随着网络通信技术的不断发展,IP技术的成熟。人们对网络的依赖性也越来越强,如何开发和利用现有的网络资源已成为人们逐渐重视的问题。Internet的许多应用都需要建立和管理一个会话,会话在这里的含义是在参与者之间的数据的交换。由于考虑到参与者的实际情况,这些应用的实现往往是很复杂的:参与者可能是在代理间

58、移动,他们可能可以有多个名字,他们中间的通讯可能是基于不同的媒介(比如文本,多媒体,视频,音频等),有时候是多种媒介一起交互。人们创造了无数种通讯协议应用于实时的多媒体会话数据比如声音,影像,或者文本。SIP(会话初始协议)和这些协议一样,同样允许使用Internet端点(用户代理)来寻找参与者并且允许建立一个可共享的会话描述。为了能够定位精确的会话参与者,并且也为了其他的目的,SIP允许创建基础的network hosts(叫做代理服务器),并且允许终端用户注册上去,发出会话邀请,或者发出其他请求。基于对SIP工作过程的具体了解,本文给出了SIP服务器的搭建,并通过客户端对服务器进行注册和访

59、问的SIP系统设计方案。本系统包含以下特点与功能:采用Visual C+6.0编程实现,在Windows2000以上操作系统实现。使用Osip2和eXosip协议栈相结合。在局域网内构造模型,可以在广域网上实现“注册”任务。操作简单,易于实现。 使用ethereal抓包工具,可以观察SIP信令实现过程。服务器可以自动更新用户信息,和记录用户访问过程。3.2 可行性分析本SIP系统是一个具有服务器和注册客户端的功能系统。可以将该系统分为服务器管理系统和用户端注册系统两个模块来做,其中客户注册模块又可以分为注册和即时通信两个子模块。服务器管理模块应具有用户名验证,再线用户动态更新,消息应答和用户状

60、态显示等功能。注册模块则应具有在线注册,消息提示,即时消息,注销用户等功能。为了实现服务器功能模块,我首先研究了一些已经在实际中应用的服务器程序的界面和源代码。例如,SIP服务器软件Ondo Sip Server,它的下载地址: 因为这个软件是用java写的,因此在安装前先装jdk,根据软件的系统配置要求,我安装了jdk1.42工具包。由于商业原因,软件的源代码不是开放的,通过老师的介绍,我在汇思通信论坛上注册了用户,里面有一些研究者自己编写的源代码。通过请教和分析我对服务器源程序有了些了解,服务器模块基本可以实现了。为了实现用户注册功能模块,我先查阅了一些网络上的资料,并研读了几篇卢政教授的文章,对SIP系统有了些了解。现在有关SIP的书籍不是很多,大部分都是IETF的文档和一些网络上的论文及论坛上发的帖子,我的初期工作就是整理和查看这写零散的资料,并加以归类分析。大体对SIP构造有了些认识后才开始考虑SIP开发工具的选择问题,很多人建议我使用Osip协议栈,但有些人说现在Exosip应用比较好,通过一段时间的学习发现这两个协议栈基本是互通的可以说Exosip是Osip的继承和发展,它里面确实有一些方法在建立SIP系统时应用比较方便,具体的在第二章已经介绍过了。有了整体方案,可以说用户功能模块实现问题

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!