TCP面向连接,UDP无连接。TCP通讯需要三次握手建立连接,四次挥手断开连接;UDP则不需要。

TCP面向连接,好处是通过差错控制、流量控制、拥塞控制,保证数据正确性。缺点是延迟高,复杂。

而UDP无连接,省去连接的过程,全速发送,延迟低,而且简单。缺点是可能会丢包,且无法控制。

两者采用的模式也不同,TCP是流模式,UDP是数据报模式,TCP保证数据顺序,UDP不保证。

所以两者的使用场景也不同,TCP更适合需要保证数据无误的业务场景,UDP更适合实时性强,允许丢包的业务场景。

网络直播 TCP?UDP?

国内主流不管点播还是直播都是用 http-flv 或者 rtmp,这两种协议都基于TCP。但是从底层UDP和TCP的特性来看,还是UDP适合做实时性通信,比如直播。

使用udp,丢包了一两帧甚至不用去管也不会影响到用户体验,在流量和实时性上比TCP好。

但是私有协议的兼容性不好,如果采用该方案也需要解决一系列的技术问题:

UDP 的可靠性传输如丢包重传、网络抖动的处理

网路拥塞的控制算法

而以上问题都是在短期内很难实现的。

考虑商用的话,我觉得还是直接使用现成的,成熟的基于tcp的rtmp协议更好些。虽然延迟是缺点,但具有稳定、方便的优点。