使用SIP,何时使用TCP而不是UDP?

时间:2013-03-26 18:29:19

标签: tcp udp sip voip

我非常清楚UDP和TCP 之间的差异(例如http://www.onsip.com/about-voip/sip/udp-versus-tcp-for-voip

问题是,在什么情况下使用TCP作为传输在SIP VOiP通信中具有明显的优势?

5 个答案:

答案 0 :(得分:23)

很多人通常会将UDP与voip联系起来,并且可能会将其留在那里,但简单来说,voip有两个部分 - 连接和语音数据传输。

SIP是一种非常轻量级的协议,一旦建立连接,它就会有效地保持闲置状态,直到有人打电话的频率很低。 TCP(与UDP不同)通过消除需要实际上将减少到服务器的流量;

  1. 每隔几分钟重新注册
  2. 刷新/ ping服务器
  3. 您可以通过TCP运行SIP,然后使用(按照建议)UDP用于RTP。

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

    所有这一切,我希望你有足够的信息来回答你想要回答的问题。

    希望这有帮助。

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

答案 1 :(得分:15)

SIP over TCP与移动设备的UDP相比具有明显的优势。原因是由于NAT的使用,以及无线路由器或小区提供商的路由器中的NAT表条目通常如何对UDP和TCP更快地超时。由于必须保持相同的NAT表条目才能可靠地接收呼叫,因此SIP必须定期发送保持活动以维护NAT表条目。 UDP(可能每30秒)与TCP(可能每15分钟)相比,所需的保持活动频率要高得多,从而导致移动设备电池使用量显着增加。通常,当您看到有人在使用VOIP客户端时抱怨电池使用率受到重大影响时,这是因为客户端正在使用UDP。

因此,TCP在移动设备的UDP手中胜出。

请注意,以上假设您希望能够在移动设备上可靠地接听电话。如果你想要做的就是打电话,那就是另一回事了。

答案 2 :(得分:6)

如果消息很大(在MTU大小的200字节内),RFC 3261第18.1.1节要求使用TCP(确切地说,它要求使用“拥塞控制的传输协议,例如TCP”)。在发送带有大量标题和复杂请求URI的初始INVITE时,我实际上已经实现了这一点。

答案 3 :(得分:3)

您无法从基于TCP的协议可靠地组合音频流。在音频中,丢失数据包比由于数据包丢弃而重新传输数据包要好得多。如果数据包时序中存在过多抖动,则音频不起作用。音频是实时的,需要像UDP这样的协议才能正常工作。数据包丢失不会破坏音频,只会降低音质。 TCP的完美传送不会以任何方式帮助音频,如果你获得100%的数据包就没有质量,但它们不是实时的。在音频中,定时(延迟,抖动)决定质量而不是数据完整性。

当信号和控制通过TCP但语音数据通过UDP时,此sip的工作 BEST

我一直致力于通过网络协议传输数字语音,因为我在1987年为日本新兴的数字蜂窝网络设计了第一批智能手机。自1987年以来,我所描述的数字语音传输的唯一方面没有改变。音频(语音)传输的实时性以及它对系统设计的影响仍然与我来自恐龙时的情况完全相同。

答案 4 :(得分:-1)

当UDP可能无法理解时,TCP可以在有损连接上完美清晰地完成。使用UDP可以降低延迟,但如果您无法理解所说的内容,那么这对您没有帮助。