我是网络新手,正在尝试了解一些基本概念。如果有人能告诉我,我将非常感激 为什么在实时系统中使用 TCP 是一个坏主意? 是什么让 UDP 更适合实时系统?
简而言之,TCP 旨在实现高于所有的完美传输。 您将按照发送的顺序准确收到已发送的内容,否则您将什么也得不到。
这样做的问题是,TCP 会在尝试重新传输数据时挂起,直到正确接收数据为止,但在实时系统中,它尝试重新传输的数据是无用的,因为它已经过时了;并且您真正想要的数据必须等待您不想清除堆栈的数据才能发送。
这篇文章解释得更清楚了
如前所述,UDP 比 TCP 用于实时服务(RTS),主要是因为 UDP 数据包比 TCP 更简单,因为后者更注重纠错和可靠性。
TCP 数据包比 UDP 数据包更大,并且传输更加仔细,以保持其完整性,其中接收方确认发送的每个 TCP 数据包,这在发送敏感数据时非常有用,但它将成为 RTS 的瓶颈其中状态应尽可能保持更新,通常传输的数据速度为 100-1000 KB/s,当使用 UDP 实现时,丢失少量 KB 不会破坏您的服务。
TCP协议以数据的正确传输为导向,为此它在发送数据之前建立连接,称为“三次握手”,通过三个数据包在发送器和接收器之间进行同步和识别,从而确保数据传输路径将被执行,但是此过程将导致数据发送过程中出现相当大的延迟,从而导致接收器侦听或接收数据时出现相当大的延迟,甚至消息被混淆。
然而,UDP尽管跳过了连接阶段,从而保证了较高的数据传输速度,但也有一个缺点,即不能保证发送的数据正确到达目的地,而这是实时系统运行所必需的。