为什么RTP往往是使用UDP,而不是使用TCP封装

TAG: UDP TCP RTP over UDP RTP over TCP
继续完成“流媒体技术系列” , 接上一篇提出的问题:为什么RTP往往是使用UDP , 而不是使用TCP封装 , 接下来简单的解释一下 , 先摘录一些基本概念 , 然后使用一个表格进行对比 , 进一步探讨这个问题 。
计算机网络OSI模型中 , TCP和UDP为第四层传输层的功能 。
简单的说:TCP传输控制协议()是基于连接的协议 , 也就是说 , 在正式收发数据前 , 必须和对方建立可靠的连接 。TCP协议能为应用程序提供可靠的通信连接 , 使一台计算机 发出的字节流无差错地发往网络上的其他计算机 , 对可靠性要求高的数据通信系统往往使用TCP协议传输数据 。
必须要经过三次“对话”才能建立 。
第1次对话
A–> 发连接请求数据包 –>B
第2次对话
AB
UDP用户数据报协议(User Data )是与TCP相对应的协议 。它是面向非连接的协议 , 它不与对方建立连接 , 而是直接就把数据包发送过去!UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境 。
UDP例子:“ping”命令测试两台主机之间TCP/IP通信是否正常 , 就是向对方主机发送UDP数据包 , 然后对方主机确认收到数据包 , 如果数据包是否到达的消息及时反馈回来 , 那么网络就是通的 。
几个使用TCP重要的优点:
1.TCP速率控(TCP rate )制有经过证明是具有的稳定性和可扩展性 。
2.TCP提供保证,theloss。
3.TCP是可以助于的越过防火墙 。
4.流量控制(The flow ) 。
5.The有助于优化网络资源的使用 。

为什么RTP往往是使用UDP,而不是使用TCP封装

文章插图
从网上摘抄一段关于TCP协议的主要功能:
TCP协议的主要功能是完成对数据报的确认、流量控制和网络拥塞;自动检测数据报 , 并提供错误重发的功能;将多条路径传送的数据报按照原来的顺序进行排列 , 并对重复数据进行择取;控制超时重发 , 自动调整超时值;提供自动恢复丢失数据的功能 。
相对TCP , UDP显然更好地使用于实时应用 , 原因如下:
1.最低开销( ) 。
【为什么RTP往往是使用UDP,而不是使用TCP封装】2.在最大数据从传输速率开始发送 。
3.不重复请求 , 所以就没有重传(一个单一的数据包丢失在一个的实时应用中并不重要) 。
4.低处理时间(lowtime) 。不需要缓冲(No ) 。
与TCP不同 , UDP并不提供对IP协议的可靠机制、流控制以及错误恢复功能等 。由于UDP 比较简单 , UDP头包含很少的字节 , 比TCP负载消耗少 。下图为TCP的头和UDP的头的格式:
为什么RTP往往是使用UDP,而不是使用TCP封装

文章插图

为什么RTP往往是使用UDP,而不是使用TCP封装

文章插图
TCP协议和UDP协议的差别(以表格的形式):
TCP
UDP
和流媒体的关系
20 Byte
8 Bytes
UDP更好 , 少
 , 在数据传输前需要建立 。
 , 没有需要被建立 。
对于 ,  是不适合
可靠 ACK
不可靠
可靠性比时间延迟(time delay)不重要 。TCP会增加延迟
Two-way双向
One way单向
In UDP, RTCPthe
ErrorFEC在整个
Error 只在
UDP使用较少处理时间
Data flow
控制data flow用于管理下载速度
没有控制