Icecast传输层协议 - TCP还是UDP?

时间:2014-07-08 18:57:57

标签: tcp udp network-protocols tcp-ip icecast

我似乎没有找到答案,所以我问你。 股票Icecast2服务器是否使用TCP或UDP来广播流数据?我知道它使用基于HTTP的自定义应用层协议,所以有人可能会想到它的TCP,但另一方面它是一个广播应用,所以UDP对我来说更合乎逻辑。如果它仍然使用TCP,为什么会这样做呢?

1 个答案:

答案 0 :(得分:3)

Icecast和SHOUTcast都将TCP用于源流和流式传输到终端客户端。这有很多原因:

  • 大多数互联网广播电台使用的编解码器不适合丢失数据块。如果流被丢失或无序数据包损坏,解码器有时会重新同步并继续,但许多人只会失败。

  • 大多数互联网广播电台都没有真正的延迟要求。没有人知道或关心他们是否将音频延迟了几秒钟。实际上通常会调高缓冲区大小以允许客户端快速开始播放,导致延迟10-30秒。

  • 与HTTP兼容很重要。我怀疑当Nullsoft最初构建SHOUTcast时,他们的目标是尽可能简单地启动并运行它,因此他们模仿HTTP是有道理的。我怀疑Icecast和SHOUTcast如此受欢迎的原因是它很容易为它们编写客户端,因为它本质上是HTTP。现在基于网络的播放器已成为现实(使用Flash甚至是HTML5),协议与HTTP兼容至关重要,因为许多浏览器不支持其他流媒体协议。 (Flash有自己的协议,但实现起来并不像HTTP那么简单。)如果客户端可以播放从HTTP服务器流式传输的文件,它可以从Icecast流式传输(如果它在HTTP实现中是宽松的,则可以流式传输)

  • 你提到广播...我不知道你是否意味着UDP广播包,但是那些在互联网上的实践中效果不佳。因此,使用UDP的唯一好处是减少开销,但我认为您会看到由于上述原因,开销的几个字节不会超过TCP对此类应用程序的好处。

简而言之,这不是一个电话应用程序,其中延迟很重要,可以使用自定义客户端。