- 连接性: tcp是面向连接的协议,在数据传输前要通过三次握手建立连接,数据传输完成后通过四次挥手断开连接,而udp是无连接的协议,可以随时发送和接受数据。
- 可靠性: tcp是可靠传输,通过序列号、确认应答、超时重传等机制确保数据正确、完整、有序地传输到目的地,而udp提供的是不可靠的传输。
- 报文结构/头部开销: tcp的头部开销较大,包含序列号、确认号、窗口大小等控制信息,udp头部开销较小,只包含必要的字段,如源端口、目的端口,长度、校验和等。
- 流量控制和拥塞控制: tcp有流量控制和拥塞控制机制,防止网络拥塞和丢包,udp只负责将数据报发送到目的端,不关心网络状况和传输质量。
- 传输效率: tcp需要建立连接、确认数据、处理重传等,传输效率比较低,udp不需要这些额外步骤,传输效率更高。
- 适用场景: tcp适用于对数据可靠性要求较高的场景,如文件存储、电子邮件等; udp传输效率高,适用于对实时性要求,但对数据可靠性要求不高的场景,如游戏,网络直播,网络电话等。(视频流,音频流,DNS查询)
- tcp通常用于一对一通信,udp则支持一对多、多对一、多对多的通信模式,可以实现广播和组播功能。
- tcp面向字节流,udp面向数据报: 面向字节流是以字节为单位发送数据,并且一个数据包可以以字节大小拆分成多个数据包,以方便发送。tcp可以先将数据存放在发送缓冲区内,可以等待数据到一定大小发送,亦可以直接发送,没有固定大小。udp每次发送都要发送固定长度的数据包,如果长度过长需要应用层协议主动将其裁剪到合适的长度。
简单总结: tcp是面向连接的协议,通过三次握手建立连接,并通过序列号、确认应答、超时重传、流量控制和拥塞控制等机制确保数据的正确传输,提供的是可靠性传输,但传输效率较低,适用于对数据可靠性要求较高的场合,如电子邮件等;udp是无连接的协议,提供的是不可靠传输,传输效率较高,更适用于对实时性要求较高,但对数据可靠性要求不高的场合,如游戏、网络直播、网络电话等。tcp只支持一对一通信,udp支持一对一、一对多、多对多通信,可以实现广播和组播功能。