NACK全称Negative acknowledgements,相关具体描述可以查看rfc4585(NACK)文档。如果音视频收发双发都支持RTCP-NACK,当接收端认为发送端过来的RTP数据有丢包,这时接收端会向RTCP(NACK)的报文,请求发送端发送网络传输过程中丢掉的RTP数据包,同一个RTCP-NACK反馈包,可以请求发送端重传多个RTP包,下面主要讲下NACK格式的RTCP报文的主要组成部分:

typedef struct rtcp_header
{
#if __BYTE_ORDER == __BIG_ENDIAN
    uint16_t version:2;
    uint16_t padding:1;
    uint16_t rc:5;
    uint16_t type:8;
#elif __BYTE_ORDER == __LITTLE_ENDIAN
    uint16_t rc:5;
    uint16_t padding:1;
    uint16_t version:2;
    uint16_t type:8;
#endif
    uint16_t length:16;
} rtcp_header;

/* Set header */
 rtcp-version = 2;//版本号
 rtcp->type = 205;//RTCP_RTPFB
 rtcp->rc = 1;    /* FMT=1 */

/*! \brief RTCP-FB (http://tools.ietf.org/html/rfc4585) */
typedef struct rtcp_fb
{
    /*! \brief Common header */
    rtcp_header header;
    /*! \brief Sender SSRC */
    uint32_t ssrc;
    /*! \brief Media source */
    uint32_t media;
    /*! \brief Feedback Control Information */
    char fci[1];
} rtcp_fb;

/*! \brief RTCP NACK (http://tools.ietf.org/html/rfc4585#section-6.2.1) */
typedef struct rtcp_nack
{
    /*! \brief Packet ID */
    uint16_t pid;
    /*! \brief bitmask of following lost packets */
    uint16_t blp;
} rtcp_nack;

如果只发送的RTCP-NACK报文中只要求发送端只重传一个RTP包,那么整个RTCP反馈包中的rtcp_nack数据只有一个;如果只发送的RTCP-NACK报文中只要求发送端只重传多个RTP包,则整个RTCP反馈包中的rtcp_nack数据有多个,其中每个rtcp_nack部分对应重传的一个RTP包。整个RTCP包的其它数据都只有一份。

RTCP丢包重传策略之NACK相关推荐

  1. Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析

    Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析 本文主要介绍WebRTC中丢包重传NACK的实现,作者:weizhenwei ,文章最早发表 ...

  2. android蓝牙丢包重传,华为TE Desktop Mobile软终端引领市场

    [IT168厂商动态] 华为自从2013年推出TE30以后,随着视讯行业的迅猛发展与客户对视讯要求的不断提高,华为继续推出了TE40.TE50.TE60三款全新的高清视频会议终端,能全方位覆盖从中小型 ...

  3. TCPIP协议栈的心跳、丢包重传、连接超时机制实例详解

    目录 1.问题概述 2.TCPIP协议栈的心跳机制 2.1.TCP中的ACK机制 2.2.TCPIP协议栈的心跳机制说明 2.3.修改TCPIP协议栈的默认心跳参数 3.libwebsockets开源 ...

  4. Wireshark tcptrace图关于丢包重传细节图解

    上周六写了< 在Wireshark的tcptrace图中看清TCP拥塞控制算法的细节(CUBIC/BBR算法为例)>,收到一封邮件,说我文中的图示画错了.         确实,关于CUB ...

  5. P2P穿透(ENet丢包重传)

    资源链接:http://download.csdn.net/download/yuanchunsi/10159049 P2P穿透成功后,获得对端IP和端口通过ENet进行连接传输数据,解决了UDP丢包 ...

  6. 云网络丢包故障定位全景指南

    作者简介:冯荣,腾讯云网络高级工程师,腾讯云网络核心开发人员. 万字长文  建议收藏 引言 本期分享一个比较常见的⽹络问题--丢包.例如我们去ping⼀个⽹站,如果能ping通,且⽹站返回信息全⾯,则 ...

  7. Linux下网络丢包故障定位

    Linux下网络丢包故障定位 | syxdevcode博客转载: 云网络丢包故障定位全景指南 硬件网卡丢包Ring Buffer溢出 如图所示,物理介质上的数据帧到达后首先由NIC(网络适配器)读取, ...

  8. UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?

    关注.星标公众号,直达精彩内容 素材来源:https://blog.csdn.net/LearnLHC/article/details/115268028 整理:技术让梦想更伟大 | 李肖遥 一.UD ...

  9. UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?UDP 的应用场景

    目录 一.UDP 报文格式 二.UDP 分片 1.UDP 有发送缓存区吗? 1>.先说结论: 2>.逐步分析: 2.UDP 分片 1>.UDP 包最佳传输大小 2>.分片问题 ...

  10. 网络编程之网络丢包故障如何定位?如何解决?

    引言 本期分享一个比较常见的网络问题--丢包.例如我们去ping一个网站,如果能ping通,且网站返回信息全面,则说明与网站服务器的通信是畅通的,如果ping不通,或者网站返回的信息不全等,则很可能是 ...

最新文章

  1. leetcode--无重复字符的最长子串--python
  2. linux上使用git把代码push到gitee上
  3. 控制科学对计算机能力的要求,0811控制科学与工程基本要求.pdf
  4. pl/sql远程连接oracle服务器问题(各种情况) .,plsql远程连接oracle服务器问题(各种情况).docx...
  5. Scala模式匹配中的变量
  6. “宝藏”大会NVIDIA GTC Digital来袭!这些AI前沿课程不容错过
  7. 六台机器搭建RedisCluster分布式集群
  8. 微信内置浏览器点击“返回”关闭窗口
  9. count(*)效率提高_2020年最新整理财务统计函数,学会让你财务统计效率提升95%以上...
  10. linux 配置远程日志服务器配置,配置远程日志服务器—实现日志的集中管理
  11. 您已购买此 App 内购买项目。此项目将免费恢复。This In-App purchase has already been bought.It will be restored for free.
  12. 3D目标检测-二阶段方法(region proposal-based Methods)之基于语义分割的方法(Segmentation based)解读
  13. 机器人工程行业算制造业吗
  14. git小游戏通关攻略(基础、高级、远程)
  15. 【译】Inside SafetyNet - part 3
  16. radio男女选择取值
  17. veracrypt加密mysql_VeraCrypt怎么用 VeraCrypt加密文件的图文教程方法
  18. loglog matlab,MATLAB 函数loglog()
  19. 共享内存 shmget函数
  20. windows下运行phalcon4.1.2,php7.4.3nts版本

热门文章

  1. PS--用法/快捷键
  2. 计算机网络 专有名词英文缩写
  3. Premiere 添加字幕
  4. PR字幕不显示的问题(已解决)
  5. SSH实战 第四天 代码
  6. 基于CM6800的ATX电源维修
  7. 阿里云域名如何拍卖?
  8. Dump+mysql导入_mysql mysqldump导入数据库
  9. Unity【Face Cap】- 关于人脸捕捉的解决方案(二)
  10. vtuber面部捕捉工具_做一名VTuber 虚拟UP主需要准备哪些?