IEEE 802.11: 分布式协调功能(Distributed Coordination Function, DCF)

本文主要是介绍IEEE 802.11: 分布式协调功能(Distributed Coordination Function, DCF),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Distributed Coordination Function (DCF) (tutorialspoint.com)

1. 分布式协调功能

Distributed Coordination Function (DCF)是一种在基于IEEE 802.11标准(Wi-Fi)的无线局域网中用于防止冲突的强制性技术。它是在采用载波侦听多路访问与冲突避免(CSMA/CA)的区域中使用的介质访问控制(MAC)子层技术。

技术流程

DCF的基本技术流程如下:

  1. 当一个站点有数据帧要发送时,它会等待一个随机的退避时间。随机退避时间由一个具有随机时隙数的争用窗口定义。退避时间由以下公式给出:


    Time_{backoff} = random() * Time_{slots}

    这里,random 函数生成一个随机数,Time_{slots}是一个时隙的时间周期。

  2. 如果站点在争用期间(等待随机后退时间的期间)感知到信道忙碌,它会暂停计时器,直到信道变为空闲状态。

  3. 退避期结束时,如果信道仍然空闲,站点将等待一个等于DIFS(Distributed Inter-Frame Space,分布式帧间间隔,DIFS是在进行信道访问之前必须等待的时间间隔,用于确保在发送数据之前信道确实处于空闲状态)的时间,并再次检测信道。

  4. 如果信道仍然空闲,站点发送一个RTS(Request to Send,请求发送)帧,RTS帧是用于协调数据传输的一种控制帧。通过发送RTS帧,站点向目标设备表达其意图发送数据,并请求目标设备在一定时间内保持信道空闲,以便它能够顺利发送数据帧。

  5. 如果目标站点可用,它将使用CTS(Clear to Send,允许发送)帧作出回应,目标设备收到RTS帧后,如果它也空闲并且愿意接收数据,则会发送一个CTS(Clear to Send,允许发送)帧作为回应,以确认信道的可用性。这种基于RTS/CTS的机制可以减少数据冲突和碰撞,提高数据传输的可靠性和效率。。

  6. 然后,发送站点发送数据帧

  7. 在发送完帧后,发送站点等待一个等于SIFS(Short Inter-Frame Space,短帧间间隔)的时间来接收确认帧

  8. 传输过程结束后,站点再次等待退避时间,以准备下一次传输。

2.  概念解释

2.1  DIFS

DIFS(Distributed Inter-Frame Space,分布式帧间间隔)是在IEEE 802.11标准中定义的一段时间,用于确认信道的空闲状态。在进行数据传输之前,发送站点需要等待一个DIFS的时间,以确保信道在传输开始之前是空闲的。这样做的目的是为了避免与其他设备同时发送数据,从而减少碰撞和冲突。

如果不使用DIFS而直接发送数据帧,就可能发生以下情况:

1. 站点在检测到信道空闲之后立即发送数据帧,但其他设备也在同时发送数据,导致碰撞和数据丢失。

2. 站点在检测到信道空闲后稍微等待一段时间发送数据帧,但由于没有明确的间隔时间,可能会与其他设备同时发送数据,仍然导致碰撞和数据丢失。

DIFS的作用是引入一个固定的时间间隔,使得发送站点在发送数据之前能够等待足够长的时间,以确保信道的空闲持续一段时间。这样可以降低碰撞的概率,提高数据传输的成功率。

总之,使用DIFS来确认信道的空闲状态是为了提供一种协调机制,避免数据冲突和碰撞。它充当了一种保护期,确保信道在数据传输之前足够长的时间内保持空闲。这有助于提高无线网络的性能和可靠性。

2.2  NAV

NAV(Network Allocation Vector)是一种在无线网络中使用的计数器,用于协调帧的传输。它是一个16位的字段,用于指示信道的保持时间。

在无线网络中,多个设备共享同一个无线信道进行通信。为了避免碰撞和冲突,设备需要对信道的使用进行协调。NAV的作用就是提供这种协调机制。

当一个设备成功接收到一个帧时,它会读取帧中的NAV字段,并设置自己的NAV值为当前时间加上NAV字段中指示的时间。设备会根据自己的NAV值来判断在何时可以传输帧。

当设备要发送帧时,它会先检查当前的NAV值。如果NAV值大于当前时间,表示还有其他设备在使用信道,设备会等待直到NAV值归零。这样可以避免与其他设备同时传输帧,减少碰撞和冲突。

在接收到帧时,设备会读取帧的NAV字段,并根据其中的值更新自己的NAV计数器。这样,设备就知道在接下来的一段时间内,其他设备将占用信道,需要等待。

通过使用NAV,无线网络中的设备可以在信道上互不干扰地传输帧,提高了网络的性能和可靠性。它帮助协调设备之间的传输,减少了碰撞和冲突,提高了整体的吞吐量和效率。

3.  增强型分布式协调函数(Enhanced Distributed Coordination Function,EDCF)

EDCF(Enhanced Distributed Coordination Function,增强型分布式协调函数)是一种用于无线局域网(WLAN)中的媒体访问控制(MAC)协议,它是基于IEEE 802.11标准的分布式协调函数(DCF)的改进版本。EDCF旨在提供更好的服务质量(QoS)支持,使不同类型的数据流能够以不同的优先级进行传输。

EDCF引入了四个不同的访问类别(Access Category,AC),分别是AC_BK、AC_BE、AC_VI和AC_VO。每个访问类别具有不同的传输优先级,以满足不同应用对延迟和带宽需求的要求。

在EDCF中,每个访问类别都有一个相关的传输参数集,包括AIFSN(Arbitration Inter-Frame Space Number,仲裁帧间间隔数)、CWmin(Contention Window Minimum,争用窗口最小值)和CWmax(Contention Window Maximum,争用窗口最大值)。这些参数决定了每个访问类别在竞争访问信道时的退避行为。

EDCF(Enhanced Distributed Coordination Function,增强型分布式协调函数)中的传输参数集是用来控制不同访问类别(Access Category, AC)的传输行为和优先级。每个访问类别都有一个相关的传输参数集,包括AIFSN(Arbitration Inter-Frame Space Number,仲裁帧间间隔数)、CWmin(Contention Window Minimum,争用窗口最小值)和CWmax(Contention Window Maximum,争用窗口最大值)。

  1. AIFSN(Arbitration Inter-Frame Space Number): AIFSN是一个非负整数,表示在一个访问类别中发送帧之间的时间间隔。具体而言,AIFSN定义了在一个访问类别的帧发送之前等待的时间槽数。较小的AIFSN值表示更高的优先级,因为它允许更快的传输机会。

  2. CWmin(Contention Window Minimum): CWmin是一个非负整数,表示在退避过程中争用窗口的最小大小。争用窗口定义了一个随机退避的范围,当信道被认为是空闲时,站点选择退避时间的随机数将在0到CWmin之间。较小的CWmin值表示更高的优先级,因为退避时间将更短。

  3. CWmax(Contention Window Maximum): CWmax是一个非负整数,表示在退避过程中争用窗口的最大大小。争用窗口的最大值决定了退避时间的上限。当信道被认为是空闲时,站点选择退避时间的随机数将在0到CWmax之间。较小的CWmax值表示更高的优先级,因为退避时间将更短。

通过调整这些传输参数集的值,可以控制不同访问类别在竞争访问信道时的退避行为和传输优先级。较小的AIFSN、CWmin和CWmax值将使访问类别具有更高的优先级,从而获得更快的传输机会,提供更好的服务质量。不同访问类别之间的传输参数集可以根据应用需求和网络条件进行配置和调整,以实现适当的资源分配和优化网络性能。

具体来说, EDCF中的退避过程如下:

  1. 当一个站点准备发送数据帧时,它会选择一个合适的访问类别。

  2. 站点等待一个随机的退避时间,该时间由访问类别的CWmin和CWmax决定。退避时间是以时间槽(time slot)为单位的,每个时间槽的长度由DCF/EDCF参数配置决定。

  3. 如果在退避期间,站点感知到信道忙碌(即有其他站点正在传输数据),它将暂停退避计时器,直到信道空闲。

  4. 当退避时间结束且信道空闲时,站点等待一个时间间隔,称为DIFS(Distributed Inter-Frame Space,分布式帧间间隔)。

  5. 如果DIFS后信道仍然空闲,站点发送一个RTS(Request to Send,请求发送)帧来请求传输权限。

  6. 目标站点收到RTS帧后,如果它空闲并且准备接收数据,它将回复一个CTS(Clear to Send,允许发送)帧。

  7. 发送站点在收到CTS帧后,开始发送数据帧。

  8. 在数据帧发送完毕后,发送站点等待一个时间间隔,称为SIFS(Short Inter-Frame Space,短帧间间隔),以接收来自目标站点的确认帧(ACK)。

  9. 在整个传输过程完成后,站点再次进行退避,选择下一个合适的访问类别,并重复上述步骤。

通过引入多个访问类别和优先级,EDCF允许不同类型的流量在竞争访问信道时具有不同的传输优先级。这样,高优先级的数据流可以更快地获得传输机会,从而提供更好的服务质量。

总之,EDCF是对DCF的增强,通过引入多个访问类别和相关的传输参数,以及优先级控制机制,实现了在无线局域网中更灵活、更具有服务质量支持的媒体访问控制。

这篇关于IEEE 802.11: 分布式协调功能(Distributed Coordination Function, DCF)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

基于MongoDB实现文件的分布式存储

《基于MongoDB实现文件的分布式存储》分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考... 目录一、引言二、GridFS 原理剖析三、Spring Boot 集成 GridFS3.1 添加依赖

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue