【无标题】

OSI 七层物理模型

  • 物理层:传输比特流
  • 数据链路层:帧;物理链路不可靠,本层通过协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的可靠信道
  • 网络层:报文,计算机网络中有多台计算机,如何找到要发的那台;通过路由选择算法,为报文通过通信子网选择最适当的路径 ;
  • 传输层:TPDU,保证报文的正确传输
  • 会话层:SPDU,建立和管理应用程序之间的通信
  • 表示层:PPDU,数据转换
  • 应用层:APDU

网络层的协议:IP 、ARP(地址解析协议)、ICMP(控制报文协议,用于在IP主机、路由器之间传递控制消息)

传输层的协议:TCP UDP RTP

应用层板的协议:HTTP FTP(文件传输协议)POP3(邮件) RTSP(实时传输协议)

RTP RTSP RTCP 的区别于联系

RTP位于传输层,用于实时数据的传输工作,一般使用UDP传送数据

RTP的可靠传输通过RTCP来实现;当应用程序开始一个RTP会话时,将开启两个端口:一个给RTP,一个给RTCP。RTP本身并不能为“按顺序传输数据包”提供可靠的传输送制,也不提供流量控制和拥塞控制服务,而是****依赖RTCP提供这些服务

RTSP位于应用层,使用TCP或UDP完成传输
【无标题】_第1张图片

RTP 封装协议

RTP数据包如何确定?

一直有这个疑惑,公司的rtp数据包被前端添加了一个 0x887766550300 的头,因此可以快速确定;那么端到端的rtp包 是如何确定这是一个包的开头呢?

RTP包是基于UDP协议进行传输的;当应用程序建立一个RTP会话的时候,会确定1个目的传输地址,以及 1对端口,一个端口用于接收/发送RTP包,另一个端口用于接收/发送RTCP包,

因此,每一个UDP包负载里面就是一个RTP包/RTCP包

RTP包头
【无标题】_第2张图片

RTP包头最少12字节,其中 PT 表示载荷类型,timestamp 时戳占32位,必须是90kHz时钟频率

RTP头后是RTP载荷,载荷第一个字节和Nalu头一样:
【无标题】_第3张图片

0 没有定义
1-23 NAL单元 单个 NAL 单元包.
24 STAP-A 单一时间的组合包
25 STAP-B 单一时间的组合包
26 MTAP16 多个时间的组合包
27 MTAP24 多个时间的组合包
28 FU-A 分片的单元
29 FU-B 分片的单元
30-31 没有定义

RTP载荷 h264数据时,需要去掉起始码0x(00) 00 00 01

PS封装协议

PS流由众多PS包组成,每个PS包的基本构成形式为:

PS Header+ SYS Header + PSM Header + PES Header + PES packet * N
固定包头+系统头+映射头+PES头 + 负载

你可能感兴趣的:(音视频,网络,udp,tcp/ip)