TCP面向连接,UDP无连接。TCP通讯需要三次握手建立连接,四次挥手断开连接;UDP则不需要。
TCP面向连接,好处是通过差错控制、流量控制、拥塞控制,保证数据正确性。缺点是延迟高,复杂。
而UDP无连接,省去连接的过程,全速发送,延迟低,而且简单。缺点是可能会丢包,且无法控制。
两者采用的模式也不同,TCP是流模式,UDP是数据报模式,TCP保证数据顺序,UDP不保证。
所以两者的使用场景也不同,TCP更适合需要保证数据无误的业务场景,UDP更适合实时性强,允许丢包的业务场景。
国内主流不管点播还是直播都是用 http-flv 或者 rtmp,这两种协议都基于TCP。但是从底层UDP和TCP的特性来看,还是UDP适合做实时性通信,比如直播。
使用udp,丢包了一两帧甚至不用去管也不会影响到用户体验,在流量和实时性上比TCP好。
但是私有协议的兼容性不好,如果采用该方案也需要解决一系列的技术问题:
UDP 的可靠性传输如丢包重传、网络抖动的处理
网路拥塞的控制算法
而以上问题都是在短期内很难实现的。
考虑商用的话,我觉得还是直接使用现成的,成熟的基于tcp的rtmp协议更好些。虽然延迟是缺点,但具有稳定、方便的优点。