【问题标题】:Icecast transport layer protocol - TCP or UDP?Icecast 传输层协议 - TCP 还是 UDP?
【发布时间】:2020-10-12 06:57:12
【问题描述】:

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

【问题讨论】:

    标签: tcp udp network-protocols icecast internet-radio


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-08-20
      • 2021-11-22
      • 1970-01-01
      • 2019-03-23
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      相关资源
      最近更新 更多