RTP网络传输视频流理解分析

为何NAT里面的主机可以访问NAT外的WEB服务器,但不能获取RTSP流媒体服务器码流?

原因:

对于 HTTP 这样的协议,客户端与 WEB 服务器建立 socket 连接, 是由 WEB 服务器绑定一个固定的 TCP 端口,在这个端口监听。 位于 NAT 后面的客户端随机选择一个 TCP 端口 connect(2) WEB SERVER。

而对于 RTSP 流媒体服务器,采用 RTP 封装多媒体荷载的话,一般的实现是位于客户端这边的播放器看 UDP 5000 这个端口(也可定义为其他端口, 不过主流的播放器大多是这个端口)是否占用, 未占用则绑定这个端口;如果 UDP 5000 这个端口已经被占用了,则向上检查 UDP 5002(习惯上RTP使用偶数号端口,紧挨着的奇数号端口给RTCP使用)等,直到找到一个未使用的端口。然后请求流媒体码流前通过 RTSP 数据包交互告诉服务器播放器这边接收 RTP 数据包的端口, 流媒体服务器随机选择一个端口发送 RTP 包,并把即将启动的会话信息通过 SDP 格式以 RTSP 封装通知播放器。因此,对于 RTP 通信来说, 真正的服务端是在播放器这边,被动地接收 RTSP 服务器那边发送过来的 RTP 码流。

一般类型的 NAT 允许一个数据包通过的条件是:

    如果这个数据包是从 NAT 里面的设备向外网发送的, 允许通过。NAT 设备会查看这个数据包的源ip地址与端口及目的地址与端口信息,如果没有建立过映射关系就新建一个NAT映射关系: 把源ip与端口映射为NAT地址与一个新分配的端口,根据NAT设备类型的不同,映射关系不同:
        完全锥型、地址受限锥型和端口受限锥型是根据(源IP:源端口)建立一个(NAT地址:端口)的映射,
        对称型NAT把(源IP:源端口,目的IP:目的端口)映射为(NAT IP:NAT 端口)。

    如果这个数据包是从 NAT 外面发送给里面的,看这个数据包的信息能否在NAT映射表里找到对应的映射,找不到则禁止通过;若找的到,不同类型的 NAT 有不同的处理:
        完全锥型: 允许通过。
        地址受限锥型: 如果这个映射对应的NAT内部主机之前发送过数据包给这个外网主机,则允许通过,否则不允许。
        端口受限锥型: 如果这个映射对应的NAT内部主机之前发送过数据包给这个外网主机的端口,则允许通过,否则不允许。
        对称型: 因为映射就包含了源IP、源端口、目的IP、目的端口的所有信息,找到这个映射说明之前NAT里面对应的主机发过包给对应的外网主机,所以允许通过。

因此,位于 NAT 里面的主机可以这样正常的访问外网的 HTTP WEB服务器:发起HTTP请求时, NAT 会为这个会话建立一个映射关系,这样 WEB 服务器回应的包正好匹配这个映射,于是可以被客户端浏览器接收。

但是NAT里面的主机要请求流媒体就不行了:对于 RTSP 来说, 和 HTTP 一样可以正常通信, 关键是对于 RTP 包, 服务端是在 NAT 里面的播放器的,即使 RTSP 知道NAT里面播放器主机的地址以及NAT地址, RTP 包到达 NAT 时,属于上述的2的情况,由于之前没有建立映射关系,这个包将被 NAT 丢弃。

有的流媒体服务器会使用 HTTP 来封装流媒体,可以获取较好的穿透性, 不过需要实现自己的播放器才能解码了。
RTP 丢包的一个原因

用 UDP 封装的 RTP 传输视频码流, 播放出现花屏、马赛克的一个可能原因是丢包严重。UDP 在局域网 丢包不太可能是物理传输中的干扰(一般表现为 UDP 校验出错,可用 netstat -su 查看). 这里说说一个较常见的原因以及表现方式, 从Linux内核的角度来看, 就是 socket 缓存区满, 在播放器读取缓存区之前, 又一个视频码流数据过来, 那么, 这个udp数据包将丢失。

为什么会造成这个socket内核缓存区满呢? 有可能是下面的原因:

    播放器的平均处理数据速度小于流媒体服务器端发包速度;
    播放器平均处理速度大于对端发包速度, 但是发包速度抖动大, 而且内核socket读缓存区设置过小。

时间: 2024-09-14 01:11:17

RTP网络传输视频流理解分析的相关文章

嵌入式 RTP通话:视频流(H.264)的传输

从摄像头获取的视频数据,经过编码后(当然,也可以不编码,如果你觉得也很ok的话),既可以视频录制,同时如果需要,当然也可以视频远程传输咯,而实时传输协议(Real-time Transport Protocol,RTP)是在Internet上处理多媒体数据流的一种网络协议,利用它能够在一对一(unicast,单播)或者一对多(multicast,多播)的网络环境中实现传流媒体数据的实时传输(不需要下载完毕后才能看视频).RTP通常使用UDP来进行多媒体数据的传输,但如果需要的话可以使用TCP等其

解决TCP网络传输“粘包”问题

当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API).TCP/IP传输层有两个并列的协议:TCP和UDP.其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务.UDP(user datagram protocol,用户数据报协议)是无连接的,提供高效率服务.在实际工程应用中,对可靠性和效率的选择取决于应用的环境和需求.一般情况下,普通数据的网络传输采用高效率的udp,重要数据的网络传输采用

能帮你更好理解分析深度卷积神经网络,今天要解读的是一款新型可视化工具——CNNVis,看完就能用!

以下为译文: 更好的理解分析深度卷积神经网络   图1 CNNVis,一个能够帮助专家理解,分析与改进深度卷积神经网络的视觉分析工具 摘要:深度卷积神经网络(CNNs)在许多模式识别任务中取得了很大的性能突破, 然而高质量深度模型的发展依赖于大量的尝试,这是由于没有很好的理解深度模型是怎么工作的,在本文中,提出了一个可视化分析系统,CNNVis,帮助机器学习专家更好的理解.分析.设计深度卷积神经网络. 关键词:深度卷积神经网络,矩形填充,矩阵排序,边缘捆绑,双聚类 1 引言 深度卷积神经网络在许

网络协议X档案网络传输协议篇

网络协议--SLIP协议说明:全称Serial Line Internet Protocol(串行线路网际协议),该协议是Windows远程访问的一种旧工业标准,主要在Unix远程访问服务器中使用.因为SLIP协议是面向低速串行线路的,可以用于专用线路,也可以用于拨号线路,Modem的传输速率在1200bps到19200bps.应用:在Windows中要设置SLIP协议,比如在Windows 98中,假设已经创建了"拨号连接",右键单击该连接,选择"属性".接着,在

中国网络营销与网络传播的理解和解释性危机(2)

中国网络营销与网络传播的理解和解释性危机(1) 5.科学革命的四个阶段 托马斯·库恩在<科学革命的结构>一书中,为我们描绘和分析了科学革命发生的前后过程,库恩认为,科学的发生和发展一般要经历几个阶段:前科学时期,常规科学时期,反常和危机时期,科学革命时期,以及动态的周而复始过程,库恩所描绘的科学革命的结构是一种动态结构: 第一阶段,前科学时期:没有统一的科学共同体和公认的范式,存在许多竞争的学派.他们各执已见,经过长期争论后,才逐渐形成统一的理论.观点和方法,即"范式",于

VC 6 RTP流媒体传输协议编程实例(

资源下载:http://download.111cn.net/source/444512 实时流协议RTSP(RealTimeStreamingProtocol)是由RealNetworks和 Netscape共同提出的,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据.RTSP在体系结构上位于RTP(实时传输)和RTCP(实时控制)之上,它使用 TCP或RTP完成数据传输.HTTP与RTSP相比,HTTP传送HTML,而RTP传送的是多媒体数据.HTTP请求由客户机发出,服务器作

Verizon加入ONOS 加速网络传输服务

Verizon公司上周四宣布加入开源SDN开放网络操作系统(ONOS)项目,成为2016年首个加入该项目的服务提供商. Verizon将与其他的服务提供商和解决方案提供商如AT&T.NTT.南韩电信.中国联通.阿尔卡特朗讯.思科.爱立信.华为.英特尔等公司合作,加速开源SDN和NFV解决方案的采用. Verizon某技术专家表示,Verizon加入ON.Lab的ONOS项目并不是基于该公司业务的某一个特定方面或者是技术诉求,但是其总体意图是加快网络的传输速度. Verizon公司SDN/NFV架

网络传输协议(http协议)_基础知识

概述:指服务器和客户端间进行通信时的约束和规范,客户端与服务端的数据交互并不是杂乱无章的,需要遵照(基于)一定的规范进行 常见的协议: a) HTTP.HTTPS 超文本传输协议 b) FTP 文件传输协议 c) SMTP 简单邮件传输协议 本文主要介绍http超文本传输协议. 1.HTTP协议 即超文本传输协议,网站是基于HTTP协议的,例如网站的图片.CSS.JS等都是基于HTTP协议进行传输的.HTTP协议是由从客户机到服务器的请求(Request)和从服务器到客户机的响应(Respons

处理TCP网络传输“粘包”疑难

在应用开发过程中,笔者发现基于TCP网络传输的应用程序有时会出现粘包现象(即发送方发送的若干包数据到接收方接收时粘成一包).针对这种情况,我们进行了专题研究与实验.本文重点分析了TCP网络粘包问题,并结合实验结果提出了解决该问题的对策和方法,供有关工程技术人员参考. 一.TCP协议简介 TCP是一个面向连接的传输层协议,虽然TCP不属于iso制定的协议集,但由于其在商业界和工业界的成功应用,它已成为事实上的网络标准,广泛应用于各种网络主机间的通信. 作为一个面向连接的传输层协议,TCP的目标是为