欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    OSIP协议栈及其在SIP用户代理中的应用.pdf

    • 资源ID:74648707       资源大小:218.51KB        全文页数:4页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    OSIP协议栈及其在SIP用户代理中的应用.pdf

    第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等开放协议,完成了通讯双方实时的交互,既可以扩展到即时通讯(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 use2ful 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,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协议作为下一代网络应用层的核心协议,正得到越来越广泛的应用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体系结构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标题头的解析与封装.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协商工具.对话管理工具使用户能够根据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协议栈来调用的函数.OSIP栈定义了大量的回调函数,提供给用户使用以实现用户需求.OSIP声明的回调函数主要包含发送消息、结束事务、发送失败及4个状态机(ICT、N ICT、IST、N IST)相关回调函数.其中ICT状态机状态转换及相关回调函数调用时序如图2所示.图2ICT状态机状态转换图图2中,cbictxxxxxx为OSIP中ICT状态机回调函数,当ICT从一种状态到另一种状态时OSIP协议栈将调用此函数.用户通过对回调函数的实现完成消息发送,结束事务等功能.以上部分回调函数在OSIP协议栈的注册代码如下:OSIPsetcbicttransporterror(OSIP,&cbicttransporterror)OSIPsetcbictinvitesent(OSIP,&cbictinvitesent)OSIPsetcbict2xxreceived(OSIP,&cbict2xxreceived)2.2事务生成在OSIP中,事务(transaction)为事件(event)的基本容器,SIP事件在对应的事务中得到处理.例如,在UA实现中,当用户发起一个注册(regiest)请求.应用程序通过解析工具首先生成一个注册消息.一旦完成注册消息的封装,就可以初始化一个新的事务.消息封装及事务生成代码如下:OSIPt3OSIP=yourglobal OSIPcontext;transactiont3transaction;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协议栈中,接下来需要将注册消息交给N ICT有限状态机处理,即生成注册消息触发事件并将消息触发事件加入到对应N ICT事务中去.实现代码如下:sipevent=OSIPnewoutgoingsipmessage(sipt3sipregistermessage)sipevent-transactionid=transaction-trans2actionid;transactionaddevent(transaction,SIPevent);之后整个事件将由OSIP协议栈处理.需要注意的是一些事件(例如状态机超时)并不由应用程序添加,而由状态机自身添加.2.3事件处理有限状态机通过函数transactionexecute()在事务中对事件依次进行处理.事件处理代码如下:w hile(1)se=(SIPeventt3)fifoget(transaction-transactionff);if(se=NULL)sthreadexit();if(transactionexecute(transaction,se)1)sthreadexit();3SIP用户代理的设计与实现3.1总体方案设计利用OSIP协议栈实现基于SIP协议的网络电话UA,主要包括SIP电话的注册、呼叫、挂断、接听等功能.系统的总体软件架构如图3所示.图3系统总体软件结构图U I层:用户界面层,主要负责接受用户输入交给底层处理,并向用户反馈底层信息.CORE层:主要响应U I层调用,根据用户请求类型,调用底层功能并形成SIP消息交由TRAN S2ACT I ON F IFO处理.同时实现OSIP的回调函数,并将结果传送给U I层体现.负责控制TRAN S2PORT层通信,对TRAN SPORT层所接受数据进行解析.并且负责调用工具模块功能实现对话管理、SDP协商等功能.OSIP层:协议栈层.提供状态机模块,解析模块,工具模块供其他层调用.TRAN SPORT:提供W I N SOCK的通讯层.负责数据包可靠的接受与发送.3.2U I层实现我们利用VC+6.0开发工具,使用M FC(M i2crosoft foundation classes)实现了U I界面层,界面如图4所示.图4SIP phone界面图界面左上部控件用于输入被呼叫URL,底部静态文本控件主要负责信息提示功能.向用户反映SIP phone实时状态,右边按钮对应于呼叫,接听与挂断功能.U I层调用CORE层函数实现U I消息通知,唤起CORE层动作.CORE层通过响应OSIP有限状态机回调函数实现向U I层的消息发送功能.3.3CORE层实现CORE层是该系统的核心层.它不仅负责响应用户的操作,将用户的请求转换成为对OSIP层的调用.并响应OSIP的回调函数,转成U I消息到U I层体现.CORE层还负责相关的D I ALOG管理,控制TRAN SPORT层的通讯,实现媒体流的控制.我们定义了struct core作为CORE的控制核心,通过对其中各成员的操作,完成CORE层功能.struct core的定义如下:structuacoret OSIPt3config;int ti mersdelete;sthreadt3ti mers;#ifdef OSIPM T86中南民族大学学报(自然科学版)第25卷 1994-2007 China Academic Journal Electronic Publishing House.All rights reserved.http:/smutext3lockdialogaccess;?做线程互斥用#endiflistt3dialogs;?用来管理对话listt3audiosctxt;listt3videosctxt;listt3applicationsctxt;udptransportlayert3udptl;?udp传输层tcptransportlayert3tcptl;urlt3outboundproxy;?外界代理urlurlt3registrar;?注册服务器的urlurlt3proxy;?代理的url uacoreOSIPt为所有事务的容器,定义了CORE所发起的4种状态机事务的链表,实现CORE层对事务的管理.int ti mersdelete为CORE层定时器管理线程启动开关,1为关闭定时器管理线程,0为开启,因为本方案TRAN SPORT层采用UDP协议,ti mersdelete设置为0.sthreadt3ti mers为定时器管理线程句柄.smutext3lockdialogac2cess为多线程环境下的线程互斥体,listt3di2alogs为CORE利用D I ALOG工具生成的所有dia2log的链表.listt3audiosctxt,listt3videosctxt,listt3applicationsctxt分别定义了底层transprt层音频,视频流及其他应用的本地及远端ip地址,端口等信息.SIP信令在TRAN SPORT层的传输,按TCP,UDP分配不同的输入、输出套接字及端口并封装在udptransportlayert,tcptransportlayert结构体中2,3.在系统启动过程中,CORE层首先根据用户配置对系统全局变量进行赋值操作,然后向底层OSIP协议栈注册回叫函数,并启动数据包监听线程.一旦接受到数据包,则调用协议栈功能生成相应事件,并判断该事件的处理事务是否存在,若存在则将事件放入该事务中,否则生成新的事务,并启动事务执行线程.同时CORE层根据用户动作生成相应事件交由协议栈处理.OSIP层通过状态机回调函数与CORE通信.向CORE通告事件的发生及各个事务所处的状态,CORE调用OSIP协议栈A P I发起OSIP动作(如添加事件,事件处理).CORE通过对dialog链表的添加、查找与释放完成对SIP呼叫的管理.CORE还负责在协议栈回调函数中实现与TRAN SPORT层的交互,将发送数据交由TRAN SPORT层发送,并对TRAN SPORT层接受数据进行解析.3.4OSIP层实现OSIP层通过编译生成OSIP动态库并链接到应用程序中得以实现.上层通过协议栈A P I调用OSIP各模块功能以实现需求.3.5trasport层实现在本方案中,传送层的设计基于UDP无连接的w insock套接字.对于接受端(一般为服务器端),首先用socket函数建立套接字,再通过bind函数把这个套接字和准备接受数据的IP地址信息绑定在一起,然后就可以利用recfrom()接受网络上任何一台机器所发的数据报.对于发送端,建立套接字后调用sentto()函数即可进行数据包发送.在服务器端或者客户端结束收发数据时,因为数据报套接字没有连接,所以只需在套接字句柄上调用closesocket()函数来释放套接字资源即可4.在具体实现中利用select模型实现了服务器套接字的阻塞等待.4结束语一个完整的SIP电话包含了SIP用户代理及音频处理工具两部分,本文介绍了基于OSIP协议栈的SIP电话用户代理部分的设计与实现.从上文可以看出OSIP协议栈各个模块相对清晰、独立,提供了较为完善的A P I.因此,具有较大的灵活性.本设计的实现对OSIP协议栈的应用将起到一定的促进作用.参考文献1Camarillo G.SIP揭密M.北京:人民邮电出版社,2003:632112.2李琳,王新刚,柴乔林.SIP协议在开放的VO IP模型中的实现J.计算机工程,2002,28(8):2222226.3GurbaniV,Sun Xianhe.Extensions to an Internet sig2naling protocol to support telecommunication servicesJ.IEEE Communications M agazine,2004,38(10):53259.4汪晓平,种军.V isual C+网络通信协议分析与应用实现M.北京:人民邮电出版社,2003:2432257.96第3期董坤,等:OSIP协议栈及其在SIP用户代理中的应用 1994-2007 China Academic Journal Electronic Publishing House.All rights reserved.http:/

    注意事项

    本文(OSIP协议栈及其在SIP用户代理中的应用.pdf)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开