初识RTP协议(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuewen2008/article/details/90415611

最近项目中需要用到rtp协议 之前对网络协议这块不太了解 最近学了一下基本协议 学习了极客时间的 趣谈网络协议专栏以及linux性能优化专栏的网络性能分析部分 受益匪浅 今天就做个简单的小结。

一、 UDP协议

Linux系统四层网络参考模型中的传输层两个重要协议就是TCP和UDP协议。其中UDP即User DataProgram Protocol用户数据报协议 它提供面向事物的简单的不可靠的信息传送服务。
UDP是一种无连接的协议。也就是传输数据时源端口和目的端口不需要建立连接,
由于不需要建立连接 因而也就不需要维护连接状态
UDP数据包的包头只有8个字节而TCP协议的包头有20个字节。
如下是我抓的基于rtp协议的视频流传输网络数据包,RTP协议往下基于UDP传输 封装了UDP协议的包头。UDP协议包头总共8个字节。

在这里插入图片描述

其中UDP数据包包头的数据格式定义如下
第两个字节为源端口号
第3字节和第4字节为目的端口号
第5字节和第6字节为数据包的长度
第7字节和第8字节为数据报文的校验和

在这里插入图片描述

二、RTP协议

RTP协议主要用于实时数据传输,应用场景包括了音频视频传输等。RFC3550协议中没有明确指定RTP所依赖传输层协议(UDP或TCP),但是在绝大多数的实时流媒体系统都是基于UDPUDP的特点是数据包处理快(不可靠,简单直接),这种特点非常适合对延迟度要求高的实时流媒体系统。

在这里插入图片描述

如下图为RTP协议的包头数据定义

在这里插入图片描述

RTP协议的包头包含了12个字节。

RTP包头的核心字段:
M标识位

:Mark标识位,用于标识一段视频序列包是否结束。因为视频的数据量大,视频序列可能会包括在多个RTP包中。需要标识位指示序列也结束。

PT

Payload type 标识RTP携带的媒体数据的类型。通过该字段可以知道RTP包携带的是什么类型的编码格式,比如是音频流还是视频流等。

Sequence number

序列号,用于标识RTP包的顺序。我们知道对视频来说是有严格是时序的,那么在网络上传输的数据包必须有能标识顺序的字段,该字段是加1递增的

Timestamp

标准中规定的是对应于每个RTP包携带的视/音频的采样时间,注意并不是指定的时钟时间,这里的采样时间通过音频或视频的一个采用周期来换算的,换算公式: ts_current_90000hz = (当前系统时间ms - start_time_ms) * 90000.0 / 1000.0这个字段值有比较多的灵活性,常见的生成值方案有:根据实际的采样时间,按照固定的音视频采样周期递增,比如以40ms的周期递增,那么每个RTP的时间戳间隔就9000*40ms = 3600。

SSRC

一条RTP流的唯一标识,有多条RTP流,那么每条 RTP流的SSRC是不能相同的

以上字段刚开始分析协议时需要注意pt类型 因为该类型用来标识rtp协议传输到底是音频流还是视频流,那么pt类型又有哪些定义呢?具体如下

在这里插入图片描述

在这里插入图片描述

三、网络问题分析

  1. 丢包: seqnumber 是否按照顺序依次增加
  2. Mark位: 时间戳相同包的序列最后一个包需要打mark位 接收端依据mark值来组包。
  3. Ssrc:是否一致
  4. 乱序: 还是通过seq number来判断是否乱序 对于视频流来说乱序将导致视频播放异常

四、SDP协议

SDP协议即 Session Description Procotol会话描述协议。描述本端的媒体支持的能力,将自己的媒体能力告诉对端。SDP目的就是在媒体会话中,传递媒体流信息,允许会话描述的接收者去参与会话。SDP基本上在internet上工作。他定义了会话描述的统一格式,但并不定义多播地址的分配和SDP消息的传输,也不支持媒体编码方案的协商,这些功能均由下层传送协议完成。典型的会话传送协议包括:SAP(Session Announcement Protocol会话公告协议),SIP(Session Initiation Protocol,会话初始协议),RTSP,HTTP,和使用MIME的E-Mail。

在这里插入图片描述

SDP包括以下一些方面:
(1)会话的名称和目的
(2)会话存活时间
(3)包含在会话中的媒体信息,包括:
媒体类型(video,audio, etc)
传输协议(RTP/UDP/IP,H.320, etc)
媒体格式(H.261video, MPEG video, etc)
多播或远端(单播)地址和端口
(4)为接收媒体而需的信息(addresses, ports, formats and so on)
(5)使用的带宽信息
(6)可信赖的接洽信息(Contact information)

对于rtp协议目前只是了解 随着问题分析过程 还需要继续深入学习。

猜你喜欢

转载自blog.csdn.net/yuewen2008/article/details/90415611
今日推荐