OSIP与EXOSIP源代码框架深度解析

需积分: 13 6 下载量 77 浏览量 更新于2024-07-26 收藏 1.13MB DOC 举报
"osip源代码框架详解" 本文将深入探讨OSIP(Open SIP)协议栈的源代码框架,以及其扩展包EXOSIP的源代码结构。OSIP是一个开源的SIP(Session Initiation Protocol)实现,用于构建VoIP(Voice over Internet Protocol)和其他多媒体通信系统。 ### 1. 符号及缩写 - ICT: InviteClientTransaction - 邀请客户端事务 - IST: InviteServerTransaction - 邀请服务器事务 - NICT: Non-InviteClientTransaction - 非邀请客户端事务 - NIST: Non-InviteServerTransaction - 非邀请服务器事务 ### 2. 整体描述 OSIP库主要负责处理SIP消息的解析、编码和事务管理。它包括了对各种SIP事务(如ICT、IST、NICT、NIST)的处理逻辑,以及对话(Dialog)的管理。EXOSIP是OSIP的扩展,增加了高级功能,如库的初始化、销毁、主处理线程、呼叫和注册处理等。 ### 3. Osip包的源代码框架解析 #### 3.1 osip的transaction的event的产生 - **定时器事件**:通过设置定时器来触发特定的事件,例如处理超时情况。 - **报文触发的事件**:接收到SIP消息时,根据消息类型生成相应事件,如INVITE、ACK、CANCEL等。 #### 3.2 osip的transaction的event处理流程 - **ICT处理**:接收INVITE消息后启动,处理响应并发送ACK。 - **IST处理**:服务器端接收INVITE,负责处理2xx以外的响应。 - **NICT处理**:非INVITE请求的客户端事务,如REGISTER、MESSAGE等。 - **NIST处理**:非INVITE请求的服务器事务,处理非INVITE响应。 #### 3.3 Osip报文的解析 - **SIP协议报文解析**:解析消息头和消息体,验证消息格式。 - **报文头解析**:解析To、From、CSeq、Call-ID等头部信息。 - **URI解析**:解析SIP URI,如 sip:user@domain.com。 - **添加新协议header**:支持自定义SIP头字段的添加和处理。 #### 3.4 osip的transaction的管理 管理事务的生命周期,包括事务的创建、状态更新和销毁。 #### 3.5 osip中dialog的管理 对话管理涉及建立、维护和终止通话会话。 ### 4. Exosip包的源代码框架解析 #### 4.1 Lib库的初始化和销毁 - 初始化:配置库参数,设置回调函数,初始化内存管理等。 - 销毁:清理内存,释放资源。 #### 4.2 Lib库的主处理线程 - **2xx应答的重发处理**:确保收到的2xx响应被正确处理和转发。 - **Exosip_execute执行流程**:处理待处理的消息队列。 - **eXosip_read_message处理**:读取并解析接收到的SIP消息。 - **eXosip_process_response_out_of_transaction**:处理不在事务中的响应。 - **eXosip_automatic_action**:自动执行基于策略的动作,如超时处理。 #### 4.3 Call的处理 - **创建Call的第一个INVITE**:启动呼叫过程。 - **INVITE的ACK应答的创建和发送**:确认接收的2xx响应。 - **Dialog内请求的创建和发送**:在对话中发起新的请求,如UPDATE、BYE。 - **Dialog内answer的创建和发送**:发送媒体协商的响应。 #### 4.4 Register的处理 - **首次注册**:向注册服务器发送第一个REGISTER请求。 - **调整注册超时时间**:根据需求更改注册间隔。 - **发送register注册**:周期性发送或重新发送REGISTER请求以保持在线状态。 ### 结论 OSIP及其扩展EXOSIP提供了丰富的功能来处理SIP协议,包括事务管理、消息解析、对话控制和呼叫处理等。理解其源代码框架有助于开发人员更好地定制和优化SIP应用程序。