浅网络电话(voip)原理和实现的方法
今天跟大家聊聊网络电话的实现原理,很多人知道网络电话,但不清楚实现的原理,今天就碰到一个懂一点点技术的客户,聊到这块,也顺便带大家一起了解网络电话是如何实现打电话的。

    网络电话,又称VOIP(Voice over Internet Protocol)通过IP数据包发送实现的语音业务,是传输语音的一种方式,它把语音分解成构成数据的字节通过互联网传输到目的地。通俗来说也就是互联网电话或IP电话,使用 VOIP协议,不管是因特网、企业内部互连网还是局域网都可以实现语音通信。一个使用 VOIP 的网络中,语音信号经过数字化,压缩并转换成 IP 包,然后在 IP 网络中进行传输。VOIP 信令协议用于建立和取消呼叫,传输用于定位用户以及协商能力所需的信息。电话网络的主要特点是低成本;数据、语音和视频在同一网络上的合成;集中式网络上的新服务以及对终端用户的简单化管理。

网络电话的基本结构由网关(GW)和网守(GK)两部分构成。网关的主要功能是信令处理、H.323协议处理、语音编解码和路由协议处理等,对外分别提供与PSTN 网连接的中继接口以及与IP 网络连接的接口。网守的主要功能是用户认证、地址解析、带宽管理、路由管理、安全管理和区域管理。一个典型的呼叫过程是:呼叫由PSTN 语音交换机发起,通过中继接口接入到网关,网关获得用户希望呼叫的被叫号码后,向网守发出查询信息,网守查找被叫网守的IP 地址,并根据网络资源情况来判断是否应该建立连接。如果可以建立连接,则将被叫网关的IP 地址通知给主叫网关,主叫网关在得到被叫网关的IP 地址后,通过IP 网络与对方网关建立起呼叫连接,被叫则网关向PSTN 网络发起呼叫并由交换机向被叫用户振铃,被叫摘机后,被叫侧网关和交换机之间的话音通道被连通,网关之间则开始利用H.245协议进行能力交换,确定通话使用的编解码,在能力交换完成后,主被叫方即可开始通话。
宏观上讲可以分为软件电话和硬件电话。软件电话就是在电脑上下载软件, 然后购买网络电话卡,然后通过耳麦实现和对方(固话或手机)进行通话; 硬件电话比较适合公司、话吧等使用,首先要一个语音网关,网关一边接到路由器上,另一边接到普通的话机上,然后普通话机即可直接通过网络自由呼出了。

 网络电话就有4 种:电话到电话、电话到PC、PC 到电话和PC 到PC。具体如下:
  ⑴PC 到PC:最初网络电话方式主要是PC 到PC,利用IP 地址进行呼叫,通过语音压缩、打包传送方式,实现因特网上PC 机间的实时话音传送,话音压缩、编解码和打包均通过PC 上的处理器、声卡、网卡等硬件资源完成,这种方式和公用电话通信有很大的差异,且限定在因特网内,所以有很大的局限性。简单地说,计算机与计算机在因特网上打电话的过程包括以下5个实现步骤:1、首先,通过本地机的声卡将声音信息记录下来;2、使用软件将声音文件转化为一种压缩的数据文件;3、通过网络将数据文件传送到接听电话的一方;4、对方软件将数据文件还原为声音文件;5、通过对方声卡将声音播放出来。

  ⑵电话到电话:电话到电话即普通电话经过电话交换机连到网络电话网关,用电话号码穿过IP 网进行呼叫,发送端网关鉴别主叫用户,翻译电话号码/网关IP 地址,发起电话/网络电话呼叫,连接到最靠近被叫的网关,并完成话音编码和打包,接收端网关实现拆包、解码和连接被叫。
  ⑶电话到PC :电话到PC 是由网关来完成IP 地址和电话号码的对应和翻译,以及话音编解码和打包。
  ⑷PC 到电话:PC 到电话也是由网关来完成IP 地址和电话号码的对应和翻译,以及话音编解码和打包。
网络电话的关键技术包括:信令技术、编码技术、实时传输技术、服务质量(QoS)保证技术、以及网络传输技术等。
  信令技术:我们讲下我们网络电话常用的SIP信令,SIP 是一种应用层协议,可以用UDP 或TCP 作为其传输协议。与H.323 不同的是:SIP 是一种基于文本的协议,用SIP 规则资源定位语言描述(SIP Uniform Resource Locators),这样易于实现和调试,更重要的是灵活性和扩展性好。由于SIP 仅作于初始化呼叫,而不是传输媒体数据,因而造成的附加传输代价也不大。SIP 的URLL 甚至可以嵌入到web 页或其它超文本链路中,用户只需用鼠标一点即可发出一个呼叫。与H.323 相比,SIP 还有建立呼叫快,支持传送电话号码的特点。
  编码技术:话音压缩编码技术是网络电话技术的一个重要组成部分。主要的编码技术有ITU-T 定义的G.729、G.723(G.723.1)G711等。其中G.729 可将经过采样的64kbit/s 话音以几乎不失真的质量压缩至8kbit/s。由于在分组交换网络中,业务质量不能得到很好保证,因而需要话音的编码具有一定的灵活性,即编码速率、编码尺度的可变可适应性。G.729 原来是8kbit/s 的话音编码标准,工作范围扩展至6.4~11.8kbit/s,话音质量也在此范围内有一定的变化,但即使是⒍4kbit/s,话音质量也还不错,因而很适合在VoIP 系统中使用。G723.1 采用5.3/6.3K bit/s 双速率话音编码,其话音质量好,但是处理时延较大,它是已标准化的最低速率的话音编码算法,G711采样率为8k每秒。它利用一个 64Kbps 未压缩通道传输语音讯号,音质方面有更大的优势,但带宽也相相应占用比较大。我们现在用的网络电话APP大部分都是G729或者高清的G711编码。
  下面跟大说讲下这几种编码所占带宽问题
带宽=包长度×每秒包数
=包长度×(1/打包周期)
=(Ethernet头+IP头+UDP头+RTP头+有效载荷)×(1/打包周期)
=(208bit +160bit+64bit+96bit +有效载荷)×(1/打包周期)
=(528bit+(打包周期(秒)×每秒的比特数))×(1/打包周期)
=( 528 / 打包周期 ) + 每秒比特数
按照上面的计算公式:
G711:20ms打包,带宽为 ( 528/20 + 64) Kbit/s=90.4 Kbit/s
G729:20ms打包,带宽为 ( 528/20 + 8 ) Kbit/s= 34.4 Kbit/s
G723:5.3k,30ms打包,带宽为 ( 528/30 + 5.3 ) Kbit/s=22.9 Kbit/s
如果看不懂上面的计算方法,只需记住以下结果:
G711 实际占用带宽 每线90.4kbit/s 100线并发占用 9Mbps
G729 实际占用带宽 每线34.4kbit/s 100线并发占用 3.4Mbps
G723 实际占用带宽 每线22.9kbit/s 100线并发占用 2.2Mbps
  想要了解的更为详细,可以去从协议,信令,软交换,中继线路这四块业务了解,协议可以先了解SIP协议,信令可以了解G729,软交换可以了解下开源的asterisk或者freeswitch等等,中继落地,可以咨询运营商。