OSIP协议栈及其在SIP用户代理中的应用.pdf
《OSIP协议栈及其在SIP用户代理中的应用.pdf》由会员分享,可在线阅读,更多相关《OSIP协议栈及其在SIP用户代理中的应用.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第25卷第3期 中南民族大学学报(自然科学版)Vol.25 No.32006年9月 Journal of South2CentralU niversity for Nationalities(Nat.Sci.Edition)Sep.2006O SIP协议栈及其在SIP用户代理中的应用董坤朱翠涛3(中南民族大学 电子信息工程学院,武汉430074)摘要介绍了一种具有广泛应用前景、小巧而快速的开源SIP协议栈2OSIP.在详细分析OSIP协议栈的结构、特点及其运行机制的基础上,给出了基于OSIP协议栈的SIP用户代理(UA)方案.此方案利用SIP以及SDP等开放协议,完成了通讯双方实时的交互,既可
2、以扩展到即时通讯(I M)方面,也可以作为视频会议实现的基础,具有较好的兼容性.关键词SIP协议;OSIP协议栈;用户代理中图分类号TN 915文献标识码A文章编号167224321(2006)0320066204Application in User Agent Based on SIP with OSIP L ibraryD ong K unZhu CuitaoAbstractThe OSIP library is an i mplement of SIP protocol.It is little in size and code and thus could be very use2f
3、ul at developing devices based on SIP.This paper analyzes the structure,feature and use ofOSIP library in detail.A t the end of this paper,we discuss how to use OSIP library to design and i mplement user agent of SIP phone.This type of user agent is i mplemented based on open protocol including SIP,
4、SDP in order to fulfill instant infor2mation exchange.It can be applied not only to I M,but to video conference.M eanwhile it ismore compatible.KeywordsSIP protocol;OSIP;user agentDong KunM asters Candidate,College of Electronic and Information Engineering,SCU FN,W uhan 430074,Chi2naSIP协议作为下一代网络应用层的
5、核心协议,正得到越来越广泛的应用1.OSIP作为开源的SIP协议栈,以其结构简单、快速、小巧、功能齐全等特点而在SIP客户端、服务器端及嵌入式系统中具有广泛的应用前景.OSIP是 按 照RFC3261(SIP)和RFC2327(SDP)标准,使用标准C语言编写,并公开源代码.OSIP不提供高层的SIP会话控制的A P I,它主要提供一些解析SIP?SDP消息的A P I和事务处理的状态机,因而具有较大的灵活性.本文在OSIP协议栈基础上设计并实现了SIP用户代理,其结构清晰、系统功能易于扩展,可通过添加功能模块实现I M和会议功能,对基于OSIP协议栈开发SIP应用具有指导意义.1OSIP体系
6、结构OSIP主要由解析模块、工具模块和状态机模块构成,其核心是状态机模块.OSIP结构如图1所示.图1OSIP结构收稿日期20052122123 通讯联系人作者简介董坤(19792),男,硕士研究生,研究方向:计算机网络,E2mail:基金项目国家自然科学基金资助项目(30370393)1994-2007 China Academic Journal Electronic Publishing House.All rights reserved.http:/OSIP解析模块主要用于对于SIP请求与响应进行封装与解析处理,分为SIP解析、URL解析与SDP解析.SIP解析主要负责SIP标题头的解
7、析与封装.SDP解析除了对数据包中SDP会话各类型进行解析外还包含对各类型的初始化和释放操作以及对整个SDP包的一些基本操作.URL解析主要负责对SIP URL中包含的host,port,username,pass2word等信息进行解析与设置.OSIP状态机模块负责完成对某个事务状态的维持及处理.并且在特定的状态下触发相应的事件或者回调函数.OSIP协议栈的状态机主要分为4类:I NV ITE客户端事务ICT,非I NV ITE客户端事务N ICT,I NV ITE服务器端事务IST,非I NV ITE服务器端事务N IST.OSIP工具模块分为对话管理工具和SDP协商工具.对话管理工具使用
8、户能够根据RFC3261对dialog进行操作,建立相应dialog结构体.并通过对dialog结构体的添加、删除、查询实现对话管理.SDP协商工具负责向SIP终端用户提供协商codec等功能.2OSIP初始化及事件处理2.1OSIP初始化在使用OSIP栈之前必须对其进行初始化,主要使用函数OSIPinit()和OSIPglobalinit(),具体代码如下:OSIPt3OSIP;if(0!=OSIPglobalinit()return-1;if(0!=OSIPinit(&OSIP)return-1OSIP的初始化还包括将用户定义的回调函数注册到协议栈中.回调函数是由用户定义,而由OS2IP协
9、议栈来调用的函数.OSIP栈定义了大量的回调函数,提供给用户使用以实现用户需求.OSIP声明的回调函数主要包含发送消息、结束事务、发送失败及4个状态机(ICT、N ICT、IST、N IST)相关回调函数.其中ICT状态机状态转换及相关回调函数调用时序如图2所示.图2ICT状态机状态转换图图2中,cbictxxxxxx为OSIP中ICT状态机回调函数,当ICT从一种状态到另一种状态时OSIP协议栈将调用此函数.用户通过对回调函数的实现完成消息发送,结束事务等功能.以上部分回调函数在OSIP协议栈的注册代码如下:OSIPsetcbicttransporterror(OSIP,&cbicttran
10、sporterror)OSIPsetcbictinvitesent(OSIP,&cbictinvitesent)OSIPsetcbict2xxreceived(OSIP,&cbict2xxreceived)2.2事务生成在OSIP中,事务(transaction)为事件(event)的基本容器,SIP事件在对应的事务中得到处理.例如,在UA实现中,当用户发起一个注册(regiest)请求.应用程序通过解析工具首先生成一个注册消息.一旦完成注册消息的封装,就可以初始化一个新的事务.消息封装及事务生成代码如下:OSIPt3OSIP=yourglobal OSIPcontext;transactio
11、nt3transaction;sipt3sipregistermessage;sipeventt3sipevent;applicationbuildregister(&SIPregistermes276第3期董坤,等:OSIP协议栈及其在SIP用户代理中的应用 1994-2007 China Academic Journal Electronic Publishing House.All rights reserved.http:/sage);transactioninit(&transactionN ICT,OSIP,sipregistermessage)此时事务生成并存在于OSIP协议栈中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OSIP 协议 及其 SIP 用户 代理 中的 应用
限制150内