【802.11协议】MAC层学习笔记1:DCF协议

2023-10-12 15:40
文章标签 学习 协议 笔记 mac 802.11 dcf

本文主要是介绍【802.11协议】MAC层学习笔记1:DCF协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 概述
  • CSMA/CA机制
    • 简介
    • 概念
    • 例子
  • BEB机制
  • RTS/CTS模式
  • 参考内容

概述

在初始802.11的MAC层中,分成了两种基本工作模式:

  • DCF(Distributed Coordination Function)
  • PCF(Point Coordination Function)

其中,由于DCF具有良好的分布式特性,从而应用更加广泛,而PCF模式则较为少用。在802.11e协议中,DCF被扩展为EDCA模式,PCF模式被扩展为HCCA模式。

CSMA/CA机制

DCF模式的核心是CSMA/CA机制。

简介

由于无线信道只有一个冲突域的特性,所以需要设置一种随机接入机制,以避免多个节点同时访问网络所带来的冲突问题,在WiFi协议中,该随机接入机制即是CSMA/CA。CSMA/CA的全称是Carrier Sense Multiple Access with Collision Avoidance,即载波侦听多路访问/冲突避免。如果熟悉有线网络的可以知道,在集线器与中继器中也会采用一种CSMA/CD的机制,从协议设计的大思路上,两者是类似的。

概念

DIFS与SIFS
该两种都是属于Inter-frame Spacing(IFS),即 帧间间隙。DIFS全称为Distributed Inter-frame Spacing,即分布式帧间间隙,SIFS称为Short inter-frame space,即短帧间间隔。在CSMA/CA中,发一个帧之前,都需要 “等待” 一个相应的帧间间隔,比如发送数据之前至少要等待DIFS时间,发送ACK之前需要等待SIFS时间。
CSMA/CA中需要用到以下三种帧间间隔:
SIFS=用于分隔一次对话的各帧
PIFS=SIFS+一个时隙时间长度
DIFS=PIFS+一个时隙时间长度
Slot Time
时隙是指的一个时间片段,在CSMA/CA中,节点竞争接入信道之前需要经过相应的 随机回退(backoff)过程,其中backoff过程就是由很多个时隙所组成的。
Contention window
竞争窗口是用来让节点选择随机回退计数值(backoff counter)的范围。
Backoff
随机回退过程是指每一个节点在竞争信道时,所经历的随机退避过程。在这一过程开始时,节点首先在竞争窗口中选择一个随机数为基准的随机回退计数值,同时每一个时隙,节点为 “监听” 信道是否空闲,若信道空闲,那么进行一次倒数,即计数值减1,若信道忙,则不进行相应倒数。当该随机回退计数值回退到0时,节点可以发送数据。

例子

在这里插入图片描述
在该拓扑中,存在一个AP,与两个节点(STA 1与STA 2)。由于无线环境下的广播特性,若STA 1STA 2同时向AP发送数据,那么就会在AP处发生冲突,从而两者都无法正确接收,最终传输失败。CSMA/CA就是提供一种避免冲突发生的接入规则。
在这里插入图片描述

  1. STA 1STA 2相继存在数据,需要在竞争信道进行发送时,其首先需要 “等待” DIFS时间,若DIFS时间内,信道保持空闲状态,那么就可以进行backoff过程。
  2. STA 1STA 2进入backoff过程时,其首先需要从竞争窗口(Contention window)选择一个随机数,在802.11协议中,默认的初始竞争窗口为31,即随机回退计数值的范围即是[0,31] 。
  3. 在backoff过程中,每经过一个slot time,节点会 “监听” 一次信道,若信道空闲,则相应的随机回退计数器的值减1。如上图中,经过3个slot time后,STA 1的随机倒数计数器从8递减至5,而STA 2相应从2递减至0。
  4. 当节点的随机倒数计数器倒数至0时,节点竞争获得信道,从而可以发送数据。如上图,STA 获得信道后,发送PACKET AAP。在AP接收到数据后,会采用CRC机制对数据进行校验,若校验通过,AP会在SIFS后,反馈ACK确认帧。
  5. STA 2成功发送完数据, “等待” 了SIFS的时间之后,AP会反馈ACK确认帧。当STA 2成功接收到ACK帧之后,这一次传输完成。
  6. 当这一次传输完成后,节点需要再次 “等待” DIFS的时间后,重新开始backoff过程。若节点刚刚发送完数据,那么在backoff过程开始时,需要重新从竞争窗口中选择一个随机数进行倒数。若节点没有发送数据,那么直接从上一次的倒数结果继续倒数。如上图中,STA 1没有竞争到信道,那么其在第二次的backoff过程中,直接基于上次的5直接进行倒数至4。这样的设计目的是为了保证网络传输的公平性。
    在这里插入图片描述
    若在上述的第5步中,AP没有成功接收节点的数据,或者AP对数据进行CRC校验错误,那么其不会反馈相应的ACK给节点。节点在ACK timeout之后,则知道对方没有成功接收数据,该ACK timeout时间在理论分析时,一般与ACK接收时间相等,在具体工程设计中,可能会大一点点。那么发送错误的节点,需要等待EIFS时间才可以再次接入信道,EIFS>DIFS,这样是为了避免一些较差的节点持续争抢信道资源。比如图中STA 2即需要在等待EIFS之后,节点首先进行BEB,然后重新开始backoff过程,而STA 1则直接在DIFS之后进行backoff。

BEB机制

BEB机制的全称为Binary Exponential Back off,即二进制指数退避算法。在CSMA/CA的机制中,还是存在发生冲突的可能性,从而为了避免在CSMA/CA机制下再次冲突,故引入了BEB机制。
在这里插入图片描述
在 “等待” DIFS后,STA 1STA 2从各自的竞争窗口CW中选择一个随机数,不过碰巧的是,两者随机到了一样的数值。在经过3个slot time之后,由于两者同时倒数至0,那么意味着两者会同时发送数据,如图中的红色虚线框表示,在AP处由于两者信号互相干扰,从而都无法正确解码,从而CRC校验错误,即发生冲突。在冲突之后,即若AP处CRC校验失败,则不会给任意节点反馈ACK数据包,故两节点在ACK timeout之后(即总共等待EIFS之后,图中的EIFS起始点应为STA2中SIFS的起始点,即EIFS=SIFS+ACK+DIFS),准备进入下一次竞争。

而在正式进入下一次竞争之前,节点需要对竞争窗口(CW)采用BEB机制。在初始竞争时,节点的默认CW范围是[0,31] (假设初始窗口是802.11b机制下,即最大31,在802.11a这种,初始窗口就是15)。而如果在节点数较多的情况下,那么就有可能引发之前我们所述的冲突问题,从而我们需要扩大竞争窗口CW。具体在CSMA/CA中,我们则是采用二进制指数退避的方法对竞争窗口CW进行扩展,即发生一次冲突后,那么CW范围就会从[0,31]变化到[0,63] ,如图中,在冲突之后,STA 1重新随机选择50,STA 2重新随机选择32。在802.11中,一共允许回退6次,第7次不倍增窗口,再次尝试重发,若再次失败,则丢包。

参考CWNA教材,有给出具体每一次回退的CW窗口大小,如下:
在这里插入图片描述

RTS/CTS模式

在DCF模式下存在两种子模式:

  • Basic模式
  • RTS/CTS模式
    RTS/CTS模式可以很好的应对隐藏终端问题。

参考内容

802.11协议精读2:DCF与CSMA/CA
802.11信道接入 – DCF

这篇关于【802.11协议】MAC层学习笔记1:DCF协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/196809

相关文章

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

mac安装redis全过程

《mac安装redis全过程》文章内容主要介绍了如何从官网下载指定版本的Redis,以及如何在自定义目录下安装和启动Redis,还提到了如何修改Redis的密码和配置文件,以及使用RedisInsig... 目录MAC安装Redis安装启动redis 配置redis 常用命令总结mac安装redis官网下

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss