SIP协议相关文件
SIP协议主要消息 (3)

SIP协议主要消息协议名称:SIP协议主要消息一、引言本协议旨在详细描述SIP(Session Initiation Protocol,会话初始协议)的主要消息,包括其定义、结构和功能。
SIP是一种用于建立、修改和终止多媒体味话的应用层协议,广泛应用于VoIP(Voice over Internet Protocol,互联网语音通信)和实时通信系统中。
二、协议概述SIP协议主要通过请求和响应的方式进行通信,使用文本格式的消息进行交互。
SIP消息由起始行、头部字段和消息体组成,其中起始行包含请求或者响应的方法、URI(Uniform Resource Identifier,统一资源标识符)和SIP版本信息。
头部字段包含了关于消息的元数据,而消息体则携带了具体的数据内容。
三、主要消息类型1. INVITE:该消息用于建立会话,发起方向被叫方发送INVITE请求,包含了被叫方的SIP地址和媒体描述信息。
2. ACK:该消息用于确认INVITE请求的接收,发起方在收到200 OK响应后发送ACK请求,表示会话建立成功。
3. BYE:该消息用于终止会话,可以由任意一方发送,对方收到BYE请求后会发送200 OK响应,表示会话终止。
4. CANCEL:该消息用于取销未完成的请求,普通用于取销INVITE请求,以便重新发起新的请求。
5. REGISTER:该消息用于注册用户地址,用户向服务器发送REGISTER请求,以便在服务器上注册自己的SIP地址。
6. OPTIONS:该消息用于查询服务器的能力,普通用于检测对方是否在线或者支持特定功能。
7. INFO:该消息用于传输非实时信息,如传输DTMF(Dual-tone Multi-frequency)信号等。
四、消息格式和示例1. INVITE消息格式:```INVITE sip:alice@example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhdsMax-Forwards: 70To: <sip:alice@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314159 INVITEContact: <sip:bob@example>Content-Type: application/sdpContent-Length: 142v=0o=bob 2890844526 2890844526 IN IP4 192.0.2.1s=-c=IN IP4 192.0.2.1t=0 0m=audio 49172 RTP/AVP 0a=rtpmap:0 PCMU/8000```2. ACK消息格式:```ACK sip:alice@example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhds Max-Forwards: 70To: <sip:alice@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314159 ACKContact: <sip:bob@example>Content-Length: 0```3. BYE消息格式:```BYE sip:alice@example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhds Max-Forwards: 70To: <sip:alice@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314160 BYEContact: <sip:bob@example>Content-Length: 0```4. CANCEL消息格式:```CANCEL sip:alice@example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhds Max-Forwards: 70To: <sip:alice@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314159 CANCELContact: <sip:bob@example>Content-Length: 0```5. REGISTER消息格式:```REGISTER sip:example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhds Max-Forwards: 70To: <sip:bob@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314161 REGISTERContact: <sip:bob@example>Expires: 3600Content-Length: 0```6. OPTIONS消息格式:```OPTIONS sip:example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhds Max-Forwards: 70To: <sip:alice@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314162 OPTIONSContact: <sip:bob@example>Content-Length: 0```7. INFO消息格式:```INFO sip:alice@example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhds Max-Forwards: 70To: <sip:alice@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314163 INFOContact: <sip:bob@example>Content-Type: application/dtmf-relayContent-Length: 18Signal=1Duration=100```五、总结SIP协议的主要消息包括INVITE、ACK、BYE、CANCEL、REGISTER、OPTIONS和INFO。
电信SIP规范(协议细则)

1 范围......................................................... 3 2 编制说明 ..................................................... 3 3 SIP 及其扩展规范 .............................................. 4
中国电信 SIP规范
用户终端 代理服务 SIP-ISUP B2BUA
UA
器
互通单元
---
---
---
---
注册服务 器 --- 1.
2.
说明
本章主要描述 User Agent 的行为,但由于实现 proxy 功能的实体在处理消息时 可能转而承担 UAC 或 UAS 的角色,因此 16 章 中有些内容的描述也参照 了本章。但本章中的某些 细节性规定并不适合 UAC 或 UAS 在第 16 章中 的应用场合。 根据第 1 点的说明,本章 中对 Proxy 的要求实质上 是对实现 Proxy 功能的实 体在转而承担 UAC 或 UAS 角色时的要求,因此 本章内容对此种应用场合 下的 UAC 或 UAS 而言可 能都是部分要求。为了说 明上的方便,本章内容对 于“Proxy”只存在“要求” 或“不适用”,如果有特 殊考虑将在“说明”一栏 中进行解释
5.1 invite 消息................................................................................................................ 66 5.2 ACK........................................................................................................................67 5.3 BYE ........................................................................................................................ 67 5.4 CANCEL ................................................................................................................. 69 5.5 REGISTER............................................................................................................... 69 5.6 OPTIONS................................................................................................................. 70 5.7 INFO....................................................................................................................... 71 5.8 PRACK.................................................................................................................... 72
SIP通信协议范文

SIP通信协议范文会话初始化协议(Session Initiation Protocol, SIP)是一种基于文本的通信协议,用于创建、修改和终止多媒体会话,例如语音和视频通话、实时聊天和在线游戏。
它是互联网工程任务组(IETF)的标准协议,并且在IP网络中广泛使用。
SIP的设计目标是提供一种灵活、可扩展的协议,使通信系统能够适应新兴的通信应用和技术。
它具有以下几个重要特点:1.简单性:SIP使用明确的文本格式,并借鉴了超文本传输协议(HTTP)的语法。
这使得它易于实现和理解,并且可以在不同系统之间进行交互。
2.独立性:SIP与底层网络无关,可以与任何支持IP协议的网络一起使用。
它可以在多种网络上建立会话,包括本地局域网(LAN)、广域网(WAN)和无线网络。
3.可伸缩性:SIP的可扩展性非常好,可以支持不同的通信应用和服务。
它可以与其他协议结合使用,例如实时传输协议(RTP)用于媒体传输,以及实时传输控制协议(RTCP)用于流控制。
SIP的工作原理如下:3.会话协商:一旦两个用户的位置信息确定,他们可以开始进行会话协商。
这包括确定媒体类型(例如语音、视频或实时文本)、编解码器、传输协议和其他参数。
用户之间可以通过SIP消息进行协商,并且可以协商多个媒体流的传输。
4.会话管理:一旦会话协商完成,用户之间可以直接进行媒体传输。
SIP控制消息用于管理会话,包括添加或删除媒体流、改变媒体传输参数、暂停和恢复等。
5.会话终止:当用户想要结束会话时,他们可以向服务器发送终止请求。
服务器在收到请求后将其转发给对方,双方的会话状态被清除,并且相关资源被释放。
总结起来,SIP是一种用于创建、修改和终止多媒体会话的通信协议。
它具有简单性、独立性、可伸缩性和适用性等特点,并且可以在各种网络环境下使用。
SIP通过注册、定位、会话协商、会话管理和会话终止等步骤实现会话的建立和管理。
sip协议register报文详解

sip协议register报文详解SIP协议的REGISTER报文是一种用于注册用户代理(UA)地址的请求消息。
当用户代理(UA)希望在SIP网络中注册其地址时,它会发送一个REGISTER请求消息到SIP注册服务器。
REGISTER请求消息的格式如下:```phpREGISTER sip:<registrar_server> SIP/Via: SIP//UDP<client_IP>:<client_port>;branch=z9hG4bKkdjuw5asdh234 From: <user_URI>To: <user_URI>Contact: <user_URI>Max-Forwards: 70Expires: <seconds>Authorization: <credentials>Content-Length: <length> (如果包含消息体)<message_body> (如果存在)```以下是REGISTER请求消息中各个字段的解释:`sip:<registrar_server>`:这是SIP注册服务器的地址。
`<registrar_server>`是SIP注册服务器的域名或IP地址。
`Via`:这是一个可选的字段,用于指定请求传递的路径。
它包含了一系列的SIP代理和网关的地址和端口信息,以及一个唯一的branch参数,用于标识该请求的唯一性。
`From`:该字段包含了发起请求的用户代理的地址。
它通常是一个SIP URI,表示发起请求的用户代理的身份。
`To`:该字段包含了接收请求的用户代理的地址。
它通常是一个SIP URI,表示接收请求的用户代理的身份。
`Contact`:该字段包含了发起请求的用户代理的地址。
它通常是一个SIP URI,表示发起请求的用户代理的直接联系地址。
SIP协议相关资料(doc 9页)

SIP协议相关资料(doc 9页)Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。
eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。
一、介绍Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。
但缺点也很明显,首先就是可用性差,没有很好的api封装,使得上层应用在调用协议栈时很破碎;其次,只做到了transaction 层次的协议过程解析,缺少call、session、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由一个请求和一个或多个响应型应答、一个确认型应答组成。
SIP相关的协议

一、SIP: Session Initiation Protocol RFC 3261 二、SDP: Session Description Protocol RFC 2327 三、RTP:Real-time Transport Protocol : RFC 1889 四、MEGACO:Media Gateway Control Protocol(ITU-T H.248) : ( ) RFC 3015 其他: 、 其他:tcp、udp、MGCP、rtcp等 、 、 等
SIP相关资料链接
The Internet Engineering Task Force / 中国通信标准化协会 TC1:IP与多媒体 / International Packet Communications Consortium
开源SIP协议栈
sipX
SVN : /viewsvn/
sipX sipX是一个SIP系统,由SIPFoundry开发。 SIP SIPFoundry sipX是从reSIProcate分离出来的,sipX除了 包括SIP stack外,还包括了sipXphone, sipXproxy, sipXregistry等等...,由它们构成了 完整的SIP系统,而且sipx还支持嵌入式系统, 各个模块可以按需取舍。
开源SIP协议栈
ReSIProcate
SVN : /viewsvn/resiprocate/main/sip/
ReSIProcate同样也是由SIPFoundry开发, ReSIProcate最开始起源于Vocal,由于Vocal 开始只支持rfc3254,为了支持最新的 rfc3261,ReSIProcate诞生了,但现在, ReSIProcate已经成为一个独立SIP协议栈了, 它十分稳定,并且很多商业程序都在使用。
SIP协议介绍(RFC3261)

》由代理服务器并行分发的请求,其Cseq值相同。
20
主要头部字段
Via 》请求消息经过的路径,用于响应的发送。响应和请求必须走相同的路
径。Branch参数用于识别事务。
Max_Forward 》请求的最大转发次数 Contact 》后续请求发送的目的地 Record_Route 》用于标识prxoy,指定后续消息必须经过该proxy Route
17
SIP消息的格式
SIP 消 息= 起 始 行 *消 息 头 部(1 个 或 多 个 头 部) CRLF ( 空 行 ) 〖 消息体〗
18
SIP消息格式
请求的起始行 Request-Line = Method SP Request-URI SP SIP-Version CRLF 响应的起始行 Status-Line = SIP-Version SP Status-Code SP Reason-Phrase CRLF
协收到的协求消息协行协和协理后协协协其他的服协用于存放sip协重定向服协器或proxy提供用协一或者11sip接收sip协求把协求中的原地址映射协零个重定向服协器不协起自己的呼叫不协送协3xx协协行重定向12sipsipproxyserverredirectserverregisterserverserver可共存于一协协也可以分布在不同的物理协sip服协器完全是协协件协协可以根据需要proxyserverredirectserver角色不是固定不协的一个ua叫中可以是uac也可以是uasserver是一个sip协公共协源协信息咨协所采用的协协不是sip而是其lightdirectoryaccessprotoco呼叫和媒控制信息同协协送15sip协送和接收sip消息匹配事协状proxy外每个sip16sip2xx成功3xx重定向6xx全局协协ack用于invite的register注册17sipsip事协包括一协求和其中协包括invite事协协包括invite协求的2xxsipsip协求的起始行requestlinemethodsprequesturispsipversioncrlfsipversionspstatuscodespreasonphrasecrlf20协求的协协接收者totagfromtagcallid特定邀协或注的唯一协协cseq相同的callid协但不同协求方法协部或消息cseq序号invite协求相同bye协求的cseq协协大于invitecseq协相同
sip标准检验指导书

sip标准检验指导书SIP标准检验指导书。
一、引言。
SIP(Session Initiation Protocol)是一种用于建立、修改和终止会话的通信协议,它在VoIP(Voice over Internet Protocol)和多媒体会话控制方面发挥着重要作用。
SIP协议的标准化和检验对于保障通信网络的稳定性和安全性具有重要意义。
本指导书旨在为SIP标准的检验提供指导和参考。
二、SIP协议的基本原理。
SIP协议是一种应用层协议,其基本原理包括会话的建立、修改和终止。
在建立会话时,SIP协议通过INVITE消息向对方发送邀请,对方通过响应消息进行确认。
在会话过程中,可以通过SIP消息进行会话参数的修改。
而在终止会话时,SIP协议通过BYE消息进行终止请求。
了解SIP协议的基本原理是进行标准检验的基础。
三、SIP标准的检验内容。
1. SIP消息格式的检验,包括SIP消息的结构、头部字段、消息体等内容的格式是否符合标准要求。
2. SIP会话的建立和终止检验,检验SIP协议在会话建立和终止过程中的行为是否符合标准规范。
3. SIP协议的安全性检验,检验SIP协议在身份验证、加密、防护等方面的安全性是否符合标准要求。
4. SIP协议的性能检验,检验SIP协议在传输效率、响应速度、负载能力等方面的性能是否符合标准要求。
四、SIP标准的检验方法。
1. 抽样检验,通过抽取一定数量的SIP消息进行格式、内容、安全性等方面的检验,以验证SIP协议的符合性。
2. 场景模拟检验,通过模拟实际通信场景,对SIP协议的建立、修改、终止等行为进行检验,以验证其在实际应用中的稳定性和可靠性。
3. 压力测试,通过模拟大量并发会话、异常消息等情况,对SIP协议的性能进行检验,以验证其在高负载情况下的表现。
五、SIP标准的检验指导。
1. 对于SIP消息格式的检验,应当关注消息头部字段的完整性、正确性,消息体的编码格式等方面,可以借助抓包工具、格式化工具进行检验。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。
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的接口函数。
接口函数专门多,在那个地点就不详述了,函数定义请参照源代码部分的注释。
三、eXosip协议栈的分析eXosip是Osip2协议栈的封装和调用。
它实现了作为单个sip 终端的大部分功能,如register、call、subscription等。
EXosip使用UDP socket套接字实现底层sip协议的接收/发送。
同时封装了sip消息的解释器。
EXosip使用定时轮循的方式调用Osip2的transaction处理函数,这部分是协议栈运转的核心。
透过添加/读取transaction 消息管道的方式,驱动transaction的状态机,使得来自远端的sip信令能汇报给调用程序,来自调用程序的反馈能通过sip信令回传给远端。
EXosip增加了对各个类型transaction的超时处理,确保所有资源都能循环使用,可不能被耗用殆尽。
EXosip使用jevent消息管道来向上通知调用程序底层发生的事件,调用程序只要读取该消息管道,就能获得感兴趣的事件,进行相关的处理。
EXosip里比较重要的应用有j_calls、j_subscribes、j_notifies、j_reg、j_pub、osip_negotiation和authinfos。
J_calls对应呼叫链表,记录所有当前活动的呼叫。
J_reg对应注册链表,记录所有当前活动的注册信息。
Osip_negotiation 记录本地的能力集,用于能力交换。
Authinfos记录需要的认证信息。
四、总结本文是从使用的角度去阐述分析Osip2和eXosip协议栈,并不涉及专门多的细节,需要进一步了解协议栈的结构和实现,可参考《osip》一文。
分析了开源SIP协议栈oSIP的运行机制。
在oSIP基础上,设计实现了一个基于S3C2410A微处理器平台,使用WinCE操作系统的嵌入式SIP 终端。
1、引言目前,IETF的SIP协议(Session Initiate Protocol, 会话初始协议)已获得业界越来越多的关注和支持,正逐步成为下一代网络(NGN)中的核心协议之一[1]。
SIP协议相对简单、易于实现、可扩展性强、更适合IP网络,被广泛的用于VoIP系统的组建[2]。
oSIP及其扩展eXosip作为开源的SIP协议栈,以其结构简单、功能丰富、易于移植等优点成为在嵌入式系统上构建VoIP应用的首选。
本文分析了oSIP协议栈的运行机制,设计实现了将oSIP协议栈移植到嵌入式操作系统并以此为基础开发嵌入式SIP客户端的方案。
2、 oSIP协议栈2.1 SIP协议SIP采纳C/S模式的工作方式,包含两类元素:SIP用户代理(User Agent, UA)和SIP服务器。
依照用户代理在会话中扮演的角色不同又可分为用户代理客户机(User Agent Client, UAC)和用户代理服务器(User Agent Server, UAS),前者发起呼叫请求,后者响应呼叫请求。
2.2 oSIP协议栈oSIP是遵循IETF标准,使用ANSI C编写,源代码开放的SIP协议栈。
oSIP要紧有下列优点:(1)结构小巧简单,只有400K左右,适合在嵌入式系统上应用;(2)可移植性好,已被成功的应用于Solaris、HP Unix、VxWorks、Windows和GNU/Linux[3] (2.2.16和2.4.7)等系统中;(3)工作稳定、兼容性强。
oSIP要紧由解析模块、工具模块和状态机模块构成,其核心是状态机模块[4](如图1所示)。
图1 oSIP结构解析模块完成对SIP请求和响应进行封装与解析处理。
解析模块又可分为SIP解析、SDP解析与URL解析。
工具模块要紧提供一些处理工具用于对话治理和SDP协商。
状态机模块负责对某个事务(如注册过程、呼叫过程等)状态的维持及处理,并在特定的状态下触发响应的事件或回调函数。
依照RFC描述中关于SIP协议事务层的定义,oSIP协议栈有4种状态机:客户端邀请事务(ICT),客户端非邀请事务(NICT),服务器端邀请事务(IST),服务器端非邀请事务(NIST)。
前两种状态机是由客户端发起的,后两种状态机是由服务器发起的,这4种状态机涵盖了SIP的各种事务类型。
其中ICT(如图2所示)是 SIP客户端中最常见的事务。
图2 ICT状态机状态转换图图2中,cb_ict_xxx_xxx表示oSIP中ICT状态机回调函数,当ICT从一种状态到另一种状态时oSIP协议栈将调用此函数。
oSIP专注于SIP底层解析,这使得它具有专门高的效率。
但另一方面,由于没有提供高层的SIP会话操纵API,使得上层应用在调用协议栈时专门破裂,降低了易用性。
为此oSIP的开发者们又在oSIP的基础上开发了eXosip。
eXosip是oSIP的扩展,它部分封装了oSIP协议栈,使得它更容易被使用。
eXosip实现了作为单个SIP终端的大部分功能。
3、嵌入式SIP终端系统体系结构3.1 嵌入式SIP终端的功能嵌入式SIP终端是一个运行在嵌入式操作系统上的SIP用户代理,要紧包括SIP电话的注册、呼叫、接听、挂断等功能。
它直接与用户交互,接收输入信息,进行格式检查,依照用户的动作初始化SIP消息,同时得到本地语音媒体接口信息,形成SDP描述,完成UDP或TCP封装。
3.2 系统软硬件平台的选择为选择合适的软硬件平台,我们收集了大量相关资料,通过反复比较并结合现有实验条件做出了如下选择:。