TCP vs UDP
计算机网络传输层有两种重要的协议:TCP和UDP。 TCP提供了一种面向连接的可靠数据传输;UDP则提供了一种无连接的不可靠数据传输。 乍一看,我们选TCP不就完事了?何必使用UDP?数据的可靠传输不就是我们需要的结果吗? 诶,别急着否定UDP,它有它存在的价值。
UDP的优点真的,有很多应用更适合于UDP传输,正因为UDP有以下优点:
- 关于什么时候发送什么数据的应用层控制更为精细 。 采用 UDP 时,只要应用进程将 数据传递给 UDP,UDP 就会将此数据打包进 UDP 报文段井立即将其传递给网络层。然而,TCP 存在拥塞控制机制,以便当源主机和目的主机间的一条或多条链路变得极度拥塞时来遏制运输层 TCP 发送方。 理论上,TCP 仍将继续重新发送数据报文段直到目的主机收到此报文并加以确认,而不管可靠交付需要用多段时间。因为实时应用通常要求最小的发送速率,不希望过分地延迟报文段的传送,且能容忍一些数据丢失,TCP 服务模型并不是特别适合这些应用的需要。这些应用可以使用 UDP,并作为应用的一部分来实现所需的、超出 UDP 的不提供不必要的报文段交付服务之外的额外功能。
- 无需连接建立。 TCP 在开始数据传输之前要经过三次握手,进而建立连接。 UDP 却不需要任何准备即可进行数据传输。因此 UDP 不会引入建立连接的时延。这可能是 DNS 运行在 UDP 之上而不是运行在 TCP 之上的主要原因(如果运行在 TCP 上,则 DNS 会慢得多)。HTTP 使用 TCP 而不是 UDP,因为对于具有文本数据 的 Web 网页来说,