计算机网络实验课程报告
课题:SIP客户端的开源实现
姓 学
名 _________ 张涛 _______ 院
网络技术研究院
班 级 _____________ 学 号 _____________ 注册组号 _________________
2015年 11月21日
1. 小组信息
小组成员 学号 学院 网络技术研究院 张涛 2. 实验目的
1) 理解VOIP , SIP技术,用开源代码实现一个 SIP客户端(PJSIP 2) 用实现的客户端完成在 SIP呼叫中心上的注册和测试
3. 实验背景知识
3.1 .阅读VOIP, SIP技术相关内容,加深对VOIP技术原理的理解。
1) VOIP技术原理
在现在的网络通信中, Email服务已经不是现在首选的通信方式了更多的即时通信,语 音服务等,在网络上面层出不穷 行压缩打包等一系列的特殊处理,
VoIP传统的电话网是以电路交换方式传输语音,所要求的
对模拟的语音信号进
VoIP功能 IP数据流, VoIP的传输
IP方式来传输语音,不管
也就是对模拟 10 30ms考虑
使之可以采用无连接的 UDP协议进行传输为了在一个 IP
传输宽带为64kbit/s而所谓的VoIP是以IP分组交换网络为传输平台,
网络上传输语音信号,要求几个元素和功能最简单形式的网络由两个或多个具有 的设备组成,这一设备通过一个IP网络连接VoIP设备是如何把语音信号转换为 传输,且可以是IP路由器和网络链路的任意组合因此可以简单地将 过程分为下列几个阶段语音 -数据转换语音信号是模拟波形,通过 是实时应用业务还是非实时应用业务,
语音信号进行8位或6位的量化,然后送入到缓冲存储区中,
首先要对语音信号进行模拟数据转换,
并把这些数据流转发到 IP目的地,IP目的地又把它们转换回到语音信号两者之音的网络必 须支持IP
缓冲器的大小可以根据延迟和
编码的要求选择许多低比特率的编码器是采取以帧为单位进行编码典型帧长为 案来实现,目前采用的语音编码标准主要有
传输过程中的代价,语间包通常由60120或240ms的语音数据组成数字化可以使用各种语音 编码方
ITU-T G.711源和目的地的语音编码器必
IP转换一旦
须实现相同的算法,这样目的地的语音设备帮可以还原模拟语音信号原数据到 帧长,若一个编码器使用
语音信号进行数字编码,下一步就是对语音包以特定的帧长进行压缩编码大部份的编码器都 有特定的
15ms的帧,则把从第一来的 60ms的包分成4帧,并按
顺序进行编码每个帧合 120个语音样点(抽样率为 8kHz)编码后,将4个压缩的帧合成一 个压缩的语音包送入网络处理器网络处理器为语音添加包头时标和其它信息后通过网络传 送到另一端点语音网络简单地建立通信端点之间的物理连接(一条线路) 中,然后给每个数据报附带寻址和控制信息,
,并在端点之间传
并通过网络发送,一站一站地转发到
t)
输编码的信号IP网络不像电路交换网络,它不形成连接,它要求把数据放在可变长的数据 报或分组目的地传送在这个通道中,全部网络被看成一个从输入端接收语音包,然后在一定时间( 内将其传送到网络输出端 t可以在某全范围内变化, 反映了网络传输中的抖动网络中的同间 节点检查每个IP数据附带的寻址信息,并使用这个信息把该数据报转发到目的地路径上的 下一站网络链路可以是支持
IP数据流的任何拓结构或访问方法
IP包-数据的转换目的地
用来调节网络产
VoIP设备接收这个IP数据并开始处理网络级提供一个可变长度的缓冲器,
生的抖动该缓冲器可容纳许多语音包,用户可以选择缓冲器的大小小的缓冲器产生延迟较 小,但不能调节大的抖动其次,
解码器将经编码的语音包解压缩后产生新的语音包,
这个模
块也可以按帧进行操作,完全和解码器的长度相同若帧长度为 分成4帧,然后它们被解码还原成
15ms,,是60ms的语音包被
60ms的语音数据流送入解码缓冲器在数据报的处理过程
480个)取出送入声卡,通过扬声器按预 IP网络上的传送要经过从模拟信号到数
IP分组的解包和数字语音还
中,去掉寻址和控制信息, 保留原始的原数据,然后把这个原数据提供给解码器数字语音转 换为模拟语音播放驱动器将缓冲器中的语音样点( 定的频率(例如8kHz)播出简而言之,语音信号在 字信号的转换数字语音封装成 原到模拟信号等过程。 2) SIP技术
会话发起协议(Session Initiation Protocol,缩写SIP)是一个由IETF MMUSIC 工作组开 发的协议,作为标准被提议用于建立,修改和终止包括视频,语音,即时通信,在线游戏和 虚拟现实等多种多媒体元素在内的交互式用户会话
信号协议之一,并成为IMS体系结构的一个永久单元 要的信令协议之一 3) 协议设计
SIP最早由Henning Schulzrinne和Mark Handley於1996年所设计.SIP的设计目标之一是 提供类似公用交换电话网(PSTN)中呼叫处理功能的扩展集在这个扩展集中,实现类似日 常电话的操作:拨号,振铃,回铃音或者忙音,只是实现方式和术语有所不同
SIP也实现了许多七号信令系统(SS7中更高级的呼叫处理功能,尽管这两个协议相 差很远SS7是一个高度集中处理的协议,其特点表现为高复杂度的中心网络结构和无智能的 哑终端(传统的电话机)
SIP则是一个点对点协议,所以它只需要一个相对简单的(因此也
(装有硬件或软
SS7将其在网络核心设备实现的
高度可扩展的)核心网络,而将处理工作下放给连接在网络边缘的智能端点 件的终端设备)SIP的许多功能在端点中实现,这与传统的 作法大异其趣
尽管有许多其它的 VoIP信号协议存在,SIP的特点在于它的支持者植根于 IP团体而不 是电信產业SIP最初由IETF标准化和管理,而H.323VoIP协议则从传统上与ITU有着更多 的联系尽管如此,这两个组织对两个协议在某些方面都相互认可
SIP与许多其它的协议协同工作,仅仅涉及通信会话的信令部分(
control message SIP
报文内容传送会话描述协议(SDP),SDP协议描述了会话所使用流媒体细节,如:使用哪 个IP端口,采用哪种编解码器等等 SIP的一个典型用途是:SIP会话传输一些简单的经过封 包的实时传输协议流 RTP本身才是语音或视频的载体
第一个被提议的标准版本(SIP 2.0)在RFC 2543中定义在RFC 3261中对这个协议有更 深入的解释,尽管目前许多装置仍然是参考以前的过渡版本而实现的注意现在的版本还是 2.0
SIP同HTTP相似并采用了后者的一些设计原则: 的原始目标很简单,现在它已经演变得跟 如常见的’ 404not found
SIP报文是人类可读的,并且也是採
SIP
2000年11月,SIP被正式批准成为3GPP SIP与H.323 —样,是用于 VoIP最主
IP分组IP分组通过网络的传送
取请求-应答的流程SIP的倡导者宣称它比 H.323简单但是,有些人则保留地认为尽管
'的发起者说:曾经在网络上出现的急速革新和应用发展的歷史
H.323 —样复杂了 SIP借用了许多HTTP状态码,
将同样发生在电话產业上 SIP和H.323对语音通信毫无限制,能够传输从语音到视频的任何 通信会话,甚至未来还没有设想的应用
4) SIP网络单元
1用户代理(User Age nt) SIP用户代理是一个 SIP逻辑网络端点,用于创建发送接收 SIP 消息并
管理一个 SIP会话SIP用户代理又可分为用户代理客户端 UAC( User Age nt Clie nt)和 用户代理服务端 UAS (User Age nt Serve) UAC创建并发送 SIP请求,UAS接收处理SIP请 求,发送SIP响应
2代理服务器(Proxy) SIP代理服务器(PROXY )在网络上位于 SIP UAC和UAS之间, 用于帮助UAC和UAS间的消息路由PROXY也可以执行路由策略控制(比如,检查 SIP消 息的合法性,确认消息是否允许被路由)PROXY在转发SIP消息时,可能根据需要修改 SIP 消息的某些部分
3?注册服务器(Register) SIP注册服务器用于接收 SIP注册请求,并保存发送注册请求 的UA的位置信息 5)
2.2.3商业应用
用于搭载媒体流的实时传输协议(
RTP)并不能简单的穿越
NAT路由器大部分SIP客
户端可以通过 STUN 的协助穿越 full cone, restricted cone 和 port restricted cone 的 NAT 但对 于对称的(symmetric) NAT还是有问题一些较新的带
ALG功能的路由器,现在可以识别
HTTP代理 SIP的NAT
SIP通信并让其通过 RTP代理服务器,一种在上世纪九十年代普遍使用的类似于 服务器的专用于 SIP的线速处理器,可以启用 设备
正如它的发明者所预见的,
CALEA并穿越老式的无法识别
SIP的点对点特性无法使用一些网络本身提供的服务例如,
(在美国由法律控制的窃听, CALEA )紧急呼叫(在
网络不能很容易的支持合法的呼叫侦听 共服务应答点
美国呼叫E911)难以路由因为IP终端本身具有移动性,网络并没有任何定位的能力,要确 定正确的公
PSAP很困难然而,当商业 SIP服务商们正准备放弃时,一些实用 3GPP和3GPP2等公司开发的标准定义了基本
CALEA
SIP模型的一些
的解决方案却在进行试验由
应用,这些应用推动了商业化并支持了网络中心的能力,如
Von age和SIPpho ne等公司是消费 SIP的先锋,他们拥有一个快速增长的用户基础一些 较大的公司,如 AT&T和Level(3)也不甘示弱传统的电信工业(包括朗讯科技 (LucentTechnologies)和北电网络(Nortel Networks ))现在都在集中开发基于 和扩展的系统,如 3GPP的IP多媒体子系统(IMS)
一些VoIP电话公司,女口 BroadVoice,允许用户使用它们自己的 的电话机,AsteriskPBX,或者软电话新的消费
SIP设备,包括兼容SIP
SIP设备市场正在继续膨胀
SIP架构模型
Open Source团体开始提供越来越多的建立终端,代理和注册服务器所需的技术,既让 这些技术走进了人们的日常生活, 相竞争的IPPBX解决方案
又加速了其向全球推广
SIPfoundry已经开发了多种 SIP协
IP PBX实现
议栈,客户端应用程序和 SDK,还有一整套可以与市场上大部分由厂商销售的
32 阅读pjsip开发文档,了解PJSI两发过程
1)
PJSIP简介
PJSIP的实现是为了能在嵌入式设备上高效实现 1) ?极具移植性.(Extremely portable)
当前可支持平台包括:
* Win32/x86 (Win95/98/ME, NT/2000/XP/2003, min gw).
* arm, WinCE and Win dows Mobile.
SIP/VOIP.其主要特征包括:
* Linu x/x86, (user mode and as kernel module⑴). * Linu x/alpha * Solaris/ultra. * MacOS X/powerpc * RTEMS (x86 and powerpc).
2) .非常小的足印.(Very small footprint)
官方宣称编译后的库<150Kb,我在PC上编译后加上strip后大概173Kb 3) .高性能.(High performanee)
这点我们后面可以看看是否如作者宣称的 4) .支持众多的特征.(Many features)
5) 充足的 SIP 文档.(Extensive SIP documentation) Table Of Contents PJSUA2 Oocu mentation 1 Indices and tables :)
PJSUA2 Documentation Contents: ? 1. Introduction o Getting Started with PJSIP o PJSJP info and Oocumentation ? 2. [development Guidelines and Considerations o Development Guidelines o Platform Consideration I o Which API to Use o Network and Infrastructure Considerations o Sound Device * 3. PJSUA2-High Level API o PJSUA2 Main Classes o General Concepts o Building PJSUA2 o Building Python and Java SWIG Modules o Using in C + + Application c Using in Python Application o Using inNext topic 1. Introduction This Page Show Source Quick search Enter search terms or a module. clas5 or function nameP ■ 1』 」ava Application ? 4. Endpoint o Instantiating the Endpoint Q Creating the Library o Initializing the Library and Configuring the Settings o Creating One or More 1 ransports o Starting the Library o Shutting Down the Library o Class Reference
图1: PJSIP官方开发文档
2) PJSIP的组成.
PJSIP实际上是几个部分组成的.
1) .PJSIP - Open Source SIP Staci开源的 SIP 协议栈] 2) .PJMEDIA - Open Source Media Stack[开源的媒体栈]
3) .PJNATH - Open Source NAT Traversal Helper Library[开源的 NAT-T 辅助库] 4) .PJLIB-UTIL - Auxiliary Library[辅助工具库]
5) .PJLIB - Ultra Portable Base Framework Library[基础框架库] 而在最上层库的目录分为:何以使用tree -d -L 1查看)
北邮研究生计算机网络VOIPSIP实验报告
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)