- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Osip2和eXosip协议栈的简析
Osip2和eXosip协议栈的简析
eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。
一、介绍
Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。但缺点也很明显,首先就是可用性差,没有很好的api封装,使得上层应用在调用协议栈时很破碎;其次,只做到了transaction层次的协议过程解析,缺少call、session、dialog等过程的解析,这也增加了使用的难度;再次,缺少线程并发处理的机制,使得它的处理能力有限。
eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。eXosip增加了call、dialog、registration、subscription等过程的解析,使得实用性更强。但是eXosip局限于UA的实现,使得它用于registrar、sip server等应用时极其不容易。另外,它并没有增加线程并发处理的机制。而且只实现了音频支持,缺少对视频和其它数据格式的支持。
综合来说,Osip2加上eXosip协议栈仍然是个实现Sip协议不错的选择。当然需要根据不同的需求来增加更多的内容。
二、Osip2协议栈的组成
Osip2协议栈大致可以分为三部分:sip协议的语法分析、sip协议的过程分析和协议栈框架。
1、Sip协议的语法分析:
主要是osipparser2部分,目前支持RFC3261和RFC3265定义的sip协议消息,包括INVITE、ACK、OPTIONS、CANCEL、BYE、SUBSCRIBE、NOTIFY、MESSAGE、REFER和INFO。不支持RFC3262定义的PRACK。
遵循RFC3264关于SDP的offer/answer模式。带有SDP的语法分析。
支持MD5加解密算法。支持Authorization、www_authenticate和proxy_authenticate。
2、Sip协议的过程分析:
主要是osip2部分,基于RFC3261、RFC3264和RFC3265的sip协议描述过程,围绕transaction这一层来实现sip的解析。
Transaction是指一个发送方和接收方的交互过程,由请求和应答组成。请求分为Invite类型和Non-Invite类型。应答分为响应型的应答和确认型的应答。响应型的应答是指这个应答仅代表对方收到请求。请求经过处理后都必须返回确认型的应答。响应型的应答有1xx,确认型的应答包括2xx、3xx、4xx、5xx和6xx。一个transaction由一个请求和一个或多个响应型应答、一个确认型应答组成。
Transaction根据请求的不同和发送/接收的不同可以分为四类:ict、nict、ist和nist。
ict是指Invite client transaction,就是会话邀请的发起方。
nict是指Non-Invite client transaction,是指非邀请会话的发起方。
ist是指Invite server tranaction,是指会话邀请的接收方。
nist是指Non-Invite server transaction,是指非邀请会话的接收方。
每种类型的transaction都有自己相应的状态机,Osip2协议栈根据状态机来处理所有的sip事件,所以这部分就是整个协议栈的核心。但是因为Osip2只做到transaction这一层,所以它可以忽略掉call、registration等应用的复杂性,显得相当简单,这就使得需要使用它的应用必须要自己处理应用的逻辑。必须注意的一点是,transaction的资源在Osip里是由协议栈负责释放的,但是在Osip2里改成由使用的应用负责释放。
3、协议栈框架:
框架并不是指代码的某一部分,而是指它的构成形式。主要有三部分:底层套接字接收/发送,模块间通信管道,上层调用api接口。
Osip2并不实现底层套接字的接收/发送,由eXosip实现,现在只支持UDP的链路连接。
模块间的通信管道包括:transaction的消息管道、jevent的消息管道。Transaction的消息管道是驱动其状态机的部件,通过不断的接收来自底层套接字的远端信令,或者来自上层调用的指令,根据上述的状态机制来驱动这个transaction的运转。Jevent的消息管道是eXosip实现的,用于汇报底层事件,使得调用程序能处理感兴趣的事件。
上层调用的api接口大致有两类:sip协议的调用接口和sdp协议的调用接口。EXosip封装了大部分的sip协议调用接口,一般来说都不需要直接调用osip2的接口函数。接口函数很多
您可能关注的文档
- 挖掘装岩司机操作规程.doc
- 第十四章单元自测题附答案.doc
- 供方调查表_20110803083409274.doc
- 03-1 关系数据库标准语言SQL.ppt
- 9AUnit1-3复习.doc
- 第七章 图像处理.doc
- JavaBean+servlet+jsp真分页.doc
- 体育教师入编考试4.doc
- (人教新课标)二年级美术下册课件_得奖了_1.ppt
- 中职机械基础课件10.3.ppt
- (外研2019版)英语选择性必修第一册 Unit6 全单元教案.docx
- (人教2019版)数学选修1 第3章 《圆锥曲线的方程》大单元教学设计.docx
- (外研2019版)英语选择性必修第一册全册单词短语句型默写.docx
- (冀教2024版)英语七年级上册Unit 6全单元教学课件.pptx
- 七年级历史上册全册课时知识点总结(统编版2024新教材).docx
- (统编版2024)历史七上 第4单元 三国两晋南北朝时期 单元解读课件.pptx
- (外研2019版)英语选择性必修第二册 Unit4 全单元教案.docx
- 2025《新经典基础日语》开学第一课 课件.pptx
- 2025(沪科版)数学九年级上册 第21章《二次函数与反比例函数》考点复习课件.pptx
- 2025(沪科版)数学九年级上册 第23章《解直角三角形》考点复习课件.pptx
文档评论(0)