资源描述:
《sip协议的研究与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SIP协议的研究与实现第15卷第2期Vo1.15No.2北京电子科技学院JournalofBeijingElectronicScienceandTechnologyInstitute2007年6月Jun.2007SIP协议的研究与实现冯雁,刘芳(北京电子科技学院,北京100070)摘要:近年来,SIP协议得到了广泛应用,本文对SIP协议进行了研究,并在oSIP源码基础上设计和开发了一SIP协议栈,该协议栈提供快速产生SIP消息的API,对SIP消息进行解析和处理的简单API以及生成和解析一些SIP扩展信令(如INFO,re—INVITE)的简单API.关键词:SIP;oSIP;SDP;T
2、ransaction中图分类号:TN915.04文献标识码:A文章编号:1672—464X(2007)02—0085—03ResearchandRealizationofS1FFENGYah,LIUFangBeiingElectronicandScienceTechnologyInstitute,Being]00070,ChinaAbstract:Recently,theSIPprotocolhasbeenwidelydeployed.ThispaperfocusesontheresearchoftheSIPprotoco1.AndaSIPstackisdesignedandrealiz
3、edbasedonoSIPwhichistheopensourceofaSIPprotocolstack.TheproposedprotocolstackprovidesAHswhichcangenerateSIPmessagesquickly,canpameSIPmessages,andcanpamesomeextendedSIPmessagessuchasINFO,re—INVITE.Keywords:SIP;oSIP;SDP;TransactionSIPm(SessionInitiationProtocol,会话初始化协议)作为VoIP(VoiceOverIP)的信令协议之一,应用
4、日渐广泛.本文主要是对SIP协议进行研究,在开源协议栈oSIPt3J基础上.使用vc++6.0设计和实现了一个功能较全面,应用较简单的SIP协议栈.该协议栈支持Windows2000/XP/2003.1SIP协议简介SIP协议的最初版本是1999年发布的RFC2543,目前最新版本是2002年6月发布的RFC3261.SIP协议的主要功能是控制会话的建立,维持和终止.会话涉及的范围很广.可以是IP电话呼叫,也可以是IP多媒体会议等.SIP是一个基于文本的客户,服务器(clienl/server)模式的协议,利用请求响应机制实现会话控制阁.SIP协议本身只能传送会话控制信息,它必须与其它协
5、议(如SDPm(SessionDescriptionProtocol,会话描述协议))配合才能提供完整的信令功能.2SIP协议栈的设计与实现本文的SIP协议栈是在开源协议栈oSIP基础上设计和实现的,提供快收稿日期:2006—12一O1速产生SIP消息的API,对SIP消息进行解析和处理的简单API以及生成和解析一些SIP扩展信令(如INFO,I_e—INVITE)的简单API.2.1oSIP协议栈简介oSIP是按照RFC3261(SIP)和RFC2327(SDP),使用c语言编写的SIP协议栈,支持多种操作系统,如Windows,Linux.VxWorks等oSIP协议栈主要提供解析S
6、IP消息的API和事务(transaction)处理的状态机州,可以用来开发一些基于SIP的应用.如SIPUA(UserAgent,用户代理),SIPProxy等.oSIP协议栈分为三大模块,分别是状态机模块,解析器模块和工具模块.如图l所示.①状态机模块状态机模块主要功能包括uA对接收到的事务(transaction)进行响应,同时完成对该事务的状态记录,并图1oSIP协议栈?86?北京电子科技学院2007征在特定状态下触发相应事件和回调(callback)函数哪.oSIP中状态机包括四种,分别是ICT(InviteClientTransaction),NICTfNon—InviteC
7、lientTransaction),IST(InviteServerTransaction)和NIST(Non—InviteServerTransaction)o②解析器模块解析器模块主要完成对SIP消息头域的解析,对SIP消息体SDP的解析以及对SIPURI的解析.③工具模块工具模块主要是提供一些进行会话参数(如媒体格式)协商的API和对dialog(一个dialog对应一个会话或呼叫)进行管理的API.虽然oSIP各模块相对独立