RTP/RTCP/RTSP协议初探

From:http://apps.hi.baidu.com/share/detail/24794429





一.产生的背景

随着互连网的发展,人们已经不满足于传统的HTTP,FTP和电子邮件等文本信息和服务,而对内容丰富多彩的多媒体信息,服务以及多媒体通信方式提出了需求,包括声音,图象,图形,视频信息等等,而这些不但传输的数据量大而且对交互性和实时性要求很高。

这时,基于HTTP的TCP协议无法达到要求,故产生RTP协议来进行多媒体数据实时传输.



二.RTP/RTCP/RTSP协议与TCP/IP协议对比

那么,现在有个疑问是:为什么TCP/IP协议就不能满足多媒体通信的要求呢?

这是因为TCP有以下4个特点:

1.TCP重传机制

2.TCP拥塞控制机制

3.TCP报文头比UDP保文头要大

4.TCP的启动速度慢



RTP 由IETF(Internet Engineering Task Force,互联网工程任务组)的音频/视频传输工作组制定,主要实现实时数据的传输,它在包头中提供编码类型,包中数据的采样时刻和数据包的序号,根据 这些信息发送和接受方可以协商编码类型,可以对接收到的数据包进行排序等工作;RTCP主要负责传输质量的监控以及传送发送者的一些标志信息。试验和研究 表明,RTP/RTCP所提出的实时数据的传输机制是行之有效的。



对比记忆

IP:数据传输  RTP:多媒体数据实时传输

TCP:保证数据传输可靠  RTCP:保证多媒体数据传输的可靠



三.RTP/RTCP,RTSP协议说明

RTP:Realtime Transport Potocol 实时传输协议

RTCP:Realtime Transport Control Potocol 实时传输控制协议

RTSP:RealTime Streaming Potocol 实时流协议

RSVP:Resource Reserve Potocol 资源预留协议



1.RTP提供时间标志,序列号以及其他能够保证在实时数据传输时处理时间的方法

2.RTCP是RTP的控制部分,是用来保证服务质量和成员管理的

3.RTSP具体数据传输交给RTP,提供对流的远程控制

4.RSVP预留带宽,提高QoS(Quality of Sever)

RTP为实时应用提供端到端的运输,但不提供任何服务质量的保证。多媒体数据块经过压缩编码处理后,先送给RTP封装成为RTP分组,RTP分组再装入UDP用户数据报,然后再向下地交给IP层。RTP是一个协议框架,因为它只包含了实时应用的一些共同的功能。

RTP分组只包含RTP数据,而控制是由另一个配套协议RTCP提供。
RTP在端口号1025到65535之间选择一个未使用的偶数UDP端口号,而在同一次会话中的RTCP则使用下一个奇数UDP端口号。但端口号5004和5005则分别用作RTP和RTCP的默认端口号。
RTP位于传输层(通常是UDP)之上,应用程序之下。它提供同步播放媒体数据所需要的时间戳和序列号,并不具有差错和流量控制机制,这些需要应用程序实现。
RTCP通常和RTCP一起提供流量控制和拥塞控制服务。在RTP会话期间,各参与者周期的发送RTCP数据报。RTCP数据报含有已发送数据的数量丢失的数据报的数量等统计资料,因此,服务器可以利用这些信息动态的改变传输速率,甚至改变净荷的类型。
(照我目前的理解是:RTP和RTCP提供了这些信息给应用程序,但是RTP和RTCP并不定义根据这些信息的动作,
就像TCP的重发和滑动窗口等都是协议自己完成的。但是RTP并不自己做这些事情。)


RTSP(Real Time Streaming Protocol)是用来控制声音或影像的多媒体串流协议,并允许同时多个串流需求控制,传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自 行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。而前面提到的允许同时多个串流需求控制


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VC++ CopyFile函数使用方法

BOOL CopyFile( LPCTSTR lpExistingFileName, // pointer to name of an existing file LPCTSTR lpNewFileName, // pointer to filename to copy to BOOL bFailIfExists // flag for operation if file exists ); 当中各參数的意义: LPCTSTR lpExistingFileName, /…

vue+Ant design vue做项目

vueAnt design vue做项目

Linux下使用od查看文件

From: http://www.orczhou.com/index.php/2010/08/linux-od-data-file/ 查看文本文件使用vim/less就足够了,但如果想要查看一些其他二进制文件(例如DB的数据文件、程序的二进制代码)则借助于od/hexdump这些工具会很方便,这里会通过…

c mysql ssh_c ssh mysql数据库

快速搭建LAMP环境1.打开打开系统自带的终端工具 CMD:winR,输入cmd Powershell:winX→C2.输入ssh -V检查是否安装ssh3.连接命令ssh root弹性IP4.输入yes5.输入密码,连接成功会显示安装Apache服务6.执行命令yum -y install httpd h.…

两个重要而又容易被忽视的角色

在中国,一半以上甚至更多的,以网站为主营业务的或者把网站很看重的公司,没有Web前端工程师和产品工程师这两个职位,甚至有些有点规模的公司也可能没有这个职位,当然,这不能包括像alibaba,sina,1…

zip (ICSharpCode.SharpZipLib.dll文件需要下载)

ZipClass zcnew ZipClass (); zc.ZipDir("E:\1\新建文件夹", "E:\1\新建文件夹.zip", 1);//压缩 zc.UnZip("E:\1\新建文件夹.zip","E:\1\2222");//解压cs 1 class ZipClass2 {3 public void UnZip(string zipFilePath, string unZipDi…

堆与栈的关系与区别

From: http://blog.csdn.net/yfkiss/article/details/6542894 一. 在c中分为这几个存储区 1.栈 - 由编译器自动分配释放 2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3.全局区(静态区),全局…

mysql5.7 新建远程用户_Centos7中 mysql5.7 用户 创建 、授权、远程登录

1、添加用户跟以往版本不同,MySQL5.7 mysql.user表没有password字段,这个字段改成了 authentication_string;这里我们使用命令进行创建用户:CREATE USER usernamehost IDENTIFIED BY password;如创建一个test用户,密码…

宏定义#define

#include<stdio.h> #define exchange(a,b){\int t;\ta;\ab;\bt;\}int main(int arge,char *argv){ int a2,b3; printf("交换前a%d,b%d",a,b); exchange(a,b); printf("交换后a%d,b%d",a,b); return 0;}转载于:https://www.cnblogs.com/zhaoheng/p/43…

mysql ndb 关闭_Mysql NDB 常见问题

在安装和使用mysql cluster集群的过程中&#xff0c;遇到了很多问题&#xff0c;现在把那些问题列出来&#xff0c;并复上解决方法&#xff0c;希望大家在以后的使用中能少花时间少走弯路1、导入数据的时候遇到如下报错&#xff1a;ERROR 1005 (HY000) at line 25: Cant create…

红黑树实现——STL中的map

From: http://blog.csdn.net/zhongjiekangping/article/details/6934571 红黑树实现——STL中的map [ 2009-07-24 13:55:31 | 作者: dklkt ] 字号: 大 | 中 | 小 [转载]STL中map实现技术来源&#xff1a; http://blog.csdn.net/Fandywang_jlu/archive/2008/03/23/2208363.aspx…

Oracle实例和Oracle数据库(Oracle体系结构)

-- --Oracle实例和Oracle数据库(Oracle体系结构) -- /* 对于初接触Oracle 数据库的人来讲&#xff0c;很容易混淆的两个概念即是Oracle 实例和Oracle 数据库。这两 概念不同于SQL sever下的实例与数据库&#xff0c;当然也有些相似之处。只是在SQL server我们根本不需要花费太 …

vue elementui 实现图片上传后拖拽排序功能

vue elementui 实现图片上传后拖拽排序功能

Mysql基础2

清空一个表&#xff0c;自增id从1开始truncate table 表名; 查询 select 列名 from 表名 where 条件 order by 列名 [desc|asc] limit 跳过条数,查多少条 AS 别名 列名 as 新列名 注意as可以省掉不写 NULL值查询 select * from table1 where 字段 is null; 组合列 select conca…