【VC++开源代码栏目提醒】:网学会员为需要VC++开源代码的朋友们搜集整理了基于SIP协议的软电话 - 期刊论文相关资料,希望对各位网友有所帮助!
第 34 卷第 1 期 华 北 电 力 大 学 学 报 Vol.34 No.1 2007 年 1 月 Journal of North China Electric Power University Jan. 2007 基于 SIP 协议的软电话 赵建涛,吴开炎 华北电力大学 计算机科学与技术学院,北京 102206 摘要:介绍了会话初始化协议 SIP;研究了基于 SIP 协议的软电话的过程,主要涉及 SIP 消 息的生成和处理,语音的压缩编码和回放以及使用 RTP 进行语音数据报的实时传输等关键技术;最后介绍 了软电话的测试平台。
关键词:SIP;软电话;RTP 中图分类号:TM644 文献标识码:A 文章编号:1007-2691 2007 01-0120-03 Design and realization of SIP-based soft phone ZHAO Jian-tao WU Kai-yan School of Computer Science and Technology North China Electric Power University Beijing 102206 China Abstract: The SIP Session Initiation Protocol is introduced. The design and realization of the soft phone based on SIP are demonstrated. Some technologies about the generation and processing of SIP message the compression codes and play of audio and the real-time trans
mission of the RTP packets are analyzed. The testing platform of soft phone is explained. Key
words: SIP soft phone RTP 化协议是由 IETF 定义,基于 IP 的一个应用层控 引 言 制协议。
它用于对多媒体通信进行控制、创建、修 改和终结一个或多个参与者参加的会话。
伴随着互联网技术的迅猛发展,计算机网络正 SIP 协议采用客户机/服务器模式的工作方式,逐步取代着传统网络,如 PSTN 公共电话网 以 SIP 网络包含两类组件:用户代理 UA 和代理服及有线电视网在人们心目中的原有位置。
目前,利 务器 Proxy 。
其中用户代理又分为负责发起 SIP用 VOIP 技术可以实现计算机到
计算机以及计算机 呼叫请求的用户代理客户端 UAC 和负责对呼叫到普通电话之间的通讯, 只需低廉的话费便能实现 请求做出响应的用户代理服务器 UAS ,而服务传统 PSTN 网中长途通话。
除此之外,搭配视频系 器包括注册服务器、代理服务器、位置服务器、重统便能方便构建视频会议。
软电话作为 VOIP 体系 定向服务器。
这一系列服务器主要为用户提供注中的组成部分之一,将提供友好的人机交互界面, 册、鉴权、认证和路由等服务。
SIP 支持建立和结使得用户像使用普通电话一样,从而完成呼叫操 束多媒体
通信的 5 个方面:用户定位、功能与可用作。
本文主要介绍基于 SIP 协议的软电话的原理以 性、呼叫建立以及呼叫处理。
及实现
方案。
SIP 不是一个垂直集成的通讯
系统。
SIP 可能 叫做是一个部件更合适,它可以用作其他 IETF 协1 SIP 简介 议的一个部分,用来构造完整的多媒体架构。
比 如,这些架构将会包含实时数据传输协议 RTP) SIP Session Initiation Protocol 会话初始 用来传输实时的数据并且提供 QoS 反馈,实时流收稿日期:2006-09-21.作者简介:赵建涛 1962 - 男 华北电力大学计算机科学与技术学院副教授.第1期 赵建涛等:基于 SIP 协议的软电话 121协议 RSTP)用于控制流媒体的的传输,媒体网 议实现、声音压缩编码以及视频压缩编码。
关控制协议用来控制到公共电话交换网 PSTN 的 SIP 协议栈采用的是
开源的 OSIP,OSIP 是用网关,还有会话描述协议 SDP 用于描述多媒体 标准 C 语言编写的一个 SIP 协议栈。
OSIP 协议栈会话。
因此,SIP 应该和其他的协议一起
工作,才 结构简单而小巧,它并不提供高层的 SIP 会话控制能提供完整的对终端用户的服务。
它主要提供一些解析 SIP/SDP 消息的 API 的 API, 由此可见,SIP 本身必不提供服务,但 SIP 提 和事务处理的状态机。
支持 UTF8 和完整的 SIP 语供了一个基础,可以用来实现不同的服务。
目前, 法,包含一个语法分析器,能够读写任何在 RFCSIP 主要用于提供 VOIP 业务。
3261 中描述的 SIP 消息。
OSIP 的核心是 SIP 协议 中所描述的四个有限的状态机,事务是通过使用 42
设计思想 个有限状态机定型的。
每一个事物使用独立的先进 先出队列,这些队列被外部模块填充。
事件一经用 软电话在设计时采用模块化的设计思想, 各个 户请求便被列入队列。
将一系列的动态回叫注册用模块之间相对独立,从而便于对
软件进行测试以及 于应用
程序,能知道每一个事物的进展情况。
OSIP未来的升级、修改。
该软电话分为以下几个模块: 协议栈支持 Linux 和 Windows,使用
VC 6.0用户界面、SIP 消息处理、语音处理、实时语音传 对源
代码进行编译将得到 osip2.dll 以及 osippar-输、视频处理。
ser2.dll。
用户界面模块提供了一个友好的人机交化界 RTP 实现采用的是 JRTP,JRTP 是用 C编面,拥有一个类似普通电话的外表,使得用户使用 写的一个面向对象的 RTP 库。
它提供了对 RTP 的非常方便,只需通过鼠标点击软电话中相应的数字 支持,通过它所提供的函数,可以很容易的完成按键,便可完成普通电话中的拨号过程,同时通过 RTP 包的接受和发送。
此外,通过 RTCP 函数对视频窗口,可以进行视频聊天或召开视频会议。
实施传输进行控制。
JRTP 支持 Linux、Windows SIP 消息处理模块主要完成软电话的注册、发 以及 Solaris。
起呼叫、挂机以及对相应消息的处理,诸如忙音, 声音
压缩编码采用 G.729a 标准通过 g729a.dll认证消息 OK 消息等。
通过与用户界面模块之间的 提供的 API 完成声音的编解码。
至于视频方面采接口,以简洁易懂的方式展现给用户。
用了 H. 263 标准,通过 h. 263.dll 提供的 API 函 语音处理模块主要完成声音数据的采集。
发送 数完成图像数据的处理。
方将完成声音由模拟信号到数字信号的转换, 随后对采集来的声音数据进行压缩编码, 组成
网络上传 4 模块具体实现输的 UDP 数据包。
接收方将收到的数据包进行解码,对数据进行还原,将相应的数字信号转换为模 4.1 SIP 消息处理模块拟信号,供人耳收听。
SIP 消息在整个通话过程中主要完成呼叫的建 实时语音传输模块主要完成声音数据包的传输 立、保持以及释放。
SIP 消息处理模块将完成 SIP以及对传输进行控制,同时控制 SIP 消息的发送和 消息 的 构造,发 送 以及 解析。
首先,通 过 调用接收。
parser_init 以及 InitWinsock 完成 OSIP 解 视频处理模块主要通过摄像头采集图像信息, 析器和 Socket 的初始化, 接着调用 osip_message_并对图像信息进行压缩编码,组成相应的 UDP 数 init 初始化 SIP 消息,同时还根据所获得信息据包在网络上传输,接收方对图像数据进行解码、 填充 SIP 的各个头域,最后通过 sendto 将 SIP还原,从而将数字信号转变为图像模拟信号在视频 消息发送给相应服务器同时通过 recvfrom 来接窗口显示。
收响应消息并进行解析作后续处理,下面介绍了 SIP 消息处理模块的功能流程。
3 相关技术 1 当软电话启动时,SIP 消息处理模块读取 相关的配置信息 包括软电话的用户名、密码以及 软电话的开发过程中,采用了一些
开源的协议 注册服务器的 IP 地址 ,构造注册 Register 消栈来帮助实现。
它们分别是 SIP 协议栈、RTP 协 息发送到注册服务器上, 注册服务器将检查用户数122 华 北 电 力 大 学 学 报 2007 年据库并把得到的用户 IP 地址交给位置服务器。
如 软电话 1 软电话 2 BYE图 1 的流程。
IP 软电话
注册服务器 200 OK Register 401 图 3 呼叫释放 Fig.3 Releasing of calls Register 200 OK 及回放。
首先 打开录音设备并调 va_g729a_init_ encoder ,初始化语音储存的数据结构,接着对 声音进行录制, 当缓存区充满时,调用 va_g729a_ 图 1 注册流程 Fig.1 Flow chart of registration encoder 对数据进行编码组成 RTP 包发送给被 叫方。
对接收到语音数据调用 va_g729a_decoder 2 当软电话收到服务器返回的 200 OK 响 进行解码、回放。
应消息时,该消息代表了注册成功,此时用户就可 4.3 语音传输模块以呼叫服务器上的所有注册用户。
当进行呼叫操作 语音数据将采用 RTP 的方式进行传输,采用时,SIP 消息处理模块将读取用户输入的用户号码 JRTP 所提供的 API 完成 RTP 的初始化以及 RTP或该用户在服务器上的地址,如 bobip.com 该地 报的传输。
址类似于电子邮件的地址, 其中 bob 代表用户在服务器上申请的用户名,sip.com 则代表了服务器的 5 测试环境地址。
获得了以上信息后,SIP 消息处理模块将构造呼叫邀请 Invite 消息并将它发送给代理服务 软电话采用的测试服务器是 Asterisk 服务器。
器,代理服务器收到该消息后将向位置服务器
查询 该服务器是一个将注册服务器、代理服务器、 位置目标用户所注册的 IP 地址并向该 IP 转发 Invite 消 服务器以及重定向服务器融为一体的 SIP 服务器。
息。
目标用户接受邀请时, 便会发送一个 200 OK 测试流程:首先,分别在两台电脑上安装软电话并消息给邀请者。
当 OK 消息到达邀请者时,邀请者 将其注册到 Asterisk 服务器上;其次,由一软电便会返回一个 ACK 消息给目标用户。
以上便完成 话通过 Asterisk 服务器呼叫另一方软电话。
了一次呼叫的三次握手过程。
如图 2。
软电话 1 代理服务器 软电话 2 6 结 论 Invite Invite 100 Trying 通过软电话实现, 可以看出 SIP 相对于 H. 323 100 Trying 的优势,就是它相对简单以及基于 UTF-8 编码, 180 Ringing 180 Ringing 使得人们在调试时更方便。
随着网络的发展以及各 200 OK 个大型厂家对于 SIP 的支持,基于 SIP 协议的相关 200 OK 产品将会变得越来越普及。
ACK ACK 参考文献: RTP 1 赵慧玲. 以软交换为下一代的网络 M. 北京:人民邮 图 2 呼叫三次握手过程 电出版社 2002. Fig.2 Hand-shaking process of three calls 2 白建军 彭晖 田敏译. SIP 揭密 M. 北京:人民邮电 3 当通话的一方想要中止会话时,SIP 消息 出版社. 2003.处理模块便会构造 BYE 消息并将它发送给对方, 3 李臻立. 基于软交换的 SIP 软终端的研究和实现 J. 光 通讯研究 2005 3:41-43.从而通知对方呼叫中止。
如图 3。
4 高丽平 邱志亮. Linux 上基于 SIP 的 IP 软电话的设计4.2 语音处理模块 和实现 J. 北京电子科技学院学报 2005 13 71-74. 会话建立后,将进行语音的实时采集、处理以 (责任编辑:马坤英)