osip2协议栈原理分析以及总结

osip2协议栈原理分析以及总结

ID:41514423

大小:172.11 KB

页数:13页

时间:2019-08-26

osip2协议栈原理分析以及总结_第1页
osip2协议栈原理分析以及总结_第2页
osip2协议栈原理分析以及总结_第3页
osip2协议栈原理分析以及总结_第4页
osip2协议栈原理分析以及总结_第5页
资源描述:

《osip2协议栈原理分析以及总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、0SIP2协议栈学习总结1、0sip2协议栈介绍Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点。它的核心特性为sip协议数据的解析和事务的管理。数据包的收发、RTP流的处理等,并不在Osip2中完成。应用程序使用Osip时需要单独去实现这些模块。Osip2的缺点是没有很好的上层spi封装,使得上层应用在调用协议栈时很破碎;只做到了transaction层次的协议过程解析,缺少call、session、dialog等过程的解析,这也增加了使用的难

2、度。2、0sip2协议栈体系结构OSIP主要由解析模块、工具模块和状态机模块构成,其核心是状态机模块.OSIP结构如图所示.2.1语法解析器libosip库源码src/osipparser2为解析器源码,OS1P解析模块主要用于对S1P请求与响应进行封装与解析处理,分为SIP解析、URL解析与SDP解析完成对sip协议相关字段的构造和解析。比如,将紧凑的存储于内存buffer中的sip数据解析到清晰定义的数据结构体中,每一个字段代表sip协议屮有意义的一个头域。。STP解析主要负责SIP标题头的解析与

3、封装。SDP解析除了对数据包中SDP会话各类型进行解析外还包含对各类型的初始化和释放操作以及对整个SDP包的一些基木操作。URL解析主要负责对SIPURI44包含的host,port,username,password等信息进行解析与设置。2.2有限状态机STP状态机模块负责完成对某个事务状态的维持及处理。并且在特定的状态下触发相应的事件或者回调函数。OSIP协议栈的状态机主要分为4类:INVITE客户端事务ICT,非INVITE客户端事务NICT,INVITE服务器端事务1ST,非INVITE服务器

4、端事务NIST。2.3工具模块OSIP工具模块分为对话管理工具和SDP协商工具。对话管理工具使用户能够根据RFC3261对dialog进行操作,建立相应dialog结构体。并通过对dialog结构体的添加、删除、查询实现对话管理。SDP协商工具负责向SIP终端用户提供协商codec等功能。2.4协议栈框架框架并不是指代码的某一部分,而是指它的构成形式。主要有三部分:底层套接字接收/发送,模块间通信管道,上层调用spi接口。0sip2并不实现底层套接字的接收/发送,由eXosip实现,现在只支持UDP的

5、链路连接。模块间的通信管道包扌舌:transaction的消息管道、jevent的消息管道。Transaction的消息管道是驱动其状态机的部件,通过不断的接收来自底层套接字的远端信令,或者来自上层调用的指令,根据上述的状态机制来驱动这个transaction的运转。Jevent的消息管道是eXosip实现的,用于汇报底层事件,使得调用程序能处理感兴趣的事件。上层调用的api接口大致有两类:sip协议的调用接口和sdp协议的调用接口。EXosip封装了大部分的sip协议调用接口,一般来说都不需要直接调

6、用osip2的接口函数。接口函数很多,在这里就不详述了,函数定义请参照源代码部分的注释。2.5osip2与sip协议层次的关系事务用户层事务层[proxyCOREI[nICt

7、jNKTosip_eventURIPARSERHEADERPARSER语法解析层!osip_message_tSDPPARSER传输层字符串"tSOCKETUDPTCPSCTPF-二.•--■-__..一厶—…■LIBOSIP2开发库层次关系3、OSIP关键数据结构及其说明2.1osip结构体定义从该结构体的定义可以看IB,os

8、ip主要有两部分构成,其一是事务链表,各个状态的事务的事件都挂载在该链表上;其二是回调两数,回调函数中前三个是内部使用,也就是osip库在处理消息的过程屮,如果匹配某个状态,就执行对应的回调函数。用户可以使用这些冋调函数显示一些状态,处理一些错误等。最后一个是消息发送回调函数,也就是osip需要发送sip数据包时,就是通过该回调函数完成的。2.2transition_t:transitiont结构体定义了事务transitiontstatetypemethodnextparentstate为事务的状态

9、,type是事务对应事件的类型,method为函数指针,定义了当前状态收到typo类型事件后应该执行的动作。next和parent为构成链表和队列时的前向和后向指针。这是一个通用的结构体,也就是说,ict、ist>nict,nist都是用该结构体表示事务的。2.3osip_message_config_t:该结构体主要用于sip消息的解析hname为sip消息头的某一个域的名称,比如cseq>from>to或者via等osetheader是处理该部分的函

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。