如果我要将数据包从一台计算机发送到另一台计算机,通过一根以太网电缆直接连接,那么使用 UDP 不断轮询接收计算机是否更快,或者使用 Java RMI 让发送方将数据包“提供”给接收方?电脑?
我不知道是否有任何性能变化?
使用 UDP 通常更快,因为在传输中没有额外的确认开销,因为不需要为接收确认而烦恼。
使用 TCP 时,会向数据源发送回确认。全双工通信可以在不中断传入数据流的情况下进行此确认的传输;但是,您确实必须等待一段时间才能让该确认返回发件人,然后该发件人来处理它。
虽然假设两台计算机都足够快以处理数据流处理,但在现实世界中,计算机可能会发现自己正在执行多项任务,这可能会中断以线速处理网络流量的能力。在这种情况下,如果发送计算机不能足够快地接收到确认(或者接收计算机不能足够快地发送它们),那么您可能会耗尽未确认数据包的窗口,这将导致发送计算机停止传输,直到它确定任一传输的内容需要重新传输或被接收。
但是 UDP 不是玫瑰床,因为不确认接收的解决方案是允许任何数据包在任何时候消失而无需通知。因此,它非常适合不需要完全传输的数据(实时语音,如果它被丢弃,从“现在”数据包开始比收集所有数据更重要),或者用于管理重传的数据通过更有效的特定于应用程序的算法。