2013-03-26 1794 views

回答

19

许多人通常会将UDP与voip关联起来,可能会将其留在那个位置,但简单地说,有两个部分用于voip - 连接和语音数据传输。

SIP是一个非常轻的协议,一旦建立连接,它就会有效地保持空闲状态,直到有人拨打电话的偶发事件。 TCP(与UDP不同)将通过消除需要实际上减少到服务器的流量;每隔几分钟

  • 刷新/平服务器
  • 您可以运行SIP在TCP,然后使用(如推荐)UDP的RTP

    1. 重新注册。

      我忍不住还指出了我看过的那些明显的东西。例如。连接到服务器的设备数量。随着数量的增长,方程倾向于UDP。但是,您还必须考虑扩展SIP用户代理以涵盖多种编解码器,多媒体,视频和屏幕共享。 INVITE数据包可能会开始变大,并可能在UDP单数据报大小上运行,从而再次倾斜公式以支持TCP。

      所有这些说法我希望你有足够的信息来回答你要回答的问题。

      希望这会有所帮助。

      信用:在onSip美妙的讨论:https://www.onsip.com/blog/sip-via-udp-vs-tcp

    +0

    需要加密的情况也浮现在脑海中(尽管如果我没有弄错,SRTP也可以使用UDP)。 – Marcos 2013-03-26 19:45:56

    +0

    是的,而且SRTP最常用。尽管这比围绕SIP的RTP成为一场讨论。对于SIP安全性,您应该查看SIPS(安全SIP)。 – MickJ 2013-03-26 20:07:51

    6

    如果消息是大的(在200个字节MTU大小的),RFC 3261部分18.1.1任务使用TCP的(准确地,它的任务使用的“拥塞控制传输协议,如TCP”)。在发送最初的INVITE时,我在练习中遇到过很多标题和复杂的请求URI。

    12

    基于TCP的SIP与移动设备的UDP相比具有明显的优势。原因是由于使用了NAT,以及无线路由器或信元提供商的路由器中的NAT表项通常在UDP与TCP中更快地超时。由于保持相同的NAT表条目对于能够可靠地接收呼叫是必需的,所以SIP必须周期性地发出保持活动以维持NAT表条目。 UDP(可能每30秒)与TCP(可能每隔15分钟)相比,所需的保活频率要高得多,从而导致移动设备电池使用量明显增加。通常,当您看到有人抱怨他们的电池使用情况在使用VOIP客户端时受到重大打击时,这是因为客户端正在使用UDP。

    因此,TCP胜过UDP手机的移动设备。

    请注意,上述假设您希望能够在移动设备上可靠地接听电话。如果你想要做的就是能够打电话,那么这是一个不同的故事。

    +0

    有趣。人们想知道现代手机在这种情况下如何配置默认的内置VoIP SIP应用程序(例如Android 4+)。 – Marcos 2015-02-05 16:04:11

    +1

    任何这些的任何来源?每30秒发送一个udp数据包听起来不像使用多少电池。 – kritzikratzi 2015-09-08 15:40:16

    -2

    当UDP可能无法理解时,TCP可以完美清晰地看到有损连接。使用UDP可以获得更低的延迟,但如果您无法理解所说的内容,那对您不会有什么帮助。

    +2

    SIP不带语音部分。这是RDP。 – Andrew 2016-11-15 16:07:33

    3

    您无法可靠地从基于TCP的协议组装音频流。在音频中,丢弃数据包要好得多,然后由于数据包丢失而重新传输数据包。如果数据包计时过度抖动,则音频不起作用。音频是一种实时协议,需要UDP等协议才能正常工作。数据包丢失不会中断音频,它只会降低质量。 TCP的完美传送不会以任何方式帮助音频,但如果您获得100%的数据包,则不会有任何质量问题,但它们不是实时的。在音频中,时间(延迟,抖动)决定了质量而不是数据完整性。

    这改善工程BEST当信号和控制是通过TCP但语音数据是通过UDP。我从1987年开始为日本新兴的数字蜂窝网络设计了第一批智能手机之一,一直致力于通过网络协议传输数字语音。自1987年以来,数字语音传输的唯一方面并没有改变,这是我在这里描述的。音频(语音)传输的实时性及其对系统设计的影响与我在恐龙时代的完全一样。