比较TCP与UDP

2024-02-22 15:09:16 浏览数 (2)

简介
  1. TCP:TCP是面向连接、可靠的、基于字节流的传输层通讯协议。它提供了数据包的顺序传输、错误检测、流量控制和拥塞控制机制。
  2. UDP:UDP是无连接的、不可靠的、基于数据报的传输层通讯协议。不确保消息的顺序和可靠性,是一种更快速实时的传输协议。
TCP优于UDP的点:
  1. 可靠性 UDP不能保证数据的交付,而TCP有强壮的机制确保能将数据完全送达目的地(如:重传、数据校验、流量控制)。
  2. 有序性 UDP不能保证数据按发送的顺序到达目的地,而TCP可以通过序列号和确认号来确保数据的有效到达。(详见:TCP如何确保有序性)
  3. 拥塞控制 TCP具有UDP不具有的拥塞控制,可以提高网络吞吐量。
UDP优于TCP的点
  1. 速度(实时性) UDP通常要比TCP要更快,UDP没有数据校验和数据重传,它不需要保证数据的到达。因此也更适用宁愿丢包也不愿延迟的应用场景(如:直播、网游等)
  2. 更少的头部开销 TCP通常情况下拥有20字节的头部开销,因为它要维护确保可靠传输、拥塞控制的字段(如:序列号、确认号、窗口大小等)
TCP如何确保有序性

具体实现有序的过程如下:

  • 序列号:TCP发送数据包时,它会给数据包分配唯一的序列号,这个序列号按数据的字节顺序分配而不是数据包的顺序,这样即使数据包的大小不一,序列号也能反映出正确的顺序。
  • 确认号:当接收端接收一个数据包时,它会发送一个确认号给发送端。这个确认号包含接收端期望接收的下一个数据包序列号,如果发送端接收的确认号小于发送的最大序列号,则它就知道有数据包没有背接收,并重传该数据包。
  • 数据排序:接收端会缓存序列号不连续的数据包,直到接收到缺失的数据包,才一起打包送往应用。

0 人点赞