有奖小调查

3 分钟回答 几 个小问题,让内容更符合你的 WebRTC 学习与开发期望。
每个月最后一天会随机抽出 5 名获奖者,并通过邮件联系送上奖品。
填写问卷

TCP与UDP – 哪种协议最适合VoIP?(下)

UDP(速度更重要)

UDP协议是无连接的,因为其在数据交换之前不需要任何逻辑连接。这意味着在开始交换数据之前两台设备不建立连接。

UDP如何运作

由于UDP协议在数据传输开始之前不需要建立安全连接,因此它的数据交换相当简单。设备能够在不警告其他设备、准备连接或协商端口的情况下发送数据包。

在数据传输期间,发送方将小数据包发送给接收方。接收方接收这些数据包,读取数据包的发送位置,然后发送自己的数据包。需要明确的是,这不是TCP中使用的确认消息。相反,这是一种正常的回应方式,是双向沟通的一部分。

UDP协议不保留在数据传输期间丢失的任何数据包,并且仅以小数据包的形式保持数据传输。

优点与缺点

UDP协议下的连接在数据交换期间没有统一的错误检测机制。该协议仅能检测IPv6连接中的错误(该协议使用16位校验和),不能检测IPv4中的错误。

与TCP传输协议相比,UDP协议可靠性较低。在没有进行任何错误检测的情况下,UDP出错的可能性更大。数据包可能无法正常传送。

此外,数据包也可能根本无法传送,因为该协议不会重新发送任何丢失的数据包。在最坏的情况下,UDP将未经检查的数据包进行传输可能导致网络资源拥挤。

但是,所有这些功能都是人为嵌入UDP连接中的。可以想见,两种协议各司其职。TCP协议是为了准确传输而构建的,但其缺乏建立快速数据交换连接的速度。

UDP协议弥补了TCP速度不足的缺点,并且可以在两个设备之间实现快速数据传输。在数据交换之前,UDP协议不需要浪费时间建立安全连接。

此外,UDP的这些连接消耗较少的带宽。因为UDP数据包具有比TCP中的数据包更小的标头。所以这些连接没有间接费用,因为它省去了重新传输和确认的程序。

应用

UDP连接优先保持信息流的传输。它必须确保接收方按时获取数据包。上述这些特性使其成为实时数据交换连接的理想选择。因此,UDP非常适用于VoIP环境中的实时语音呼叫。

该协议也成为多媒体流和任何需要无延迟传输数据连接的最优选。在TCP无法满足终端用户体验的任何地方,UDP都可弥补前者的不足。

UDP协议可以解决由丢包导致的错误延迟问题。不需要重传和确认使UDP能够保持持续的信息交换。

UDP协议还有助于消除由重新传输或被多次发送的数据包引起的抖动。由于诸如IP语音之类的实时通信服务不需要十分可靠的传输协议,因此UDP是VoIP语音呼叫的理想选择。

我们应该记住,即使UDP连接出现了一些错误和数据包丢失,它也只会对音频输出产生轻微影响。之所以这样说是因为相比要忍受几毫秒的延迟来说,丢弃一个丢失的数据包且忍受几毫秒的静音更划算一点。

为什么UD对于VoIP环境是最优解?

UDP和TCP协议是VoIP网络的基本组件,因为它们控制数据在因特网上的交换方式。但是,VoIP环境还利用SIP(会话发起协议)与其他SIP设备建立连接(几乎所有设备都使用SIP进行通信)。因此,考虑传统传输协议如何在VoIP环境中工作是很重要的。

设备注册

TCP网络可用于小规模地注册设备(即LAN网络)。然而,完善的VoIP网络里有成千上万的设备试图与VoIP网络连接。

这些设备包括SIP个人电话,SIP设备以及其他PBX网络。因此,大多数上述连接都是简单的SIP注册。当SIP设备(即IP电话)连接到SIP服务器、向服务器传达其现在可用于接收呼叫的信息以及其IP地址时,SIP注册就完成了。

我们不应忘记,SIP网络必须每分钟重复上述操作来保持适当的沟通。但是,如果我们使用TCP协议,每次电话想要传达其可用性时,都必须进行整个“3次握手”的操作。

这将导致VoIP运营商大量的信息费用。确实,在局域网环境下你可以负担得其上述操作的花费,但VoIP可能有数以千计的个人设备试图每秒注册一次。如果使用TCP协议用于设备注册,最终会使SIP服务器停止运行。

但是,UDP协议不需要连续的确认,也不会给服务器带来额外压力。

通话质量

一旦手机注册了VoIP网络,你就需要一种能够快速传输数据的传输协议。因为一次语音呼叫是一次传递数据包流的对话。所有这些数据包都需要实时创建、传输和接收。

在TCP协议下,重传和确认将使语音呼叫产生滞后。而语音通话中的滞后会降低通话质量。例如,如果一个人通过电话说出某些话,接收端的人在几秒钟之后才能听到他所说的内容。

虽然上述故障在非正式交流中是可负担的,但商业环境中的公司无法承担这样的损失。 UDP协议避免在电话呼叫中创建延迟,而是通过丢弃丢失的数据包来纠正此问题。单个丢失的数据包不会对整个谈话质量产生严重影响,双方可以继续实时通信。

结论

UDP最适合处理VoIP通信,因为它可以避免SIP服务器承受不必要的负担。除此之外,UDP能确保VoIP连接在整个通信期间具有最佳呼叫质量。因此,我们可以得出结论,UDP是VoIP环境的理想选择。

原文标题:TCP vs UDP – Which Protocol Is the Best for VoIP?

作者:Sam Rozenfeld

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营