【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

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

电脑蓝牙连不上怎么办? 5 招教你轻松修复Mac蓝牙连接问题的技巧

《电脑蓝牙连不上怎么办?5招教你轻松修复Mac蓝牙连接问题的技巧》蓝牙连接问题是一些Mac用户经常遇到的常见问题之一,在本文章中,我们将提供一些有用的提示和技巧,帮助您解决可能出现的蓝牙连接问... 蓝牙作为一种流行的无线技术,已经成为我们连接各种设备的重要工具。在 MAC 上,你可以根据自己的需求,轻松地

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh