3

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

4

1 回答 1

6

Icecast 和 SHOUTcast 都将 TCP 用于源流和流向最终客户端的流。这有很多好处:

  • 大多数互联网广播电台使用的编解码器不适合丢失大量数据。如果流被损坏,无论是丢失还是乱序数据包,解码器有时能够重新同步并继续,但很多都会失败。

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

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

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

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

于 2014-07-09T12:54:15.413 回答