我使用 UDP 协议在 2 个设备之间发送视频和音频流。这两个流通过单个端口发送。
我的问题是:通过一个端口发送视频流并通过另一个端口发送音频流有什么优势(速度、吞吐量、拥塞风险等)吗?(每个端口都分配给一个独立的线程)
或者换句话说:我们可以通过两个端口而不是一个端口传输更多数据吗?或者它不会改变任何东西,因为速度和吞吐量受到 CPU、操作系统、网卡等因素的限制……
答案1
通过一个端口发送视频流并通过另一个端口发送音频流有什么优势(速度、吞吐量、拥塞风险......)吗?
答案:不。音频部分与视频部分相比微不足道,因此没有必要将两者分离再合并。
我们可以通过两个端口而不是一个端口传输更多数据吗?
如果一个端口已经以最高速度对(一个)网络进行轰炸,那么第二个端口只会增加网络冲突和等待。对于一个网络来说,收益很小(而且值得怀疑)。
请注意,全速网络将对接收硬盘的性能造成负担,而硬盘可能成为真正的瓶颈。当磁盘限制网络吞吐量时,增加网络吞吐量不会带来任何改善。
答案2
您有一个网络连接。我想从您的帖子中可以很容易地推断出这一点。
正如您所指出的,您的 CPU 和 OS 此时已经固定。
因此,添加一个端口并使用两个端口根本不会加快速度。没有任何优势。只有一个“管道”(网络连接)供数据包通过。
只需按原样使用您的设置并确保一切正常运行。
答案3
我们可以通过两个端口而不是一个端口传输更多数据吗?
一般来说:是的。但在您描述的情况下,可能不是。AV 流由音频和视频流组成。但音频流消耗的数据量不到视频流的 1/10(甚至更少)。
因此,拆分(并重新合并)这些流并不值得。
如果您要同时传输多个 AV 流,则在多个端口之间分配流将是一个明智的选择。
我的问题是:通过一个端口发送视频流并通过另一个端口发送音频流有什么优势(速度、吞吐量、拥塞风险......)吗?
不适用于单个流。但是,如上所述,对于多个流,这将是有用的,即使不是强制性的。
但我能想到的一个有用的场景是翻译:
- 通过一个端口传输视频流
- 通过另一个端口将音频部分传输到不同的端点进行翻译(翻译成不同的语言) - 并将翻译后的音频流与目的地的原始视频流重新连接(通过使用时间戳)。
答案4
不。
您特别提到了 UDP 协议。这是“发射后不管”的协议,因此使用额外的端口会使网络方面的事情变得更加复杂,而没有任何好处。
(如果您使用 tcp,答案是肯定的 - 并且许多程序确实会打开多个连接来并行下载文件的多个部分并将它们拼接在一起以提高速度。这是因为 tcp 被设计为在丢失数据包时速度会降低,而且与 udp 不同,它受往返时间和数据包确认的约束。)