Wlan——STA上线流程与802.11MAC帧讲解以及报文转发路径
目录
802.11MAC帧基本概念
802.11帧结构
802.11MAC帧的分类
管理帧
控制帧
数据帧
STA接入无线网络流程
信号扫描—管理帧
链路认证—管理帧
用户关联—管理帧
用户上线
不同802.11帧的转发路径
802.11MAC帧基本概念
802.11协议在802家族中的角色位置
其中802.3标准属于以太网的一种帧格式(以太网还有一种帧格式为以太网帧)
而802.11标准为无线网卡发出的数据帧格式
802.11和802.3的LLC层都是一致的,只是对应的MAC层不一致
802.11物理层协议与MAC层协议的介绍
Wlan——802.11协议物理层关键技术和CSMA/CD机制的介绍_静下心来敲木鱼的博客-CSDN博客
数据链路层中,802.3标准使用CSMA/CD来协调不同设备对有线介质的竞争访问;802.11标准使用CSMA/CA来比实现无线的冲突避免
802.11帧结构
Frame Control 帧控制字段
Protocol
帧使用的MAC版本,只有一个802.11;编号为0
Type、Sub Type
一起确定帧类型(标识数据帧是控制帧、数据帧、管理帧)
具体帧类型后续讲解
To DS 、Frome DS
表示帧是否来自或去往一个分布式系统(DS—可以理解为就是AP)
TO为1表示此帧发往AP;Frome为1表示从AP发来的帧
More Frag
判断是否有更多的分片(0 表示是最后一个)
Retry
重传帧,表示帧是否重传
Pwr Mamt
表示SRA发完当前帧之后要进入的模式(也可以理解为省电开关是否开启);
1表示终端即将进入省电状态,0表示终端进入活动状态
More Data
表示AP上是否有缓存报文需要传递给省电状态的终端
Protected Frame
判断当前帧是否加密的(1 表示加密)
Order
表示帧是否按照顺序传输
Duration ID
实现CSMA/CA的网络分配矢量机制
表示STA占用多长时间的链路,避免冲突
Address
表示MAC地址;有4个Address字段,根据To/From DS不同的Address字段代表不同的意思
有线的MAC地址只有源目MAC地址,而无线有多个MAC地址(主要是多了无线信号的MAC地址,也就是BSSID)
Seq Control
用于丢弃重复帧和重组分片
QoS Control
只存在于数据帧中,用来实现基于802.11e标准的Wlan QoS功能
Frame Body
帧主体,负责传输上层的有线载荷,也成为数据字段
FEC
帧校验,用于检查接收帧的完整性
802.11MAC帧的分类
帧分类
802.11MAC帧主要分为管理帧、数据帧、控制帧
如果要抓取网卡发送的管理、控制帧,需要开启网卡的监听模式
管理帧
管理帧的主要作用
用于终端加入或退出无线网络,包含二层信息字段和信息元素
802.11MAC管理帧类型
控制帧
控制帧的主要作用
协助数据帧的交付,为其提供可靠性;只包含报文头部信息,没有帧主体
例如清除信道、请求信道、对单播帧的确认的操作都是通过控制帧完成的
802.11MAC控制帧类型
Wlan——802.11协议物理层关键技术和CSMA/CD机制的介绍_静下心来敲木鱼的博客-CSDN博客
ACK
ACK只对单播帧做回应,不回应组播帧和广播帧
数据帧
数据帧的作用
传输用户数据
如何调整终端的传输速率
可以在AC/胖AP上配置PowerLocal参数影响数据帧的传输速率
控制帧的传输速率为基本速率
数据帧的传输速率为协商速率(传输的实际速率一般为此数据的2/3)
STA接入无线网络流程
STA接入网络的流程主要有
1、STA关联无线信号(扫描、链路认证、关联)
2、对STA进行接入认证(WPA/WPA2-PSK、WPA/WPA2-802.1x、WEP认证)
3、通过加密算法对后续的数据报文进行加密(WEP、TKIP、CCMP算法)
4、STA通过DHCP获取地址,进行上网
5、STA进行认证下线
6、STA解除信号关联
其中STA关联无线信号通过管理帧来完成
用户的信号扫描请求是和AP进行交互的
用户的链路认证和关联对于瘦AP来说是STA和AC交互的,通过将STA的数据封装到CAPWAP隧道传输,不会重传(无论是本地转发还是隧道转发,都会通过CAPWAP隧道封装)
因此关联失败的情况需要考虑CAPWAP隧道的数据端口5247是否放通
后续的流程的关于STA和AP的报文都封装在802.11MAC数据帧中,并且使用802.11MAC控制帧来预约信道,避免数据发送冲突(具体交互流程如下)
Wlan安全——认证与加密方式(WPA/WPA2)_静下心来敲木鱼的博客-CSDN博客
Wlan安全——STA如何通过802.1x接入网络_静下心来敲木鱼的博客-CSDN博客
后续的接入认证根据认证方式不同,认证的报文交互也不一样
信号扫描—管理帧
用户无线信号的扫描—通过AP发送的Beach或者STA发送的Probe Request实现
信号扫描为广播帧
被动扫描(Beacon)
AP主动定期发送Beacon(默认100ms),终端通过被动接收Beacon帧来发现无线信号(包含AP的SSID、BSSID、速率等信息)
Beacon在AP所支持的信道上都会发送;并且传播范围为AP无线覆盖范围
终端收到后不需要回复,直接发送链路认证请求
主动扫描(Probe)
终端主动发起探测请求(Probe Request),AP收到后回复探测响应(Probe Response)
AP回应的报文携带信号的SSID、BSSID等信息
Probe在STA所支持的信道上都会发送请求
扫描帧的一些关键字段
Capability
表示是哪种无线类型(802.11n、802.11ac等)
无线用户发现信号都会有对应的信号强度
Data Rate
此无线信号的基本速率(存在于Beacon和Probe Response帧)
报文帧中的基本速率要保证终端和AP可以互相识别到
此速率越低所传输距离越远
Signal dBm
信号强度
如何调整AP的信号强度
可以在AC/胖AP上配置Coverage参数来影响AP发射信号的强度
Coverage影响的就是扫描帧(Beacon和Probe Response)的Signal dBm字段
STA就是通过接收到的beacon 和 prob response等管理帧中包含的Signal dBm字段来了解信号的强度
链路认证—管理帧
STA链路认证主要有开放系统认证、WEP共享密钥认证;此认证的作用是用来证明设备是无线设备
一般链路认证为开放系统认证,然后通过接入认证对设备进行认证(Web认证、PSK认证、802.1x等);接入认证成功后终端获取IP地址访问网络
用户关联—管理帧
终端发送关联请求(Association Request)和AP协商参数, 参数协商成功AP发送关联响应报文(Assocation Response)
用户上线
用户认证成功后会接入无线网络,然后在AP/AC会有相应的日志信息
通过常见的日志信息判断终端关联不上是否存在认证关联阶段的问题
如果用户上线失败,可以通过常见的日志信息和或者AC上的Wlan diag信息来查看用户上线失败原因
常见日志属性
Code 8或者 Code3的日志代表STA下线(解认证或解关联)
查看日志信息
锐捷设备
logging on 开启日志
show logging 查看常见日志信息
show wlan diag AC上查看wlan diag信息(记录用户的上下线信息)
不同802.11帧的转发路径
针对于瘦AP来说
相关文章:

Wlan——STA上线流程与802.11MAC帧讲解以及报文转发路径
目录 802.11MAC帧基本概念 802.11帧结构 802.11MAC帧的分类 管理帧 控制帧 数据帧 STA接入无线网络流程 信号扫描—管理帧 链路认证—管理帧 用户关联—管理帧 用户上线 不同802.11帧的转发路径 802.11MAC帧基本概念 802.11协议在802家族中的角色位置 其中802.3标…...

Python|爬虫和测试|selenium框架模拟登录示例(一)
前言: 上一篇文章Python|爬虫和测试|selenium框架的安装和初步使用(一)_晚风_END的博客-CSDN博客 大概介绍了一下selenium的安装和初步使用,主要是打开某个网站的主页,基本是最基础的东西,那么,…...

QT的概述
什么是QT Qt是一个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。 QT项目的创建 .pro文件 .pro 文件是一个Qt项目文件,用于定义…...

Hive 导入csv文件,数据中包含逗号的问题
问题 今天 Hive 导入 csv 文件时,开始时建表语句如下: CREATE TABLE IF NOT EXISTS test.student (name STRING COMMENT 姓名,age STRING COMMENT 年龄,gender STRING COMMENT 性别,other_info STRING COMMENT 其他信息 ) COMMENT 学生信息表 ROW FORM…...

1、Odoo开发起点
1.1.odoo的模块组成 init.py将一个文件夹编程python包manifestpyodoo模块定义的清单文件,用于对odoo模块管理详见model模型类文件,存放py文件security表级别权限管理static静态文件views视图文件。wizard瞬态模型向导文件位置 1.2.odoo的开发规范 非强…...

Ubuntu22.04 交叉编译树莓派CM4 kernel
通过这个文章记录一下如何在Ubuntu22.04编译树莓派CM4的kernel。 主要参考树莓派官网的方法,也总结了一些关于SD卡分区的知识。 1,虚拟机安装Ubuntu 22.04,就不介绍了。 2,先将树莓派官方系统烧录倒SD卡中,设备能正…...

稀疏矩阵搜索(两种方法解决:1.暴力+哈希 2.二分法)
题目: 有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置。 示例: 输入: words ["at", "", "", "", "ball", "", &…...

NodeJS系列教程、笔记
NodeJS系列教程、笔记 点我进入专栏 Node.js安装与基本使用 NodeJS的Web框架Express入门 Node.js的sha1加密 Nodejs热更新 Nodejs配置文件 Nodejs的字节操作(Buffer) Node.js之TCP(net) Node.js使用axios进行web接口调用 …...

4.4TCP半连接队列和全连接队列
目录 什么是 TCP 半连接队列和全连接队列? TCP 全连接队列溢出 如何知道应用程序的 TCP 全连接队列大小? 如何模拟 TCP 全连接队列溢出的场景? 全连接队列溢出会发生什么 ? 如何增大全连接队列呢 ? TCP 半连接队列溢出 如何查看 TC…...

一键实现 Oracle 数据整库同步至 Apache Doris
在实时数据仓库建设或迁移的过程中,用户必须考虑如何高效便捷将关系数据库数据同步到实时数仓中来,Apache Doris 用户也面临这样的挑战。而对于从 Oracle 到 Doris 的数据同步,通常会用到以下两种常见的同步方式: OGG/XStream/Lo…...

Unity3D软件安装包分享(附安装教程)
目录 一、软件简介 二、软件下载 一、软件简介 Unity3D是一款全球知名的游戏开发引擎,由Unity Technologies公司开发。它提供了一个跨平台、多功能的开发环境,支持创建2D和3D游戏、交互式应用、虚拟现实、增强现实等多种类型的应用程序。以下是Unity3D…...

Vue2向Vue3过度Vue3组合式API
目录 1. Vue2 选项式 API vs Vue3 组合式API2. Vue3的优势3 使用create-vue搭建Vue3项目1. 认识create-vue2. 使用create-vue创建项目 4 熟悉项目和关键文件5 组合式API - setup选项1. setup选项的写法和执行时机2. setup中写代码的特点3. <script setup>语法糖 6 组合式…...

⛳ Docker 安装 MySQL
🎍目录 ⛳ Docker 安装 MySQL🚜 一、搜索 mysql , 查看版本🎨 二、拉取mysql镜像👣 三、建立容器的挂载文件🧰 四、创建mysql配置文件,my.conf🏭 五、根据镜像产生容器🎁 六、远程连…...

4.6 TCP面向字节流
TCP 是面向字节流的协议,UDP 是面向报文的协议 操作系统对 TCP 和 UDP 协议的发送方的机制不同,也就是问题原因在发送方。 UDP面向报文协议: 操作系统不会对UDP协议传输的消息进行拆分,在组装好UDP头部后就交给网络层处理&…...

uniapp返回上一页并刷新
在uniapp中,经常会有返回上一页的情况,官方提供有 uni.navigateBack 这个api来实现效果,但是此方法返回到上一页之后页面并不会更新(刷新)。 例如有这样一个场景:从地址列表页点击添加按钮进入添加地址页面…...

LRU cache的实现细节优化——伪结点的技巧
LRU cache的实现是面试常见的题目,思路比较简单,可以参考思路 这个题目在实际面试中容易出错,主要是npe和头节点与尾节点的更新,有没有办法避免这一点呢,这时可以发现伪节点的好处,永远不用更新头尾节点&am…...

【C/C++】父类指针指向子类对象 | 隐藏
创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 🔥c系列专栏:C/C零基础到精通 🔥 给大…...

NSSCTF——Web题目2
目录 一、[HNCTF 2022 Week1]2048 二、[HNCTF 2022 Week1]What is Web 三、[LitCTF 2023]1zjs 四、[NCTF 2018]签到题 五、[SWPUCTF 2021 新生赛]gift_F12 一、[HNCTF 2022 Week1]2048 知识点:源代码审计 解题思路: 1、打开控制台,查看…...

从零到富:探索CSGO搬砖项目的无限可能
在如今互联网时代,有一项令人惊叹的项目正悄然兴起,它就是CSGO搬砖项目。作为一个从零开始的家伙,我亲身经历了这个项目的神奇魅力,每天轻松赚取几十上百的收益,无风险,低成本。今天,我将带领大…...

Uniapp中vuex的使用
vuex的学习笔记,很多地方还都不是很懂,先记下来再说,比小程序里自带的store复杂很多,看着头大,而且方法里面很多ES6的内容,头都看到爆炸 一、初始化vuex 新建store.js,挂载到main.js 1、在根…...

SpringBoot案例-配置文件-参数配置化
前言 目前我们已经完成了部门管理和员工管理功能接口的实现,阿里云OSS工具类中,我们会设置4个参数,分别是云服务域名、云服务ID和密码、文件存储的Bucket、就会存在以下问题:参数配置分散以及参数发生变化,就需要对应…...

android系统启动流程之zygote(Native)启动分析
zygote有一部分运行在native,有一部分运行在java层,它是第一个进入java层的进程 zygote在启动时,在init.${ro.zygote}.rc脚本中,里面描述了zygote是如何被启动的, 当init进程解析到zygote.rc文件时,将根据解析出来的命…...

Win10上ffmpeg出现Invalid report file level
在win10上经常使用ffmpeg,但是最近突然ffmpeg用不了,不管ffmpeg还是ffplay,输出始终一句话: Invalid report file level 重新通过scoop装了以后还是同样的错误。 后来发现是一个环境变量设置有问题,FFREPORT。 我在w…...

Vue3 中引入液晶数字字体(通常用于大屏设计)
一、下载 .ttf 字体文件到本地,放在 src 中的 assets 文件下 下载液晶字体 DS-Digital.ttf 二、在 css 文件中引入字体 /* src/assets/fonts/dsfont.css */ font-face {font-family: electronicFont;src: url(./DS-Digital.ttf);font-weight: normal;font-styl…...

从 Future 到 CompletableFuture:简化 Java 中的异步编程
引言 在并发编程中,我们经常需要处理多线程的任务,这些任务往往具有依赖性,异步性,且需要在所有任务完成后获取结果。Java 8 引入了 CompletableFuture 类,它带来了一种新的编程模式,让我们能够以函数式编…...

【ARMv8 SIMD和浮点指令编程】NEON 乘法指令——乘法知多少?
NEON 乘法指令包括向量乘法、向量乘加和向量乘减,还有和饱和相关的指令。总之,乘法指令是必修课,在我们的实际开发中会经常遇到。 1 MUL (by element) 乘(向量,按元素)。该指令将第一个源 SIMD&FP 寄存器中的向量元素乘以第二个源 SIMD&FP 寄存器中的指定值,将…...

Nginx详解 第三部分:Nginx高级配置(附配置实例)
Part 3 一、网页的状态页二、Nginx第三方模块2.1 echo 模块 三、变量3.1 内置变量3.1.1 常用内置变量3.1.2 举个例子 3.2 自定义变量 四、自定义访问日志 (优化)4.1 自定义访问日志的格式4.2 自定义json 格式日志 五、Nginx压缩功能(重要)六、HTTPS 功能…...

postman访问ruoyi后台接口
打开若依页面,登录进去,F12打开控制台,选一个后台服务,把下图两个节点,补到postman请求header里面即可...

大数据时代的软件开发实践:利用云计算和AI赋能创新
文章目录 云计算的赋能弹性资源管理远程协作与分布式开发持续集成和持续交付成本效益 人工智能的赋能数据驱动的决策自动化智能预测和优化自适应系统 创新的实践方法数据驱动的创新智能化产品开放式创新迭代和反馈 🎈个人主页:程序员 小侯 🎐…...

32、启用 HTTP 响应压缩和编程式配置Web应用
★ 启用HTTP压缩 就是前端页面如果改动的比较多,那么响应就会比较慢,可以通过设置HTTP响应压缩来提高响应,如果前端改动少,那么就不需要启动这个响应压缩。 目的:为了提高HTTP响应数据在网络上的传输效率。▲ 设置如…...