1、当追求数据传输性能,选UDP。如:音频和多媒体应用
2、当追求数据传输的完整性、可控制性和可靠性时,选TCP。
3、TCP和UDP协议属于传输层协议,
4、TCP和UDP的区别:
(1)是否连接:TCP是面向连接的,TCP的发送发要确认接收方是否收到数据段(3次握手协议),而UDP是无连接的。
(2)传输可靠性: TCP是可靠的,UDP是不可靠的;
- TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复,它通过为每个数据报提供一个序号来完成此恢复,为确保正确收到数据,TCP要求目标计算机成功收到数据时发回一个确认(即ACK),如果在某个时限内未收到相应的ACK,将重新传送数据包。如果网络拥塞,这种重新传送将导致发送的数据包重复,但是接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它。
- UDP协议不能保证数据准确无误的到达目的地,并不是说UDP就完全无法知道是否发生了错误,一个16位的UDP包包含了一个字节长的头部和数据的长度,校验码域使其可以进行整体校验,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。
(3)TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式。
(4)TCP是面向字节流的,UDP是面向报文(流模式和数据报模式)。
(5)TCP拥有拥塞控制机制,UDP没有拥塞控制,适合媒体通信。
(6)TCP要求系统资源较多,UDP较少。
(7)TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大,TCP传送数据段的时候要给段标号,UDP协议不用。
5、数据的可靠传输表示的是不错,不乱,不丢,基于这些原则TCP需要做更多的事来保证。
6、选择TCP还是UDP主要看需求,TCP虽然可靠,但是时间成本更高。UDP只进行最基本的校验和纠错,所以类似视频流等对时间要求敏感的可以选择UDP。