跳至主要內容

TCP 与 UDP 的区别

njr计算机网络TCPUDP大约 3 分钟约 782 字

TCP 和 UDP 都是传输层协议,属于 TCP/IP 协议族。

UDP

用户数据报协议(User Datagram Protocol,UDP)用来处理数据包,是一种无连接的协议,它的特点如下:

无连接

不需要像 TCP 一样进行三次握手进行连接,并且也只是数据报文的搬运工,不会对报文进行任何的加工处理。

单播、多播、广播

UDP 支持一对一、一对多、多对多、多对一的传输方式。

面向报文

在发送端,应用层将数据传递给传输层,UDP 只会给数据增加一个 UDP 头标识这是一个 UDP 协议报文,然后就传给网络层,对应用层交付的报文既不合并也不拆分,保留报文的边界,一次发送一个报文。

在接收端,网络层将 UDP 数据报传输给 UDP,UDP 去除首部后就会将数据原封不动地传递给应用层,一次交付一个完整的报文。

不可靠

首先体现在无连接上,通信双方想发就发,必然不可靠。没有像 TCP 做重传机制、流量控制和拥塞控制。

头部开销小

UDP 头部只有 8 字节,相比 TCP 20 个字节少得多,传输数据时比较高效。

应用场景

UDP 应用于效率要求高,但可靠性要求相对较低的场景,例如:即时通讯,速度要求高,但是偶尔出现断续不是太大问题,完全可以不使用重传机制,场景有在线视频、网络语音通话、广播通信等。

TCP

传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通讯协议,它的特点如下:

面向连接

在发送前必须进行 TCP 三次握手在两端建立连接。

仅支持单播传输

每个 TCP 只能进行一对一传输,不支持多播和广播的形式。

面向字节流

TCP 不像 UDP 那样一个一个报文独立传输,而是在不保留报文边界的情况下以字节流方式进行传输。

可靠传输

TCP 为了实现可靠传输,使用了重传机制、流量控制和拥塞控制。

头部开销大

TCP 头部最小 20 个字节,最大 60 个字节,传输效率慢。

应用场景

TCP 应用于效率要求相对低,但可靠性要求高的场景,例如:文件传输、邮件传输等。

区别

UDPTCP
是否连接无连接面向连接
是否可靠不可靠使用重传机制、流量控制和拥塞控制保证可靠传输
连接对象个数单播、多播、广播单播
传输方式面向报文面向字节流
头部大小头部开销小,仅 8 字节头部最小 20 个字节,最大 60 个字节
应用场景适用于实时应用适用于要求可靠传输的应用