- TCP面向连接,UDP是无连接的,即采用UDP协议,发送数据之前是不需要建立连接的。
- TCP提供可靠的服务。它通过校验和,丢包时的重传控制,序号标识,滑动窗口,确认应答,次序乱掉的分包进行顺序控制实现可靠传输。即通过TCP连接传输的数据,无差错、不丢失、不重复、且按序到达;UDP尽最大努力交付,即不保证可靠交付。
- UDP具有较好的实时性,工作效率比TCP高,适用于对实时性有较高要求的通信场景或广播通信场景。
- 每一条TCP连接是点到点的;UDP支持一对一、一对多、多对一和多对多的交互通信方式。
- TCP对系统资源要求较多,UDP对系统资源要求较少。
UDP有时比TCP更有优势:
UDP以其简单、传输快的优势,在越来越多场景下取代了TCP, 如实时游戏。
(1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。
(2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP在内置的系统协议栈中,极难对其进行改进。
采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大。
基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题造成的影响。