rtp协议接收方.docx
- 文档编号:25570641
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:11
- 大小:23.05KB
rtp协议接收方.docx
《rtp协议接收方.docx》由会员分享,可在线阅读,更多相关《rtp协议接收方.docx(11页珍藏版)》请在冰豆网上搜索。
rtp协议接收方
竭诚为您提供优质文档/双击可除
rtp协议,接收方
篇一:
udp、tcp、Rtp三种协议的总结
udp、tcp、Rtp三种协议的总结
osi七层模型
osi中的层功能tcp/ip协议族
应用层文件传输,电子邮件,文件服务,虚拟终端tFtp,http,snmp,Ftp,smtp,dns,telnet表示层数据格式化,代码转换,数据加密没有协议
会话层解除或建立与别的接点的联系没有协议
传输层提供端对端的接口tcp,udp(Rtp)
网络层为数据包选择路由ip,icmp,Rip,ospF,bgp,igmp数据链路层传输有地址的帧以及错误检测功能slip,cslip,ppp,aRp,RaRp,mtu物理层以二进制数据形式在物理媒体上传输数据iso2110,ieee802,ieee802.2************************************************************************************************************************************tcp/ip五层模型的协议
应用层
传输层:
四层交换机、也有工作在四层的路由器
网络层:
路由器、三层交换机
数据链路层:
网桥(现已很少使用)、以太网交换机(二层交换机)、网卡(其实网卡是一半工作在物理层、一半工作在数据链路层)
物理层:
中继器、集线器、还有我们通常说的双绞线也工作在物理层
**************************************************************************************************************************************
一、Rtp协议分析
1、Rtp概述
1.1.Rtp是什么
Rtp全名是Real-timetransportprotocol(实时传输协议)。
它是ietF提出的一个标准,对应的RFc文档为RFc3550(RFc1889为其过期版本)。
RFc3550不仅定义了Rtp,而且定义了配套的相关协议Rtcp(Real-timetransportcontrolprotocol,即实时传输控制协议)。
Rtp用来为ip网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。
Rtp为internet上端到端的实时传输提供时间信息和流同步,但并不保证服务质量,服务质量由Rtcp来提供。
1.2.Rtp的应用环境
Rtp用于在单播或多播网络中传送实时数据。
它们典型的应用场合有如下几个。
(1)简单的多播音频会议。
语音通信通过一个多播地址和一对端口来实现。
一个用于音频数据(Rtp),另一个用于控制包(Rtcp)。
(2)音频和视频会议。
如果在一次会议中同时使用了音频和视频会议,这两种媒体将分别在不同的Rtp会话中传送,每一个会话使用不同的传输地址(ip地址+端口)。
如果一个用户同时使用了两个会话,则每个会话对应的Rtcp包都使用规范化名字cname(canonicalname)。
与会者可以根据Rtcp包中的cname来获取相关联的音频和视频,然后根据Rtcp包中的计时信息(networktimeprotocol)来实现音频和视频的同步。
(3)翻译器和混合器。
翻译器和混合器都是Rtp级的中继系统。
翻译器用在通过ip多播不能直接到达的用户区,例如发送者和接收者之间存在防火墙。
当与会者能接收的音频编码格式不一样,比如有一个与会者通过一条低速链路接入到高速会议,这时就要使用混合器。
在进入音频数据格式需要变化的网络前,混合器将来自一个源或多个源的音频包进行重构,并把重构后的多个音频合并,采用另一种音频编码进行编码后,再转发这个新的Rtp包。
从一个混合器出来的所有数据包要用混合器作为它们的同步源(ssRc,见Rtp的封装)来识别,可以通过贡献源列表(csRc表,见Rtp的封装)可以确认谈话者。
1.3.流媒体
流媒体是指internet上使用流式传输技术的连续时基媒体。
当前在internet上传输音频和视频等信息主要有两种方式:
下载和流式传输两种方式。
下载情况下,用户需要先下载整个媒体文件到本地,然后才能播放媒体文件。
在视频直播等应用场合,由于生成整个媒体文件要等直播结束,也就是用户至少要在直播结束后才能看到直播节目,所以用下载方式不能实现直播。
流式传输是实现流媒体的关键技术。
使用流式传输可以边下载边观看流媒体节目。
由于internet是基于分组传输的,所以接收端收到的数据包往往有延迟和乱序(流式传输构建在udp上)。
要实现流式传输,就是要从降低延迟和恢复数据包时序入手。
在发送端,为降低延迟,往往对传输数据进行预处理(降低质量和高效压缩)。
在接收端为了恢复时序,采用了接收缓冲;而为了实现媒体的流畅播放,则采用了播放缓冲。
使用接收缓冲,可以将接收到的数据包缓存起来,然后根据数据包的封装信息(如包序号和时戳等),将乱序的包重新排序,最后将重新排序了的数据包放入播放缓冲播放。
为什么需要播放缓冲呢?
容易想到,由于网络不可能很理想,并且对数据包排序需要处理时耗,我们得到排序好的数据包的时间间隔是不等的。
如果不用播放缓冲,那么播放节目会很卡,这叫时延抖动。
相反,使用播放缓冲,在开始播放时,花费几十秒钟先将播放缓冲填满(例如ppliVe),可以有效地消除时延抖动,从而在不太损失实时性的前提下实现流媒体的顺畅播放。
到目前为止,internet上使用较多的流式视频格式主要有以下三种:
Realnetworks公司的Realmedia,apple公司的quicktime以及microsoft公司的advancedstreamingFormat(asF)。
上面在谈接收缓冲时,说到了流媒体数据包的封装信息(包序号和时戳等),这在后面的Rtp封装中会有体现。
另外,Realmedia这些流式媒体格式只是编解码有不同,但对于Rtp来说,它们都是待封装传输的流媒体数据而没有什么不同。
2、Rtp详解
2.1.Rtp的协议层次
2.1.1.传输层的子层
Rtp(实时传输协议),顾名思义它是用来提供实时传输的,因而可以看成是传输层的一个子层。
图1给出了流媒体应用中的一个典型的协议体系结构。
图2给出了Rtp协议与其他协议之间的关系。
图1流媒体体系结构
图2Rtp协议与其他协议的关系
Rtp、tcp、udp都属于传输层协议;Rtp也可以认为是介于应用层与传输层之间
从图中可以看出,Rtp被划分在传输层,它建立在udp上。
同udp协议一样,为了实现其实时传输功能,Rtp也有固定的封装形式。
Rtp用来为端到端的实时传输提供时间信息和流同步,但并不保证服务质量。
服务质量由Rtcp来提供。
2.1.2.应用层的一部分
不少人也把Rtp归为应用层的一部分,这是从应用开发者的角度来说的。
操作系统中的tcp/ip等协议栈所提供的是我们最常用的服务,而Rtp的实现还是要靠开发者自己。
因此从开发的角度来说,Rtp的实现和应用层协议的实现没不同,所以可将Rtp看成应用层协议。
Rtp实现者在发送Rtp数据时,需先将数据封装成Rtp包,而在接收到Rtp数据包,需要将数据从Rtp包中提取出来。
2.2.Rtp的封装
一个协议的封装是为了满足协议的功能需求的。
从前面提出的功能需求,可以推测出Rtp封装中应该有同步源和时戳等字段,但更为完整的封装是什么样子呢?
请看图3。
图3Rtp的头部格式
版本号(V):
2比特,用来标志使用的Rtp版本。
填充位(p):
1比特,如果该位置位,则该Rtp包的尾部就包含附加的填充字节。
扩展位(x):
1比特,如果该位置位的话,Rtp固定头部后面就跟有一个扩展头部。
csRc计数器(cc):
4比特,含有固定头部后面跟着的csRc的数目。
标记位(m):
1比特,该位的解释由配置文档(profile)来承担.
载荷类型(pt):
7比特,标识了Rtp载荷的类型。
序列号(sn):
16比特,发送方在每发送完一个Rtp包后就将该域的值增加1,接收方可以由该域检测包的丢失及恢复包序列。
序列号的初始值是随机的。
时间戳:
32比特,记录了该包中数据的第一个字节的采样时刻。
在一次会话开始时,时间戳初始化成一个初始值。
即使在没有信号发送时,时间戳的数值也要随时间而不断地增加(时间在流逝嘛)。
时间戳是去除抖动和实现同步不可缺少的。
同步源标识符(ssRc):
32比特,同步源就是指Rtp包流的来源。
在同一个Rtp会话中不能有两个相同的ssRc值。
该标识符是随机选取的RFc1889推荐了md5随机算法。
贡献源列表(csRclist):
0~15项,每项32比特,用来标志对一个Rtp混合器产生的新包有贡献的所有Rtp包的源。
由混合器将这些有贡献的ssRc标识符插入表中。
ssRc标识符都被列出来,以便接收端能正确指出交谈双方的身份。
2.3.Rtcp的封装
Rtp需要Rtcp为其服务质量提供保证,因此下面介绍一下Rtcp的相关知识。
Rtcp的主要功能是:
服务质量的监视与反馈、媒体间的同步,以及多播组中成员的标识。
在Rtp会话期间,各参与者周期性地传送Rtcp包。
Rtcp包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,各参与者可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。
Rtp和Rtcp配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。
从图1可以看到,Rtcp也是用udp来传送的,但Rtcp封装的仅仅是一些控制信息,因而分组很短,所以可以将多个Rtcp分组封装在一个udp包中。
Rtcp有如下五种分组
表1Rtcp的5种分组类型
上述五种分组的封装大同小异,下面只讲述sR类型,而其它类型请参考RFc3550。
发送端报告分组sR(senderReport)用来使发送端以多播方式向所有接收端报告发送情况。
sR分组的主要内容有:
相应的Rtp流的ssRc,Rtp流中最新产生的Rtp分组的时间戳和ntp,Rtp流包含的分组数,Rtp流包含的字节数。
sR包的封装如图3所示。
图3Rtcp头部的格式
版本(V):
同Rtp包头域。
填充(p):
同Rtp包头域。
篇二:
RtspRtp协议解释
Rtsp协议详解
1.协议简介
Rtsp,实时流传输协议,是tcp/ip协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过ip网络传送多媒体数据。
它是类似http协议的流控制协议。
它们都使用纯文本来发送信息,而且Rtsp协议的语法也和http类似。
Rtsp协议的默认端口是554,默认的承载协议为tcp。
Rtsp协议以客户服务器方式工作,它是一个多媒体播放控制协议,用来使用户对从因特网上下载的实时数据能够进行控制,如录制、暂停、继续、后退、前进等。
2.报文结构
Rtsp报文有两类:
请求报文和响应报文。
请求报文是指从客户端向服务器发送请求报文,响应报文是指从服务器到客户的回答。
由于Rtsp是面向正文(text-oriented)的,因此在报文中的每一个字段都是一些ascii字符串,因而每个字段的长度都是不确定的。
Rtsp报文由三部分组成:
开始行、首部行和实体主体。
在请求报文中,开始行就是请求行,Rtsp请求报文的结构如下图:
Rtsp请求报文的方法包括:
options、descRibe、setup、teaRdown、play、pause、RecoRd、get_paRameteR和set_paRameteR。
Rtsp请求报文的常用方法及作用如下表所示:
响应报文的开始行是状态行,Rtsp响应报文的结构如下图:
3.工作原理
一个标准的Rtsp流传输过程如下:
c表示Rtsp客户端,s表示Rtsp服务端
①c->s:
optionrequest//询问s有哪些方法可用
s->c:
optionresponse//s回应信息中包括提供的所有可用方法
②c->s:
descRiberequest//要求得到s提供的媒体初始化描述信息
s->c:
descRiberesponse//s回应媒体初始化描述信息,主要是sdp
③c->s:
setuprequest//设置会话属性,以及传输模式,提醒s建立会话s->c:
setupresponse//s建立会话,返回会话标识符及会话相关信息④c->s:
playrequest//c请求播放
s->c:
playresponse//s回应请求信息
s->c:
发送流媒体数据
⑤c->s:
teaRdownrequest//c请求关闭会话
s->c:
teaRdownresponse//s回应请求
上述的过程是标准的Rtsp播放流程,其中第3步和第4步是必需的。
Rtp协议详解
一、Rtp报文头解析
1)V:
Rtp协议的版本号,占2
位,当前协议版本号为2
2)p:
填充标志,占1位,如果p=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。
3)x:
扩展标志,占1位,如果x=1,则在Rtp报头后跟有一个扩展报头
4)cc:
csRc计数器,占4位,指示csRc标识符的个数
5)m:
标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。
6)pt:
有效荷载类型,占7位,用于说明Rtp报文中有效载荷的类型,如gsm音频、jpem图像等,在流媒体中大部分是用来区分音频流和视频流的,这样便于客户端进行解析。
7)序列号:
占16位,用于标识发送者所发送的Rtp报文的序列号,每发送一个报文,序列号增1。
这个字段当下层的承载协议用udp的时候,网络状况不好的时候可以用来检查丢包。
同时出现网络抖动的情况可以用来对数据进行重新排序,序列号的初始值是随机的,同时音频包和视频包的sequence是分别记数的。
8)时戳(timestamp):
占32位,必须使用90khz时钟频率。
时戳反映了该Rtp报文的第一个八位组的采样时刻。
接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。
9)同步信源(ssRc)标识符:
占32位,用于标识同步信源。
该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的ssRc。
10)特约信源(csRc)标识符:
每个csRc标识符占32位,可以有0~15个。
每个csRc标识了包含在该Rtp报文有效载荷中的所有特约信源。
注:
基本的Rtp说明并不定义任何头扩展本身,如果遇到x=1,需要特殊处理取一段码流如下:
80e0001e0000d2f000000000419b6b49........aki
e10f2653021aff0659971dd22e8c5001.|
f6e129d5d6a4ef3e(rtp协议,接收方)12d8fd6c9751e7e9)>.lqcfc75ec8a951f68265d6485a86b0e08c^qehz
其中,
80是V_p_x_cc
e0是m_pt
001e是sequencenum
0000d2f0是timestamp
00000000是ssRc
把前两字节换成二进制如下
1000000011100000
按顺序解释如下:
10是V;
0是p;
0是x;
0000是cc;
1是m;
1100000是pt;
篇三:
控制协议
osi七层模型
osi中的层功能tcp/ip协议族
应用层文件传输,电子邮件,文件服务,虚拟终端tFtp,http,snmp,Ftp,smtp,dns,telnet
表示层数据格式化,代码转换,数据加密没有协议
会话层解除或建立与别的接点的联系没有协议
传输层提供端对端的接口tcp,udp(Rtp)
网络层为数据包选择路由ip,icmp,Rip,ospF,bgp,igmp
数据链路层传输有地址的帧以及错误检测功能slip,cslip,ppp,aRp,RaRp,mtu
物理层以二进制数据形式在物理媒体上传输数据iso2110,ieee802,ieee802.2
tcp/ip五层模型的协议
应用层
传输层:
四层交换机、也有工作在四层的路由器
网络层:
路由器、三层交换机
数据链路层:
网桥(现已很少使用)、以太网交换机(二层交换机)、网卡(其实网卡是一半工作在物理层、一半工作在数据链路层)
物理层:
中继器、集线器、还有我们通常说的双绞线也工作在物理层Rtp的工作机制
当应用程序建立一个Rtp会话时,应用程序将确定一对目的传输地址。
目的传输地址由一个网络地址和一对端口组成,有两个端口:
一个给Rtp包,一个给Rtcp包,使得Rtp/Rtcp数据能够正确发送。
Rtp数据发向偶数的udp端口,而对应的控制信号Rtcp数据发向相邻的奇数udp端口(偶数的udp端口+1),这样就构成一个udp端口对。
Rtp的发送过程如下,接收过程则相反。
1)Rtp协议从上层接收流媒体信息码流(如h.263),封装成Rtp数据包;Rtcp从上层接收控制信息,封装成Rtcp控制包。
2)Rtp将Rtp数据包发往udp端口对中偶数端口;Rtcp将Rtcp控制包发往udp端口对中的奇数端口。
Rtp分组只包含Rtp数据,而控制是由另一个配套使用的Rtcp协议提供。
Rtp在1025到65535之间选择一个未使用的偶数udp端口号,而在同一次会话中的Rtcp则使用下一个奇数udp端口号。
端口号5004和5005分别用作Rtp和Rtcp的默认端口号。
Rtp位于udp之上,udp虽然没有tcp那么可靠,并且无法保证实时业务的服务质量,需要Rtcp实时监控数据传输和服务质量,但是,由于udp的传输时延低于tcp,能与视频和音频很好匹配。
因此,在实际应用中,Rtp/Rtcp/udp用于音频/视频媒体,而tcp用于数据和控制信令的传输。
udp和tcp协议的主要区别是两者在如何实现信息的可靠传递方面不同。
tcp协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。
所以tcp必udp多了建立连接的时间。
相对udp而言,tcp具有更高的安全性和可靠性。
tcp协议传输的大小不限制,一旦连接被建立,双方可以按照一定的格式传输大量的数据,而udp是一个不可靠的协议,大小有限制,每次不能超过64k。
相对于tcp协议,udp协议的另外一个不同之处在于如何接收突法性的多个数据报。
不同于tcp,udp并不能确保数据的发送和接收顺序。
三者的性能对比见表1。
表1三种协议的性能对比
Rtp:
实时传输协议(Real-timetransportprotocol)
Rtp/Rtcp是实际传输数据的协议
Rtp传输音频/视频数据,如果是play,server发送到client端,如果是RecoRd,
可以由client发送到server
整个Rtp协议由两个密切相关的部分组成:
Rtp数据协议和Rtp控制协议(即Rtcp)
Rtsp:
实时流协议(Realtimestreamingprotocol,Rtsp)
Rtsp的请求主要有descRibe,setup,play,pause,teaRdown,options等,顾名思义可
以知道起对话和控制作用
Rtsp的对话过程中setup可以确定Rtp/Rtcp使用的端口,play/pause/teaRdown
可以开始或者停止Rtp的发送,等等
Rtcp:
Rtp/Rtcp是实际传输数据的协议Rtcp包括senderReport和ReceiverReport,用来进行音频/
视频的同步以及其他用途,是一种控制协议
Rtcp控制协议需要与Rtp数据协议一起配合使用,当应
用程序启动一个Rtp会话时将同时占用两个端口,分别供Rtp和Rtcp使用。
Rtp本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由Rtcp来负责完成。
通常Rtcp会采用与Rtp相同的分发机制,向会话中的所有成员周期性地发送控制信息,应用程序通过接收这些数据,从中获取会话参与者的相关资料,以及网络状况、分组丢失概率等反馈信息,从而能够对服务质量进行控制或者对网络状况进行诊断。
Rtcp协议的功能是通过不同的Rtcp数据报来实现的,
主要有如下几种类型:
sR:
发送端报告,所谓发送端是指发出Rtp数据报的应用
程序或者终端,发送端同时也可以是接收端。
RR:
接收端报告,所谓接收端是指仅接收但不发送Rtp数
据报的应用程序或者终端。
sdes:
源描述,主要功能是作为会话成员有关标识信息的
载体,如用户名、邮件地址、电话号码等,此外还具有向会话成员传达会话控制信息的功能。
bye:
通知离开,主要功能是指示某一个或者几个源不再有
效,即通知会话中的其他成员自己将退出会话。
app:
由应用程序自己定义,解决了Rtcp的扩展性问题,
并且为协议的实现者提供了很大的灵活性。
Rtcp数据报携带有服务质量监控的必要信息,能够对服
务质量进行动态的调整,并能够对网络拥塞进行有效的控制。
由于Rtcp数据报采用的是多播方式,因此会话中的所有成员都可以通过Rtcp数据报返回的控制信息,来了解其他参与者的当前情况。
在一个典型的应用场合下,发送媒体流的应用程序将周期性地产生发送端报告sR,该Rtcp数据报含有不同媒体流间的同步信息,以及已经发送的数据报和字节的计数,接收端根据这些信息可以估计出实际的数据传输速率。
另一方面,接收端会向所有已知的发送端发送接收端报告RR,该Rtcp数据报含有已接收数据报的最大序列号、丢失的数据报数目、延时抖动和时间戳等重要信息,发送端应用根据这些信息可以估计出
往返时延,并且可以根据数据报丢失概率和时延抖动情况动态调整发送速率,以改善网络拥塞状况,或者根据网络状况平滑地调整应用程序的服务质量。
Rtsp实时流协议
作为一个应用层协议,Rtsp提供了一个可供扩展的框架,它的意义在于使得实时流媒体数据的受控和点播变得可能。
总的说来,Rtsp是一个流媒体表示协议,主要用来控制具有实时特性的数据发送,但它本身并不传输数据,而是必须依赖于下层传输协议所提供的某些服务。
Rtsp可以对流媒体提供诸如播放、暂停、快进等操作,它负责定义具体的控制消息、操作方法、状态码等,此外还描述了与Rtp间的交互操作(RFc2326)。
Rtsp在制定时较多地参考了http/1.1协议,甚至许多描述与http/1.1完全相同。
Rtsp之所以特意使用与http/1.1类似的语法和操作,在很大程度上是为了兼容现有的web基础结构,正因如此,http/1.1的扩展机制大都可以直接引入到Rtsp中。
由Rtsp控制的媒体流集合可以用表示描述(presentationdescription)来定义,所谓表示是指流媒体服务器提供给客户机的一个或者多个媒体流的集合,而表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- rtp 协议 接收