核心思想:从“邮政系统”到“快递系统”
为了理解IP语音,我们可以把它想象成一个从传统电话系统到现代互联网通信的演变。

传统电话系统 (POTS - Plain Old Telephone Service)
- 工作方式:想象一个邮政系统,你拿起电话(写好信),拨打对方的号码(找到对方的地址),电话交换机会为你建立一条专属的、独占的物理线路(就像派一辆专车,把你的信从A点直接送到B点,途中这条路只为你一人服务),通话期间,这条线路一直被占用,无论你是否在说话。
- 技术原理:电路交换,基于电路交换网络,如PSTN(公共交换电话网)。
- 缺点:资源利用率低、成本高、功能单一。
IP语音通信
- 工作方式:想象一个高效的快递系统,你说话的声音(信件内容)被数字化、打包成一个个小的“数据包”(包裹),每个包裹上都写着源地址(你的IP地址)和目的地址(对方的IP地址),这些包裹通过互联网(庞大的快递网络)被独立地、快速地发送出去,对方的设备接收这些包裹,按顺序打开,再把声音还原出来。
- 技术原理:分组交换,基于IP网络,如互联网或企业内网。
- 优点:资源利用率高(网络通道可以同时传输多个人的数据包)、成本低(利用现有网络)、功能丰富(可集成视频、数据等)。
IP语音通信的核心原理
IP语音的核心就是将模拟的语音信号转换成数字数据包,在IP网络上进行传输,到达目的地后再还原成模拟语音信号。
这个过程主要涉及两大技术:语音编码和信令协议。
语音编码
这是将声音变成数字信号的第一步,也叫模数转换。
-
为什么需要编码? 计算机和网络只认识0和1,而我们的声音是连续的模拟波,必须将模拟波转换成数字信号才能在IP网络上传输。
(图片来源网络,侵删) -
编码过程(发送端):
- 采样:以固定的频率(例如8000次/秒)对模拟声音波进行“拍照”,记录下每个瞬间的振幅值,采样频率决定了声音能还原的最高频率。
- 量化:将采样得到的连续振幅值,映射到有限的离散数值上,这就像用尺子测量,尺子刻度越密,精度越高。
- 编码:将量化后的数字值,按照特定的算法(如G.711, G.729, Opus等)进行压缩,形成二进制数据流。
-
关键指标:
- 比特率:每秒需要传输多少比特的数据,比特率越低,占用的网络带宽越小,但音质可能越差,G.711编码比特率高(64kbps),音质好;G.729编码比特率低(8kbps),音质稍差但节省带宽。
- 延迟:从说话到声音被编码所需的时间,越低越好。
- 算法复杂度:编码和解码需要消耗CPU资源。
打包与传输
这是将编码后的数字数据送入网络的步骤。
-
为什么需要打包? IP网络是“尽力而为”的,它不知道哪些数据是重要的,也不知道先后顺序,将数据打包成标准化的“数据包”,可以让网络设备(如路由器)高效地处理和转发。
(图片来源网络,侵删) -
打包过程(发送端):
- 封装:将一小段编码后的语音数据,加上“头”信息,封装成一个IP数据包,这个“头”就像快递包裹上的面单,包含了源IP地址、目的IP地址等关键信息。
- 传输:这些数据包通过互联网(或局域网)传输,由于网络路径的复杂性,数据包可能会走不同的路线,导致乱序、延迟甚至丢失。
-
关键问题:
- 抖动:数据包到达时间不一致,会导致声音断断续续,为了解决这个问题,接收端会使用一个“抖动缓冲区”,将乱序的数据包重新排序、暂存一小段时间再播放,以平滑播放。
- 丢包:网络拥堵或错误可能导致数据包丢失,可以通过前向纠错或丢包隐藏等技术进行补偿,减少对通话质量的影响。
解码与播放
这是接收端将数据还原成声音的步骤。
- 解码过程(接收端):
- 解封装:接收到IP数据包后,去掉“头”信息,提取出原始的语音数据段。
- 重组:将乱序的数据段,通过“抖动缓冲区”重新排列成正确的顺序。
- 解码:使用与发送端相同的编码算法,将数字数据还原成模拟的语音波形。
- 播放:将模拟语音波形通过声卡或电话手柄播放出来。
信令协议:建立和管理通话
打包传输解决了“如何送声音”的问题,但通话开始前需要“拨号”,通话中需要“维持”,通话后需要“挂断”,这些控制功能由信令协议来完成。
信令协议就像是电话系统的“神经系统”。
主流的信令协议
-
SIP (Session Initiation Protocol - 会话发起协议)
- 特点:简单、灵活、基于文本,是当今互联网电话的事实标准,它就像互联网上的“HTTP”协议,用于“发起、修改、终止”一个会话(如语音通话、视频会议)。
- 工作流程:
- 呼叫建立:主叫方通过SIP消息(如
INVITE)向被叫方发起呼叫,请求建立会话。 - 响应:被叫方通过SIP消息(如
200 OK)表示接受呼叫。 - 媒体协商:双方通过SIP消息协商使用哪种语音编码(如G.729)、使用哪个端口传输媒体数据。
- 通话建立:媒体协商成功后,双方开始通过RTP协议传输语音数据包,通话开始。
- 呼叫终止:任何一方发送
BYE消息,另一方确认后,会话结束,释放资源。
- 呼叫建立:主叫方通过SIP消息(如
-
H.323
- 特点:一个更古老、更复杂的协议族,由ITU-T制定,功能强大但配置复杂,现在逐渐被SIP取代。
-
MGCP (Media Gateway Control Protocol) 和 Megaco (H.248)
- 特点:主要用于大型电信运营商网络,用于控制“媒体网关”,它们将呼叫控制逻辑(智能)和媒体转换功能( dumb )分离,适合大规模部署。
媒体传输协议
信令协议负责“建立会话”,而真正的语音数据传输则由媒体协议完成。
-
RTP (Real-time Transport Protocol - 实时传输协议)
- 作用:用于传输实时数据,如音频和视频,它为数据包加上时间戳和序列号,接收端可以据此进行排序和同步,并计算网络延迟和丢包率,是实现高质量语音的关键。
- 特点:它不保证传输,但提供了传输质量监控的工具。
-
RTCP (RTP Control Protocol - RTP控制协议)
- 作用:是RTP的“伴侣协议”,它不传输语音数据,而是传输控制信息,如发送/接收的统计报告(丢包率、抖动、往返延迟等),让通话双方了解网络质量。
IP语音通信的完整流程总结
让我们把所有环节串联起来,看看一次完整的IP语音通话是如何发生的:
场景:Alice使用SIP电话呼叫Bob。
-
呼叫发起 (信令层 - SIP)
- Alice输入Bob的SIP地址(如
bob@example.com),按下拨打键。 - Alice的SIP客户端(软电话或IP电话)向SIP服务器(或代理)发送一个
INVITE请求,其中包含Alice的地址和Bob的地址。
- Alice输入Bob的SIP地址(如
-
呼叫路由与寻址 (信令层 - SIP)
- SIP服务器根据Bob的地址,查找他当前的位置(可能在他自己的SIP服务器上)。
- SIP服务器将
INVITE请求转发给Bob的设备。
-
呼叫应答 (信令层 - SIP)
- Bob的设备收到
INVITE请求,电话铃声响起,Bob摘机。 - Bob的设备向SIP服务器,再回传给Alice,发送一个
200 OK消息,表示接受呼叫。
- Bob的设备收到
-
媒体协商 (信令层 - SIP)
- Alice和Bob的设备通过SIP消息交换它们支持的语音编码格式(如Alice支持Opus和G.711,Bob支持G.711和G.729),最终协商一个双方都支持的格式(如G.711)。
- 它们交换各自的IP地址和RTP端口号,这是用来传输语音数据的“地址和门牌号”。
-
语音传输 (媒体层 - RTP/RTCP)
- 协商完成后,Alice的设备开始将她的声音进行编码、打包,并按照协商好的IP地址和端口,通过RTP协议发送数据包。
- Bob的设备接收这些数据包,进行解包、解码和播放,Bob就听到了Alice的声音。
- Bob的声音也通过同样的过程反向传输给Alice。
- RTCP协议在后台运行,双方持续交换网络质量报告。
-
呼叫终止 (信令层 - SIP)
- Alice说完话,按下挂机键。
- Alice的设备发送一个
BYE请求给Bob。 - Bob的设备收到
BYE后,挂断电话,并回复一个200 OK确认。 - 双方的会话结束,释放所有占用的网络资源。
关键技术挑战与解决方案
- 延迟:端到端延迟超过150ms就会感觉卡顿。
- 解决方案:优化网络路由、使用高性能设备、选择低延迟的编解码器。
- 抖动:数据包到达时间不一致。
- 解决方案:在接收端使用合适的“抖动缓冲区”。
- 丢包:数据包在网络中丢失。
- 解决方案:使用前向纠错、丢包隐藏算法,或通过QoS(服务质量)技术为语音流量提供优先保障。
- 防火墙/NAT穿越:私有网络内的设备难以直接通信。
- 解决方案:使用STUN、TURN、ICE等协议来穿透防火墙和NAT。
希望这个详细的解释能帮助你彻底理解IP语音通信的原理!
