ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:130.12KB ,
资源ID:19522995      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19522995.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北邮研究生计算机网络VOIPSIP实验报告Word文件下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

北邮研究生计算机网络VOIPSIP实验报告Word文件下载.docx

1、传输过程中的代价,语间包通常由60120或240ms的语音数据组成数字化可以使用各种语音 编码方案来实现,目前采用的语音编码标准主要有 ITU-T G.711源和目的地的语音编码器必须实现相同的算法,这样目的地的语音设备帮可以还原模拟语音信号原数据到 IP转换一旦语音信号进行数字编码,下一步就是对语音包以特定的帧长进行压缩编码大部份的编码器都 有特定的帧长,若一个编码器使用 15ms的帧,则把从第一来的 60ms的包分成4帧,并按顺序进行编码每个帧合 120个语音样点(抽样率为 8kHz)编码后,将4个压缩的帧合成一 个压缩的语音包送入网络处理器网络处理器为语音添加包头时标和其它信息后通过网络

2、传 送到另一端点语音网络简单地建立通信端点之间的物理连接(一条线路) ,并在端点之间传输编码的信号IP网络不像电路交换网络,它不形成连接,它要求把数据放在可变长的数据 报或分组中,然后给每个数据报附带寻址和控制信息, 并通过网络发送,一站一站地转发到目的地传送在这个通道中,全部网络被看成一个从输入端接收语音包,然后在一定时间( t)内将其传送到网络输出端 t可以在某全范围内变化, 反映了网络传输中的抖动网络中的同间节点检查每个IP数据附带的寻址信息,并使用这个信息把该数据报转发到目的地路径上的 下一站网络链路可以是支持 IP数据流的任何拓结构或访问方法 IP包-数据的转换目的地VoIP设备接收

3、这个IP数据并开始处理网络级提供一个可变长度的缓冲器, 用来调节网络产生的抖动该缓冲器可容纳许多语音包,用户可以选择缓冲器的大小小的缓冲器产生延迟较 小,但不能调节大的抖动其次, 解码器将经编码的语音包解压缩后产生新的语音包, 这个模块也可以按帧进行操作,完全和解码器的长度相同若帧长度为 15ms,,是60ms的语音包被分成4帧,然后它们被解码还原成 60ms的语音数据流送入解码缓冲器在数据报的处理过程中,去掉寻址和控制信息, 保留原始的原数据,然后把这个原数据提供给解码器数字语音转换为模拟语音播放驱动器将缓冲器中的语音样点( 480个)取出送入声卡,通过扬声器按预定的频率(例如8kHz)播出

4、简而言之,语音信号在 IP网络上的传送要经过从模拟信号到数字信号的转换数字语音封装成 IP分组IP分组通过网络的传送 IP分组的解包和数字语音还原到模拟信号等过程。2) SIP技术会话发起协议(Session Initiation Protocol,缩写SIP)是一个由IETF MMUSIC 工作组开 发的协议,作为标准被提议用于建立,修改和终止包括视频,语音,即时通信,在线游戏和 虚拟现实等多种多媒体元素在内的交互式用户会话 2000年11月,SIP被正式批准成为3GPP信号协议之一,并成为IMS体系结构的一个永久单元 SIP与H.323 样,是用于 VoIP最主要的信令协议之一3) 协议设

5、计SIP最早由Henning Schulzrinne和Mark Handley於1996年所设计.SIP的设计目标之一是 提供类似公用交换电话网(PSTN)中呼叫处理功能的扩展集在这个扩展集中,实现类似日 常电话的操作:拨号,振铃,回铃音或者忙音,只是实现方式和术语有所不同SIP也实现了许多七号信令系统(SS7中更高级的呼叫处理功能,尽管这两个协议相 差很远SS7是一个高度集中处理的协议,其特点表现为高复杂度的中心网络结构和无智能的 哑终端(传统的电话机) SIP则是一个点对点协议,所以它只需要一个相对简单的(因此也高度可扩展的)核心网络,而将处理工作下放给连接在网络边缘的智能端点 (装有硬件

6、或软件的终端设备)SIP的许多功能在端点中实现,这与传统的 SS7将其在网络核心设备实现的作法大异其趣尽管有许多其它的 VoIP信号协议存在,SIP的特点在于它的支持者植根于 IP团体而不 是电信產业SIP最初由IETF标准化和管理,而H.323VoIP协议则从传统上与ITU有着更多 的联系尽管如此,这两个组织对两个协议在某些方面都相互认可SIP与许多其它的协议协同工作,仅仅涉及通信会话的信令部分( control message SIP报文内容传送会话描述协议(SDP),SDP协议描述了会话所使用流媒体细节,如:使用哪 个IP端口,采用哪种编解码器等等 SIP的一个典型用途是:SIP会话传输

7、一些简单的经过封 包的实时传输协议流 RTP本身才是语音或视频的载体第一个被提议的标准版本(SIP 2.0)在RFC 2543中定义在RFC 3261中对这个协议有更 深入的解释,尽管目前许多装置仍然是参考以前的过渡版本而实现的注意现在的版本还是2.0SIP同HTTP相似并采用了后者的一些设计原则: SIP报文是人类可读的,并且也是採取请求-应答的流程SIP的倡导者宣称它比 H.323简单但是,有些人则保留地认为尽管 SIP的原始目标很简单,现在它已经演变得跟 H.323 样复杂了 SIP借用了许多HTTP状态码,如常见的 404not found 的发起者说:曾经在网络上出现的急速革新和应用

8、发展的歷史将同样发生在电话產业上 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和

9、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 但对 于对称的(symm

10、etric) NAT还是有问题一些较新的带 ALG功能的路由器,现在可以识别SIP通信并让其通过 RTP代理服务器,一种在上世纪九十年代普遍使用的类似于 HTTP代理服务器的专用于 SIP的线速处理器,可以启用 CALEA并穿越老式的无法识别 SIP的NAT设备正如它的发明者所预见的, SIP的点对点特性无法使用一些网络本身提供的服务例如,网络不能很容易的支持合法的呼叫侦听 (在美国由法律控制的窃听, CALEA )紧急呼叫(在美国呼叫E911)难以路由因为IP终端本身具有移动性,网络并没有任何定位的能力,要确 定正确的公共服务应答点 PSAP很困难然而,当商业 SIP服务商们正准备放弃时,一

11、些实用的解决方案却在进行试验由 3GPP和3GPP2等公司开发的标准定义了基本 SIP模型的一些应用,这些应用推动了商业化并支持了网络中心的能力,如 CALEAVon age和SIPpho ne等公司是消费 SIP的先锋,他们拥有一个快速增长的用户基础一些 较大的公司,如 AT&T和Level(3)也不甘示弱传统的电信工业(包括朗讯科技(LucentTechnologies)和北电网络(Nortel Networks )现在都在集中开发基于 SIP架构模型和扩展的系统,如 3GPP的IP多媒体子系统(IMS)一些VoIP电话公司,女口 BroadVoice,允许用户使用它们自己的 SIP设备,

12、包括兼容SIP的电话机,AsteriskPBX,或者软电话新的消费 SIP设备市场正在继续膨胀Open Source团体开始提供越来越多的建立终端,代理和注册服务器所需的技术,既让 这些技术走进了人们的日常生活, 又加速了其向全球推广 SIPfoundry已经开发了多种 SIP协议栈,客户端应用程序和 SDK,还有一整套可以与市场上大部分由厂商销售的 IP PBX实现相竞争的IPPBX解决方案32 阅读pjsip开发文档,了解PJSI两发过程1)PJSIP简介PJSIP的实现是为了能在嵌入式设备上高效实现 SIP/VOIP.其主要特征包括:1)极具移植性.(Extremely portable

13、)当前可支持平台包括:* Win32/x86 (Win95/98/ME, NT/2000/XP/2003, min gw).*arm, WinCE and Win dows Mobile.*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后大概173Kb3).高性能.(High performa

14、nee)这点我们后面可以看看是否如作者宣称的 :)4).支持众多的特征.(Many features)5)充足的 SIP 文档.(Extensive SIP documentation)Table Of ContentsPJSUA2 DocumentationPJSUA2 Oocu mentation1 Indices and tablesContents:Next topic 1. Introduction1. Introductiono Getting Started with PJSIPThis Pageo PJSJP info and Oocumentation 2. developm

15、ent Guidelines and ConsiderationsShow Sourceo Development GuidelinesQuick searcho Platform Consideration I o Which API to Use 1o Network and Infrastructure Considerations o Sound Device* 3. PJSUA2-High Level APIEnter search terms or a module.clas5 or function namePo PJSUA2 Main Classeso General Conc

16、eptso Building PJSUA2o Building Python and Java SWIG Moduleso Using in C + + Applicationc Using in Python Applicationo Using inava Application 4. Endpointo Instantiating the Endpointq Creating the Libraryo Initializing the Library and Configuring the Settingso Creating One or More 1 ransportso Start

17、ing the Libraryo Shutting Down the Libraryo 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 -

18、 Ultra Portable Base Framework Library基础框架库而在最上层库的目录分为:何以使用tree -d -L 1查看)$TOP/build包含 Makefile$TOP/build.symbian 针对 symbian 的 Makefile$TOP/pjlib参考上面$TOP/pjlib-util$TOP/pj nath$TOP/pjmedia$TOP/pjsip$TOP/pjsip-apps$TOP/third_party而在每个子目录,可以看到分为:bin编译后产生的二进制文件buildMakefilebuild/outputbuild/wi nce-evc4

19、docsdoxygen 的文档,用 doxygen docs/doxygen.cfg 产生in clude头文件lib编译后产生的库src源代码灯 tao pjsip 1 pjproject-2n4n5 v0 pjproject-2,4,5-修改日期大小Backup2015/10/5 1tt57文件买2015/10/5 10:55文件夹biiiild.ymbidn文傑doc lib2015/10/5 11:03文怦pjlib文帳i.吋lib-util文展pjmedia2015/10/5 1055RjriathRlsippjsippps文彳核teststhird_party_ configure

20、2015/8/6 17:15文件270 KBjconfigure.acAC文件56 KB-勾 bb10-config.mak2013/4/23 13:39Makefile2 KBbuild.mak.in2015/5/5 20:09IN文伴11 KS-一討 c4- 4-bLiild.Tiak2007/5/29 23:331 KBconfig.guess2013/3/11 1432GUESS文件44 KB亦 config.sub2015/7/29 10:31SUB文件35 KB图2 : PJSIP包文件结构3)PJLIB简介要理解好PJSIP,就不得不先说说 PJLIB , PJLIB算的上是这个

21、库中最基础的库, 正是这 个库的优美实现,才让 PJSIP变得如此优越。PJLIB提供了一系列特征,这是我们下面分析的重点,涉及到:1)非动态内存分配No Dynamic Memory Allocations实现了内存池,获取内存是从与分配的内存池中获取, 高性能程序多会自己构造内存池,后面我们会解释该内存池的使用以及基本的原理。根据作者的比较,是常规的 malloc()/free()函数的 30 倍。2).OS抽象Operating System Abstraction实现OS抽象的根本原因在与可移植性,毋庸置疑 :)涉及到:a)线程Threads.b).线程本地存储Thread Local

22、 Storage.c).互斥Mutexes.d).信号灯Semaphores.e)原子变量Atomic Variables.f).临届区Critical sections.g).锁对象Lock Objects.h).事件对象Event Object.i).时间管理Time Data Type and Manipulation.j).高解析的时间戳High Resolution Timestamp.3).低层的网络相关 IOLow-Level Network I/O这涉及到:a).Socket抽 象Socket Abstractio n.b).网络地址解析Network Address Reso

23、lution.c).实现针对 Socket的 select APISocket select() API.4).时间管理Timer Management这主要涉及到两个部分,一个时定时器的管理,还有就是时间解析的精度 (举例说来,就是能精确到哪个时间等级,比如 POSIX sleep(),就只能以秒为单位,而使用 select(则可以实现毫秒级别的计时)5).各种数据结构Various Data Structures主要有:a)针对字符串的操作Stri ng Operatio nsb).数组辅助Array helperc).Hash 表Hash Tabld).链表Linked Liste)红黑

24、平衡树Red/Black Bala need Tree6).异常处理Exception Con struct使用的是TRY/CATCH7).LOG 机制Logging Facility8).随机数以及 GUID 的产生Ra ndom and GUID Gen eratio nGUID 指的是globally unique identifier,只是一个标识而已4)PJLIB的使用以及原理快速内存池Fast Memory Pool前面说过,使用内存池的原因在于性能的考虑 ,原因是C风格的malloc()以及C+风格的new操作在高性能或实时条件下表现并不太好 ,原因在于性能的瓶颈在于内存碎片问题

25、下面列举其优点与需要主要的问题 :优点:a)不像其它内存池,允许分配不同尺寸的 chunks.b).快速.内存chunks拥有0(1)的复杂度,并且操作仅仅是指针的算术运算 ,其间不需要使用锁住任何互斥量.c).有效使用内存.除了可能因为内存对齐的原因会浪费很少的内存外 ,内存的使用效率非常高.d).可预防内存泄漏.在C/C+程序中如果出现内存泄漏问题,其查找过程哪个艰辛,不足为外人道也:(曾经有次用别人的 Code出现了内存泄漏,在开发板上查找 N天,又没工具可在开发板上使用,哪个痛苦,想自杀:(原因很简单,你的内存都是从内存池中获取的 ,就算你没有释放你获取的内存,只要你记得把内存池 de

26、stro y那么内存还是会还给系统.还有设计带 来的一些其它益处比如可用性和灵活性.e)内存泄漏更容易被跟踪.这是因为你的内存是在指定的内存池中分配的 ,只要能很快定位到内存池,内存泄漏的侦测就方便多了 .f).设计上从内存池中获取内存这一操作是非线程安全的 .原因是设计者认为内存池被上层对象所拥有,线程安全应该由上层对象去保证 ,这样的话,没有锁的问题会让内存分配变得非常的快.g).内存池的行为像 C+中的new的行为,当内存池获取内存 chunks会抛出PJ_NO_MEMORY_EXCEPTION 异常,当然,因为支持异常处理,也可以使用其它方式让上层 程序灵活的定义异常的处理.这是异常处

27、理的基本出发点,但是这有大量的争论,原因是这改 变了程序的正常流程,谁能去保证这种流程是用户所需要的呢 ,因此C+中的异常处理饱受争议,请酌情使用h).可以在后端使用任何的内存分配器 .默认情况下是使用 malloc/free管理内存池的块,但是应用程序也可以指定自己的策略 (strategy)例如从一个全局存储空间分配内存 .内存池的使用Using Memory Poola).创建内存池工厂Create Pool Factory上面不是提及内存池的内部分配策略以及 异常处理方式么,其实这就是指定这个的:)当然,不需要你每个内存池都自己取指定策略和 异常处理方式,PJLIB已经有了一个默认的实现:Caching Pool Factory这个内存池工厂的初始 化使用函数 pj_caching_pool_init()b).创建内存池Create The Pool使用pj_pool_c

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1