- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
osip源代码框架详解
Osip协议源代码框架详解
Prepared by Mao minghua Date 2009.09.25 Reviewed by
Date
Approved by
Date
Revision History
Version Author Reviewed By Comments Issued Date 0.1 Mao minghua 描述osip协议栈的源代码框架
目录
1 符号及缩写 4
2 整体描述 4
3 Osip包的源代码框架解析 5
3.1 osip的transaction的event的产生 5
3.1.1 定时器事件的产生过程 6
3.1.2 报文触发的事件 7
3.2 osip 的transaction的event处理流程 7
3.2.1 ICT的处理流程 8
3.2.2 IST的处理流程 9
3.2.3 NICT的处理流程 9
3.2.4 NIST的处理流程 9
3.3 Osip报文的解析 10
3.3.1 sip协议报文的解析整理流程 10
3.3.2 Osip报文头的解析 12
3.3.3 uri的解析 14
3.3.4 添加一个新的协议header字段 15
3.4 osip的transaction的管理 16
3.5 osip中dialog的管理 18
4 Exosip包的源代码框架解析 19
4.1 Lib库的初始化和销毁 20
4.2 Lib库的主处理线程 23
4.2.1 2xx应答的重发处理机制 24
4.2.2 Exosip_execute执行流程 24
Exosip_read_message的处理 26
eXosip_process_response_out_of_transaction的处理流程: 29
4.2.3 eXosip_automatic_action处理流程 29
4.3 Call的处理 30
4.3.1 创建Call的第一个INVITE 30
4.3.2 INVITE的ACK应答的创建和发送 32
4.3.3 dialog内的请求的创建和发送 33
4.3.4 Dialog内answer的创建和发送 33
4.4 Register的处理 34
4.4.1 向一个服务器第一次注册 35
4.4.2 调整一个注册的注册超时时间 35
4.4.3 发送一个register注册 35
Osip源代码框架详解
符号及缩写
缩写 英文全称 中文名称 ICT Invite Client Transaction Invite类型的客户端事务 IST Invite Server Transaction Invite类型的服务端事务 NICT Not Invite Client Transaction 非Invite类型的客户端事务 NIST Not Invite Server Transaction 非Invite类型的服务端事务 IMS IP Multimedia Subsystem IP多媒体子系统 PSVT Packet service video telephony 分组域可视电话 SIP Session Initiation Protocol 会话初始协议 UDP User Datagram Protocol 用户数据报协议 URL Uniform Resource Locator 统一资源定位器 整体描述
开源代码的osip协议栈分为两个源代码包,整个协议栈采用lib库的形式,在内部没有使用到任务,采取与TCP/IP协议栈一样的策略,所以在使用上需要上层管理任务直接调用lib库提供的接口。因为在Lib库内部没有使用到像定时器、发送队列等的任务,而同时需要使用到定时器,所以在lib库的内部采用轮训遍历的方式不停的检查是否有定时器超时,这在某种程度上会浪费CPU的允许时间。同时整个lib库实现了对call, notify等的管理,为了实现重入,在应用启用多线程的条件下,内部启用的信号量和锁的使用,在下面的分析中不涉及到信号量和锁机制。
Lib库按照sip协议栈的层次关系分为两个lib包,底层的osip lib包实现对单个请求、应答、ACK的处理,包括message的解析、拼装、内容set和get,单个请求形成的transaction相关操作以及通信两端形成的一个dialog的操作。
Lib库上层的exosip lib在底层osip lib库的实现基础上,实现对sip协议整理逻辑上的管理。Exosip主要关注的是sip协议的业务流程,包括call的整体管理,notify的整体管理, publish的管理,register的管理,option的管理,refer的管理和subscription的管理,其中最主要的为call和
文档评论(0)