UDP 和 TCP 都是传输层协议,核心区别一句话:TCP 可靠、慢、有连接;UDP 不可靠、快、无连接。

通俗理解
TCP 像打电话先拨号接通,说话对方必须回应,没听清会让你重说,保证一句不漏按顺序传。
UDP 像寄信 / 广播直接把信扔出去,不管对方收没收到、顺序乱没乱,只管快。

对比项TCPUDP
连接面向连接(先握手再传输)无连接,发完就走
可靠性可靠传输,不丢不错不乱序不可靠,可能丢包、乱序
速度慢,开销大快,开销小
流量控制有(拥塞控制、滑动窗口)
数据形式字节流数据报(报文)
重传机制丢包自动重传不重传

应用场景

  • TCP 用在必须可靠的地方
    • 网页(HTTP/HTTPS)
    • 文件传输(FTP)
    • 邮件(SMTP/POP3)
    • 远程登录(SSH)
  • UDP 用在要快、能容忍丢包的地方
    • 直播、视频通话
    • 游戏(王者荣耀、吃鸡等)
    • DNS 查询
    • 实时音视频

TCP 直播
必须保证每个包都收到,丢包就重传
数据不乱序、不丢失
结果:
延迟高(几秒甚至十几秒)
网络一差就一直缓冲、转圈加载
画面不会花,但会卡住不动

UDP 直播
不保证必达,丢包就丢了,不重传
只管拼命发最新画面
结果:
延迟极低(几百毫秒)
网络差时会花屏、马赛克、短暂卡顿
但不会一直转圈,恢复很快

为什么直播几乎都用 UDP?
直播最看重三件事:
低延迟(观众不想比别人慢几十秒)
实时性(主播说话观众立刻听到)
流畅优先于完美
偶尔花一点没事,不能卡半天。
所以:
游戏直播、秀场直播、视频连麦 → 全部 UDP
点播、回放、短视频 → TCP(HTTP-FLV/HTTPS)

网络差时:TCP vs UDP 的真实表现

TCP 在差网下:会 “卡死、延迟爆炸、越等越慢”
TCP 是必须保证可靠的,所以遇到丢包、延迟、乱序时:
丢一个包 → 立刻停传,等待重传
网络抖动大 → 滑动窗口收缩,速度骤降
链路来回切换 → 连接直接断开,必须重连
延迟会越积越高,从几百毫秒涨到几秒甚至十几秒
表现:转圈加载、画面卡住不动、声音断、延迟越来越大,直到网络恢复才继续。

UDP 在差网下:会 “花屏、卡顿,但不积累延迟”
UDP 不重传、不排队、不纠错,只做一件事:继续发最新的数据,旧的丢了就丢了。
丢包 → 直接跳过,不等待
延迟抖动 → 不受影响,继续推流
网络波动 → 画面短暂马赛克、卡顿一下,但延迟不会越来越高
表现:偶尔花屏、卡顿、掉帧,但不会卡死转圈,恢复极快。

在MPTCP中这两者也有很大的差别

上文我们讲过,TCP流量走代理,UDP流量走VPN

经测试表明,如果一个RTMP流在MPTCP中建立后,如果中途有条链路退出,虽然不会影响到当前RTMP流的正常推送,但如果这条链路稍后回来,虽然能再次回到MPTCP中,但眼前这条RTMP流是无法再使用这条链路。如果是UDP则没有这种问题。因此,UDP在聚合路由器具有更强的抗风险能力。

当你在一个不太稳定的环境下使用时,TCP会断一条链路就少一条,直到最后一条断开,服务重新连接。因此,你会获得更多的卡顿。

UDP则断开一条,还有其它的,一会又满血了。中间可能会有轻微的花屏或卡顿,但不会有长时间卡顿,甚至重连的情况。

如果我只能推RTMP地址,该如何破局

其实现在很多平台都是多地址可以推流,比如微赞就有SRT地址。如果真没有的话,可以使用曲线救国的办法,我们找一个推拉流平台,也可以自己搭建zlmMediakit。先推SRT流出去,再由平台转发到RTMP地址。



发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

搜索

关于

奥点5G聚合路由器广泛应用于网络直播中,无论是商业直播还是个人直播,都以优异的性能和良好的稳定性赢得了用户的赞誉和信赖,奥点聚合在抖音、快手、视频号、小红书、Bilibili等主流平台都有着优秀的表现。是您直播中不可缺少的伴侣。

奥点聚合编码器具有一键推流功能,只需一键,即可将现场画面以及低延时(400ms)传输到世界各地。具有独立的公网IP,拥有属于自己的一片天地,一键SRT,RMTP传输1080 50 60P视频,还支持LOG格式。