当前位置: 首页 > news >正文

802.11中的各种帧

在无线网络中,802.11协议定义了三种类型的帧:管理帧(Management Frames)、控制帧(Control Frames)和数据帧(Data Frames)。每种类型的帧都有其特定的功能,帮助维护和管理无线网络。下面是管理帧和控制帧的详细介绍:

管理帧(Management Frames)

管理帧用于建立和维护无线网络中的连接。它们帮助设备发现网络、加入或离开网络,并保持连接的状态。常见的管理帧包括:

  1. Beacon Frames(信标帧)

    • 由接入点(AP)定期发送,以公告其存在和网络参数(如SSID、支持的数据速率、安全设置等)。
    • 帮助设备发现并选择要连接的无线网络。
  2. Probe Request/Response Frames(探测请求/响应帧)

    • 探测请求帧由客户端设备发送,用于主动扫描可用的无线网络。
    • 探测响应帧由AP发送,以响应探测请求帧,提供网络信息。
  3. Authentication Frames(认证帧)

    • 用于设备和AP之间的身份验证过程。
    • 确保设备是合法用户,可以加入网络。
  4. Deauthentication Frames(解除认证帧)

    • 用于终止设备和AP之间的认证关系。
    • 通常在设备离开网络或发生安全事件时发送。
  5. Association Request/Response Frames(关联请求/响应帧)

    • 关联请求帧由客户端设备发送,用于请求与AP建立连接。
    • 关联响应帧由AP发送,以确认或拒绝连接请求。
  6. Disassociation Frames(解除关联帧)

    • 用于终止设备和AP之间的关联关系。
    • 通常在设备离开网络或需要重新建立连接时发送。

控制帧(Control Frames)

控制帧用于帮助管理数据传输过程,确保数据帧在无线网络中的可靠传输。常见的控制帧包括:

  1. ACK Frames(确认帧)

    • 由接收方发送,以确认成功接收到数据帧。
    • 发送方在接收到ACK帧后,会继续发送下一个数据帧。
  2. RTS Frames(请求发送帧)

    • 由发送方发送,用于请求对信道的使用权限。
    • 用于减少冲突,特别是在高流量或干扰环境中。
  3. CTS Frames(清除发送帧)

    • 由接收方发送,以响应RTS帧,授予发送方对信道的使用权限。
    • 通过CTS帧,网络中的其他设备知道发送方将占用信道,并避免冲突。
  4. PS-Poll Frames(省电轮询帧)

    • 由省电模式的客户端设备发送,用于请求AP发送缓冲的数据帧。
    • 帮助省电模式下的设备高效地接收数据。
  5. Block Acknowledgement Frames(块确认帧)

    • 用于高效确认一组数据帧,而不是每个帧单独确认。
    • 提高传输效率,特别是在高速无线网络中。

捕获管理帧和控制帧

在监控模式下,可以使用 tcpdumpgopacket 捕获管理帧和控制帧。以下是捕获所有管理帧和控制帧的示例:

  1. 使用 tcpdump 捕获管理帧和控制帧

sudo tcpdump -i wlan0mon -e -s 0 type mgt or type ctl
  1. 使用 gopacket 捕获和解析管理帧和控制帧的 Go 代码

package mainimport ("fmt""log""github.com/google/gopacket""github.com/google/gopacket/layers""github.com/google/gopacket/pcap"
)func main() {// 设置网络接口名称和抓包过滤器iface := "wlan0mon"snaplen := int32(65535)promisc := falsetimeout := pcap.BlockForeverfilter := "type mgt or type ctl"// 打开网络接口进行抓包handle, err := pcap.OpenLive(iface, snaplen, promisc, timeout)if err != nil {log.Fatal(err)}defer handle.Close()// 设置 BPF 过滤器if err := handle.SetBPFFilter(filter); err != nil {log.Fatal(err)}fmt.Println("Capturing Wi-Fi Management and Control frames on interface", iface)// 开始抓包packetSource := gopacket.NewPacketSource(handle, handle.LinkType())for packet := range packetSource.Packets() {processPacket(packet)}
}func processPacket(packet gopacket.Packet) {// 获取 802.11 层dot11Layer := packet.Layer(layers.LayerTypeDot11)if dot11Layer == nil {return}dot11, _ := dot11Layer.(*layers.Dot11)// 判断帧类型switch dot11.Type {case layers.Dot11TypeMgmt:fmt.Println("Management Frame captured:")// 处理管理帧,获取具体类型switch dot11.Subtype {case layers.Dot11MgmtSubtypeBeacon:fmt.Println("  Beacon Frame")case layers.Dot11MgmtSubtypeProbeReq:fmt.Println("  Probe Request Frame")case layers.Dot11MgmtSubtypeProbeResp:fmt.Println("  Probe Response Frame")// 可以添加更多管理帧类型default:fmt.Println("  Other Management Frame")}case layers.Dot11TypeCtrl:fmt.Println("Control Frame captured:")// 处理控制帧,获取具体类型switch dot11.Subtype {case layers.Dot11ControlSubtypeAck:fmt.Println("  ACK Frame")case layers.Dot11ControlSubtypeRTS:fmt.Println("  RTS Frame")case layers.Dot11ControlSubtypeCTS:fmt.Println("  CTS Frame")// 可以添加更多控制帧类型default:fmt.Println("  Other Control Frame")}default:fmt.Println("Other Frame Type captured")}
}

总结

管理帧和控制帧在无线网络中起着关键作用,分别用于建立和维护连接,以及管理数据传输过程。在监控模式下,你可以使用工具如 tcpdump 或编程库如 gopacket 来捕获和分析这些帧,了解无线网络的工作状态。

相关文章:

802.11中的各种帧

在无线网络中,802.11协议定义了三种类型的帧:管理帧(Management Frames)、控制帧(Control Frames)和数据帧(Data Frames)。每种类型的帧都有其特定的功能,帮助维护和管理…...

SAP PP学习笔记21 - 计划策略的Customize:策略组 > 策略 > 需求类型 > 需求类(消费区分,计划区分)

上面几章讲了MTS,MTO,ATO的计划策略。 本章来讲一下它的后台 Customize。 1,Customizeing:Planned Indep.Reqmts Management 这是配置计划策略的整个过程: - Requirements Type / Class 需求类型 / 需求类 - Plann…...

axure9设置组件自适应浏览器大小

问题:预览时不展示下方的滚动条 方法一:转化为动态面板 1.在页面上创建一个矩形 2.右键-转化为动态面板 3.双击进入动态面板设置 4.设置动态面板矩形的颜色 5.删除原来的矩形 6.关闭动态面板,点击预览 7.此时可以发现底部没有滚动条了 方法…...

示例:WPF中TreeView自定义TreeNode泛型绑定对象来实现级联勾选

一、目的&#xff1a;在绑定TreeView的功能中经常会遇到需要在树节点前增加勾选CheckBox框&#xff0c;勾选本节点的同时也要同步显示父节点和子节点状态 二、实现 三、环境 VS2022 四、示例 定义如下节点类 public partial class TreeNodeBase<T> : SelectBindable<…...

C++ explicit关键字的用法

在C中&#xff0c;explicit关键字用于构造函数和转换运算符&#xff0c;以防止隐式转换。它可以帮助我们避免意外的类型转换&#xff0c;从而提高代码的安全性和可读性。explicit关键字只能用于单参数构造函数和转换运算符。 使用explicit的场景 单参数构造函数&#xff1a; 当…...

51.Python-web框架-Django开始第一个应用的增删改查

目录 1.概述 2.创建应用 创建app01 在settings.py里引用app01 3.定义模型 在app01\models.py里创建模型 数据库迁移 4.创建视图 引用头 部门列表视图 部门添加视图 部门编辑视图 部门删除视图 5.创建Template 在app01下创建目录templates 部门列表模板depart.ht…...

Redis之线程IO模型

引言 Redis是个单线程程序&#xff01;这点必须铭记。除了Redis之外&#xff0c;Node.js也是单线程&#xff0c;Nginx也是单线程&#xff0c;但是他们都是服务器高性能的典范。 Redis单线程为什么能够这么快&#xff01; 因为他所有的数据都在内存中&#xff0c;所有的运算都…...

针对微电网中可时移,柔性,基础负荷的电价响应模型---代码解析

前言&#xff1a; 在上两篇帖子中&#xff0c;讲解了我对于粒子群算法的理解&#xff0c;站在巨人的肩膀上去回望&#xff1a;科研前辈们确实非常牛逼&#xff0c;所以它才成为了非常经典的算法。这篇帖子主要是想分享一下&#xff0c;对于微电网、电力系统的论文中&#xff0c…...

git使用http协议时免密pull和push方法

1、创建文件 在项目目录下创建.git-credentials文件&#xff0c;内容如下&#xff0c;填入自己的用户名和密码即可&#xff0c;如果是gitlab&#xff0c;把地址换成自己的gitlab的地址即可。 https://{用户名}:{密码}github.com2、终端执行 git config --global credential.…...

编译期间生成代码(Lombok原理)

通过在编译期间&#xff0c;修改Java的AST(Abstract Syntax Tree)树&#xff0c;可以往类中&#xff0c;添加/修改&#xff08;覆盖&#xff09;方法、属性等。 现在比较常见的三方依赖例子有&#xff1a;Lobbok的Data可以生成get、set方法&#xff0c;Sl4j2可以生成静态常量l…...

第2讲:pixi.js 绘制HelloWorld

基于第0讲和第1讲&#xff0c;我们增添了vite.config.ts文件。并配置了其他的http端口。 此时&#xff0c;我们删除掉没用的东西。 删除 conter.ts、typescript.svg 在main.ts中改成如下内容&#xff1a; import {Application, Text} from pixi.js import ./style.css// 指明…...

golang HTTP2 https测试POST变GET问题小记

概述 因为工作需要协助修改某个golang程序&#xff0c;添加双向认证。但是在调整的过程遇到一个HTTP POST请求变成GET诡异的问题&#xff0c;最后各种搜索&#xff0c;总算解决&#xff0c;博文记录&#xff0c;用于备忘。 代码 服务端 因工作内容&#xff0c;代码有删减&a…...

Linux下的lvm镜像与快照

lvm镜像(mirror) (1)划分三个PV&#xff0c;其中2个PV大小要一模一样 Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units cylinders of 16065 * 512 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/…...

嵌入式linux系统中SPI子系统原理分析01

大家好,今天给大家分享一下,如何使用linux系统中的SPI通信协议,实现主从设备之间的信息传递。 SPI是一种常见的设备通用通信协议。它是一个独特优势就是可以无中断发送数据,可以连续发送或接收任意数量的位。而在I2C和UART中,数据以数据包的形式发送,有限定位数。 …...

Part 4.2 背包动态规划

->背包模型模板(0/1,分组&#xff0c;完全&#xff0c;多重)<- [NOIP2018 提高组] 货币系统 题目背景 NOIP2018 提高组 D1T2 题目描述 在网友的国度中共有 n n n 种不同面额的货币&#xff0c;第 i i i 种货币的面额为 a [ i ] a[i] a[i]&#xff0c;你可以假设每…...

Elasticsearch-使用Logstash同步Mysql

1.安装logstash es服务器版本必须和logstash版本一致 7.9.2 在/usr/local/src/下新建logstash文件夹&#xff0c;解压 下载logstash后查看是否安装成功&#xff0c;在logstash的bin目录下输入指令&#xff1a; ./logstash -e input { stdin { } } output { stdout {} }2.my…...

6.17作业

升级优化自己应用程序的登录界面。 要求&#xff1a; 1. qss实现 2. 需要有图层的叠加 &#xff08;QFrame&#xff09; 3. 设置纯净窗口后&#xff0c;有关闭等窗口功能。 4. 如果账号密码正确&#xff0c;则实现登录界面关闭&#xff0c;另一个应用界面显示。 //发送端头文件…...

算法思想个人总结(结合生活理解)

主要思想: 结合生活和游戏理解思想,先知道什么场景用什么算法,然后再理解就能记住 遇到问题可以考虑选择使用,这样才是学活了 https://www.yuque.com/yuqueyonghu5znoyv/ifb5ga/nfcvg3ft9ryuqeem?singleDoc# 《元启发式算法》...

openh264 帧间预测编码过程源码分析

openh264 OpenH264 是一个开源的 H.264 编码和解码器&#xff0c;由思科系统开发并维护。它专为实时应用程序如 WebRTC 设计&#xff0c;提供了从基础到高级特性的广泛支持。OpenH264 的编码器支持从 Constrained Baseline Profile 到 5.2 级别&#xff0c;允许任意分辨率的编…...

Linux网络 - HTTP协议

文章目录 前言一、HTTP协议1.urlurl特殊字符 requestrespond 总结 前言 上一章内容我们讲了在应用层制定了我们自己自定义的协议、序列化和反序列化。 协议的制定相对来讲还是比较麻烦的&#xff0c;不过既然应用层的协议制定是必要的&#xff0c;那么肯定已经有许多计算机大佬…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...