0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何检测丢包?常用这两种方式

亿佰特物联网应用专家 2023-08-25 08:22 次阅读

丢包重传是数据通信应用里面一项非常重要的功能,特别是在无线通信中是一项决定通信协议先进程度的指标。今天主要着重介绍如何检测丢包,之后再介绍重传机制。

如何检测丢包?

要想丢包重传,首先必须得检测到丢包,没有丢包就没有重传。在无线通信中,对于丢包的检测通常有两种方式:载波监听应答机制

01

载波侦听

载波侦听是一种常见的丢包检测方法,而在载波侦听基础之上又发展出CSMA/CA。CSMA/CA也可以看做一种重传机制,我们经常使用的Wi-FiZigBee就采用了这种机制。通信设备在发送消息前,会打开接收并维持一段很短的时间。在这个很短的时间内,无线单元会检测同频段是否有其它的干扰信号,例如ZigBee设备在做载波侦听时,既要检测是否有Wi-Fi、蓝牙在发射信号,又会检测是否有其它的ZigBee在发射信号。如果干扰信号来自Wi-Fi或者蓝牙,ZigBee设备会测量它的功率有没有自己大,功率没自己大就压过去,功率比自己大就果断丢包;而ZigBee设备在载波侦听时如果遇到其它的ZigBee设备,不管对方功率是否比自己大,都会主动丢包,即让别人先走。

02

应答机制

判断丢包的另一个方法是增加应答机制,通常通信协议都会有OSI七层模型。七层协议中从链路层开始,每一层都可以添加应答机制。层级越低越接近硬件,应答机制的响应就越快。

77683972-42dd-11ee-8e12-92fbcf53809c.png

OSI七层模型

我们还是以ZigBee的应答机制为例。ZigBee的OSI模型,具有应答机制的目前仅限MAC层(数据链路层)APS层(传输层)。但是在实际应用中,很多时候还会为应用层添加应答机制。MAC层的应答是响应最快的,也叫做MAC-ACK,通常都在ZigBee的无线收发单元中硬件自动产生。接收端设备收到ZigBee数据帧后120微秒以广播的方式发出来。同时MAC-ACK也是ZigBee中最短的帧,帧长只有5字节,加上帧前导码和同步帧累计11字节。按照ZigBee的250kbps传输速率每个字节需要32微秒,一个MAC-ACK帧的占空时间352微秒。也就意味着发送端在发送一个MAC帧后,会在120+352=472微秒后收到该MAC帧对应的MAC-ACK。同样ZigBee的MAC层也规定发送端如果在540微秒内没有收到对应的MAC-ACK则认为是丢包。

MAC-ACK采用广播发送,首先可以减少MAC-ACK帧中表示地址的字段,减少帧长度,让ACK帧占空时间更短,发送端可以根据MAC-ACK帧中的帧序号来判断是否自己的MAC-ACK;其次MAC-ACK采用广播的方式,也可以提醒其它的ZigBee设备自己正在通信,其它的ZigBee设备如果这个时候也在进行载波侦听,就能主动避让正在通信的设备。在ZigBee的MAC层,载波侦听和MAC-ACK是双管齐下,这样能保证丢包检测的准确性。另外ZigBee的广播消息是不会产生MAC-ACK的。

77bdd800-42dd-11ee-8e12-92fbcf53809c.png

ZigBee参考模型

多元化的丢包检测机制

ZigBee除了MAC层有应答机制,传输层和应用层也有应答机制。ZigBee是一个多跳的Mesh网络,而MAC层的传输只能满足单跳传输,因此ZigBee在传输层也做了应答,也叫做APS-ACK。ZigBee发送端把一个消息传输给ZigBee接收端,中间会经过多个ZigBee路由器节点的转发。接收端收到消息后,会通过相同的路由路径,把APS-ACK发给发送端,发送端收到APS-ACK就认为发送消息到达了接收端。如果发送端在6秒(默认值)后没有收到APS-ACK则会认为数据丢包。

ZigBee的系统中通常都只对应用层开放接口,在应用层开放的接口中最常见的就是一个叫做“AF Data Confirm”的检测接口,它综合了MAC层丢包(含MAC-ACK丢包和载波侦听丢包)、网络层丢包及传输层丢包等底层丢包信息。ZigBee的顶层应用中可以知道当前发送的消息是否丢包。

应用层的应答

MAC层和传输层的丢包检测,都属于系统层的丢包。还有一种丢包就是应用层的丢包,比如一个调光开关给一个空调设备发了一条“把亮度调到50%”的指令。这条指令如果不丢包,会有什么结果?肯定是空调会去执行“把亮度调到50%”,但是空调只有温度没有亮度,也就是说这条指令发给了不该发的目标。这个时候就需要应用层的应答来解决这个问题。比如空调收到了“把亮度调到50%”后,可以向发送端回复应用层应答“看清楚我不是灯泡”。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 无线
    +关注

    关注

    31

    文章

    5340

    浏览量

    171931
  • 检测
    +关注

    关注

    5

    文章

    4220

    浏览量

    90931
  • 数据通信
    +关注

    关注

    2

    文章

    418

    浏览量

    33592
  • CSMA
    +关注

    关注

    0

    文章

    28

    浏览量

    12960
收藏 人收藏

    评论

    相关推荐

    PCBA加工中常见的两种焊接方式详解

    ,在PCBA行业中经常被使用。接下来深圳PCBA加工厂家为大家详细介绍PCBA加工手工焊接的两种方式,为您揭秘行业内的技术细节。 PCBA加工过程中常用焊接方式 第一
    的头像 发表于 06-14 09:18 144次阅读

    异或门两种常见的实现方式

    这两种实现方式都能够实现异或门的功能,具体的选择取决于设计需求和逻辑门的可用性。实际构建异或门时,可以使用离散电子元件(如晶体管、二极管等)或整合电路芯片(如 TTL、CMOS 等)来实现。
    的头像 发表于 02-04 17:30 6845次阅读
    异或门<b class='flag-5'>两种</b>常见的实现<b class='flag-5'>方式</b>

    网络率正常范围及其影响因素

    网络中,数据是以IP分组的形式传输的,每个数据都有一个唯一的标识符。当接收方未能收到发送方发送的数据时,就称为发生了。通常,网络
    的头像 发表于 12-29 14:45 2789次阅读

    常见的网络故障定位⽅法

    本期分享一个比较常见的⽹络问题--。例如我们去ping⼀个⽹站,如果能ping通,且⽹站返回信息全⾯,则说明与⽹站服务器的通信是畅通的,如果ping不通,或者⽹站返回的信息不全等,则很可能是数据
    的头像 发表于 12-07 09:48 941次阅读
    常见的网络<b class='flag-5'>丢</b><b class='flag-5'>包</b>故障定位⽅法

    VCXO和TCXO:两种常用的晶体振荡器,你了解它们的原理和应用吗?

    VCXO和TCXO:两种常用的晶体振荡器,你了解它们的原理和应用吗?
    的头像 发表于 12-06 14:55 1083次阅读
    VCXO和TCXO:<b class='flag-5'>两种</b><b class='flag-5'>常用</b>的晶体振荡器,你了解它们的原理和应用吗?

    redis两种持久化方式的区别

    的完整性和一致性。 Redis提供了两种持久化方式:RDB(Redis Database)和AOF(Append Only File)。这两种方式各有优劣,下面我们将详细介绍它们的区别
    的头像 发表于 12-04 11:12 332次阅读

    三相交流负载常见的两种连接方式

    。下面将详细介绍这两种连接方式的特点和应用。 1. 星型连接 星型连接也被称为Y型连接,它是三相交流负载中最常见的一连接方式。在星型连接中,三个负载元件或负载分支连接在一起,形成一个
    的头像 发表于 11-13 16:09 1838次阅读

    malloc 申请内存的两种方式

    我们知道malloc() 并不是系统调用,也不是运算符,而是 C 库里的函数,用于动态分配内存。 malloc 申请内存的时候,会有两种方式向操作系统申请堆内存: 方式一:通过 brk() 系统调用
    的头像 发表于 11-13 11:42 1581次阅读
    malloc 申请内存的<b class='flag-5'>两种</b><b class='flag-5'>方式</b>

    网络问题分析

    通常会带来严重的性能下降,特别是对 TCP 来说,通常意味着网络拥塞和重传,进而还会导致网络延迟增大、吞吐降低。 一、 哪里可能 接下来,我就以最
    的头像 发表于 11-13 11:24 589次阅读
    网络<b class='flag-5'>丢</b><b class='flag-5'>包</b>问题分析

    sqlite数据插入的两种方式比较

    sqlite工具提供两种数据插入方式,全部使用Execute SQL(Ploy)函数
    的头像 发表于 11-13 09:33 648次阅读

    串口接收数据的两种方式是什么

    上方是发送数据的例子,那么串口接收又该如何配置,又要在串口发送的例子上做哪些更改呢? 这里我们可以通过查询或者中断的方式来进行接收数据的两种方式。 查询方式就是通过不断的查询RXNE标
    的头像 发表于 11-10 16:20 1513次阅读
    串口接收数据的<b class='flag-5'>两种</b><b class='flag-5'>方式</b>是什么

    网络故障如何定位

    引言 本期分享一个比较常见的网络问题--。例如我们去ping一个网站,如果能ping通,且网站返回信息全面,则说明与网站服务器的通信是畅通的,如果ping不通,或者网站返回的信息不全等,则很可能
    的头像 发表于 11-10 11:27 782次阅读
    网络<b class='flag-5'>丢</b><b class='flag-5'>包</b>故障如何定位

    基于V682-SONiC交换机的实现网络检测的可视化

    网络是网络通信中较为常见的故障,越早获取到信息和原因才可能越早进行排障。SONiC的
    发表于 11-09 09:27 765次阅读
    基于V682-SONiC交换机的实现网络<b class='flag-5'>丢</b><b class='flag-5'>包</b><b class='flag-5'>检测</b>的可视化

    常见的ARM架构分为两种是M系列另外一是A系列,这两种有什么区别啊?

    现在市面上常见的ARM架构分为两种是M系列另外一是A系列,这两种有什么区别啊,用的时候他们一般分别用在什么地方啊。
    发表于 10-26 07:00

    异步感应和永磁同步电机这两种有什么优缺点呢?

    纯电动汽车上经常会看到配备异步感应电机和永磁同步电机的车型。那这两种电机技术有什么优缺点呢?随着小星通过蔚来ES6车型和蔚来汽车发布的相关专利来聊一聊吧。
    发表于 07-13 15:32 1676次阅读
    异步感应和永磁同步电机<b class='flag-5'>这两种</b>有什么优缺点呢?