https://img-my.csdn.net/uploads/201303/15/1363304832_2419.jpg
TCP 与 UDP 的区别
1. TCP是面向连接的协议,UDP是无连接协议
TCP发送数据前使用三次握手建立连接,UDP发送数据前不需要建立连接。
2. TCP可靠,UDP不可靠
TCP丢包可以自动重传,UDP不会(任何必需的可靠性必须由应用层来提供)。TCP可靠性由三个机制保证:
- 序号(TCP报文的序号)
- 确认(ACK机制)
- 重传(超时或者冗余的ACK)
3. TCP面向字节流,UDP面向报文(保留报文的边界)
UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。
应用程序和TCP的交互是一次一个大小不等的数据块。TCP可以把应用程序的数据块划分成小块发送,也可以积累足够多的小数据块合并成一个报文单次发送。
4. TCP效率较低,UDP效率高
- TCP需要建立连接、保证可靠性和有序性,UDP不需要建立连接
- TCP首部20字节,UDP首部只需要8字节
5. TCP全双工,UDP支持单播,多播,广播
TCP连接的两端都设有缓存,用来临时存放双向通信的数据(实现全双工)。
TCP只能一对一通信,UDP支持一对一、一对多、多对一、多对多的方式。
6. TCP支持流量控制(滑动窗口)和拥塞控制,UDP不支持
流量控制(滑动窗口)是点对点的通信量抑制,抑制发送端发送速率,使得接收端来得及接收。
应用场景
- TCP适用于要求可靠传输的应用,例如文件传输
- UDP适用于实时应用(IP电话、视频会议、直播等)
参考
TCP 与 UDP 的区别
面向报文(UDP)和面向字节流(TCP)的区别
一文搞懂TCP与UDP的区别
TCP和UDP的最完整的区别