UDP 和 TCP 的特点
-
TCP是面向连接的传输层协议,保证可靠,传送的数据不丢失、无差错、按序到达。提供全双工通信,允许通信双方的应用进程在任何时候都可以发送数据。适用于对速度要求不高,但对可靠性要求高的场景。例如文件传输、邮件传输。HTTP、FTP、TELNET、SMTP协议都是基于TCP协议
-
UDP是一种无连接的传输层协议,不保证可靠交付,不关心对方是否已经正确接收到数据。
适用于速度要求高,准确性要求低的场景,比如通话、视频会议、直播等(偶尔卡顿也不用重传)。DNS、DHCP、TFTP、SNMP、RIP都是基于UDP协议
TCP和UDP的具体比较
UDP | TCP | |
---|---|---|
是否连接 | 无连接 | 面向连接 |
是否可靠 | 不可靠 | 可靠 |
连接对象个数 | 支持一对一,一对多,多对一和多对多交互通信 | 只能是一对一通信 |
传输方式 | 面向报文 | 面向字节流(可能导致粘包) |
首部开销 | 首部开销小,仅8字节 | 首部最小20字节,最大60字节 |
有序性 | 无序 | 依靠序列号,保持顺序 |
TCP前20个字节是固定的,后面有4n个字节是根据需而增加的选项,所以TCP首部最小长度为20字节。

UDP的首部只有8个字节,源端口号、目的端口号、长度和校验和各两个字节。