UDP以其简单、传输快的优势,在越来越多的场景下取代了TCP,如实时游戏。
(1)网速的提升给UDP的稳定性提供了可靠的网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。
(2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。
(3)采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接受到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包发生的延迟降到最低,尽量减少网络问题对游戏等应用造成影响。
为什么像即时通讯会选用UDP?而不是采用TCP进行实现?
因为UDP的端口通信机制。TCP连接的端口一般是有限的,而即时通讯,向视频转播需要对很多人进行视频的转发,而TCP的端口是不够的,UDP可以一对一,一对多。