网工_WLAN的工作流程

2025.12.07:网工老姜学习笔记


WLAN工作流程

在这里插入图片描述

  • AP上线:AP获取IP地址【DHCP服务器,类似办身份证证明身份】,找AC进行注册【类似找公司去工作】,与AC建立连接
  • WLAN业务配置下发:AC将(WLAN业务配置)下发到AP生效,也就是AC告诉AP该怎么样工作,以什么样的功率,什么样的信道,怎么去工作等等等
  • STA接入(终端连接AP):无线业务配置之后,AP就会把无线信道放出来,STA搜索到AP发射的SSID并连接、上线,接入网络

第1步:AP上线

FIT AP需完成上线过程,AC才能实现对AP的集中管理和控制,以及业务下发。AP的上线过程包括如下步骤:

  • AP获取IP地址
  • AP发现AC并与之建立CAPWAP隧道(管理隧道)

AP获取IP地址

在这里插入图片描述

  • 静态方式不推荐,因为在很多项目中,AP的数量非常多,手工配置,工作量太大
  • 推荐DHCP方式,AP自觉去找DHCP服务器,DHCP服务器给它分地址,经过DHCP的四次交互,来完成地址的获取

注意:

  • AP与DHCP服务器跨三层需配置Relay中继
  • AP与AC跨三层需配置DHCP option43,在DHCP服务器上配置option43,携带AC的地址告诉AP,这样AP才能通过单播的方式

AP发现AC并与之建立CAPWAP隧道

在这里插入图片描述

  • DHCP交互:获取地址的过程,拿到地址以后就有了通行证,就能在IP网络中进行转发数据,下一步开始去找AC
  • 发现阶段:如果是一个二层网当中,就是通过广播的方式
  • DTLS连接:协商是否要进行加密,DTLS连接,虚线代表可选,可以加密,也可以不加密
  • join:AP发起请求要加入,AC有一个判断流程,首先是AP在不在(黑名单)里面,如果不在黑名单里面就看认证方式,一种是不认证,一种是通过MAC地址认证,一种是通过序列号SN来认证,判断是否可以离线添加,还有是否在AP(白名单)里面,加入的时候会携带AC的操作系统版本
  • Image Data:操作系统版本如果不同,需要重新下载操作系统,然后重启,重新建立CAPWAP隧道

版本没有问题之后,下面是配置问题,后期可能会对配置进行修改,看最后两条黄线,注意是从AC发起的

在这里插入图片描述


第2步:WLAN业务配置下发

为了方便用户配置和维护WLAN的各个功能,针对WLAN的不同功能和特性设计及了各种类型的模板,这些模板统称为WLAN模板
在这里插入图片描述

VAP模板(虚拟AP模板,需要掌握)

在这里插入图片描述


第3步:STA终端接入

  • AP上线还有无线业务配置下发,都属于有线侧的工作内容
  • 终端上线属于无线侧的工作内容,主要涉及802.11的数据帧

802.11帧类型

在这里插入图片描述

802.11关键报文 - 管理帧

在这里插入图片描述

802.11关键报文 - 控制帧

在这里插入图片描述


STA终端接入的具体过程

STA接入过程分为六个阶段:

  • 扫描阶段:有两种,种是主动扫描,一种是被动扫描
  • 链路认证阶段:有两种,一种是共享,一种是不认证
  • 关联阶段
  • 接入认证阶段
  • DHCP
  • 用户认证

在这里插入图片描述


接入认证

在这里插入图片描述

  • PSK认证(预共享密钥认证):家庭连接的无线的WIFI,不需要输入用户名,直接输wifi密码就可以
  • 802.1X认证(dot1x):安全性很更高,企业网咯

STA地址分配

在这里插入图片描述

用户认证

在这里插入图片描述

本章小结

在这里插入图片描述

<think>我们有一个Shell脚本片段,其中包含三行命令: 1. `CONFIG_WLAN_DRV_DIR=$(get_config_value wlan $PRODUCT CONFIG_WLAN_DRV_DIR)` - 这行调用了一个名为`get_config_value`的函数(或命令),传递了三个参数:`wlan`、`$PRODUCT`(一个变量)和字符串`CONFIG_WLAN_DRV_DIR`。该调用的结果被赋值给变量`CONFIG_WLAN_DRV_DIR`。 2. `echo $CONFIG_WLAN_DRV_DIR$` - 注意:这里有一个明显的错误,在变量名后面多了一个`$`符号。正确的写法应该是`echo $CONFIG_WLAN_DRV_DIR`(不带末尾的$)。因此,这行会输出变量`CONFIG_WLAN_DRV_DIR`的值,但紧接着会输出一个`$`字符(因为`$`在双引号外且没有紧跟着变量名,所以被当作普通字符)。但是,由于没有引号,变量值中的空格可能会导致输出被分词。 实际上,因为这里使用了`echo $CONFIG_WLAN_DRV_DIR$`,所以shell会尝试解析`CONFIG_WLAN_DRV_DIR`变量,然后直接连接一个`$`字符。例如,如果`CONFIG_WLAN_DRV_DIR`的值为`abc`,那么将输出`abc$`。 3. `wlan_dir=${CONFIG_WLAN_DRV_DIR##*/}` - 这行使用了shell的字符串操作:从变量`CONFIG_WLAN_DRV_DIR`中删除所有前缀直到最后一个`/`(即提取路径的最后一个部分)。例如,如果`CONFIG_WLAN_DRV_DIR`是`/home/user/wlan/dir`,那么`wlan_dir`将被赋值为`dir`。 4. `echo $wlan_dir$` - 同样,这里多了一个`$`,所以会输出`wlan_dir`的值,然后紧接着输出一个`$`字符。 现在,我们需要分析这个脚本片段的行为,特别是输出。 但是,用户没有提供具体的环境变量值(如`$PRODUCT`和函数`get_config_value`的行为),所以我们只能根据代码逻辑进行推理。 假设: - `get_config_value wlan $PRODUCT CONFIG_WLAN_DRV_DIR` 会返回一个字符串,这个字符串是一个路径(例如,可能是WLAN驱动的目录路径)。 然后,我们关注两个echo语句的输出: - 第一个echo:输出`CONFIG_WLAN_DRV_DIR`的值和一个额外的`$`字符。 - 第二个echo:输出从路径中提取的最后一个目录(或文件名)和一个额外的`$`字符。 但是,注意在第二个echo中,我们提取了路径的基名(basename)部分。 例如,如果`get_config_value`返回的路径是`/path/to/wlan_driver`,那么: - 第一个echo输出:`/path/to/wlan_driver$` - 然后,`wlan_dir`被赋值为`wlan_driver`(因为`${CONFIG_WLAN_DRV_DIR##*/}`会删除所有前缀直到最后一个斜杠,所以剩下的是最后一个部分) - 第二个echo输出:`wlan_driver$` 然而,如果返回的路径是空字符串,那么: - 第一个echo输出:`$`(因为变量为空,所以只输出$字符) - `wlan_dir`也会为空(因为空字符串的##*/操作还是空) - 第二个echo输出:`$` 所以,这个脚本片段的主要目的可能是获取一个路径,然后提取该路径的最后一部分(基名),并输出原始路径和基名(并在每个后面加一个$字符,但这可能是书写错误,因为通常我们不需要输出额外的$)。 注意:在Shell脚本中,变量引用后紧跟一个$字符的情况很少见,这很可能是笔误。正确的写法可能应该是: ```bash echo $CONFIG_WLAN_DRV_DIR echo $wlan_dir ``` 但根据给出的代码,我们只能按照有错误的形式描述。 §§相关问题§§ 1. 在 `echo $CONFIG_WLAN_DRV_DIR$` 中,末尾的 `$` 符号会导致什么输出效果? 2. 如果 `get_config_value` 命令返回的路径以斜杠结尾(如 `/path/to/dir/`),那么 `wlan_dir=${CONFIG_WLAN_DRV_DIR##*/}` 的结果会是什么? 3. 在什么情况下,`wlan_dir` 变量的值会为空字符串? 4. 如何修改该脚本片段以正确输出变量值而不附加额外的 `$` 字符? </think> ### 脚本分析及输出说明 给定脚本片段: ```bash CONFIG_WLAN_DRV_DIR=$(get_config_value wlan $PRODUCT CONFIG_WLAN_DRV_DIR) echo $CONFIG_WLAN_DRV_DIR$ wlan_dir=${CONFIG_WLAN_DRV_DIR##*/} echo $wlan_dir$ ``` #### 关键行为解析: 1. **变量赋值** `CONFIG_WLAN_DRV_DIR=$(...)` 调用 `get_config_value` 函数获取值(如 `/path/to/wlan_driver`),结果存入变量 2. **首次 echo 输出** `echo $CONFIG_WLAN_DRV_DIR$` - 问题:末尾多写了一个 `$` 符号(应为 `$CONFIG_WLAN_DRV_DIR`) - 实际输出:变量值 + 字面量 `$` 字符 示例:`/path/to/wlan_driver$` 3. **路径截取** `wlan_dir=${CONFIG_WLAN_DRV_DIR##*/}` - `##*/` 删除最后一个 `/` 之前的所有字符 - 示例输入 `/path/to/wlan_driver` → 输出 `wlan_driver` 4. **二次 echo 输出** `echo $wlan_dir$` - 同样错误的多余 `$` 符号 - 输出截取后的值 + `$` 示例:`wlan_driver$` #### 典型输出示例: ```bash # 假设获取的值为 /opt/wlan/rtl_driver /opt/wlan/rtl_driver$ # 第一次echo(含多余$) rtl_driver$ # 第二次echo(含多余$) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸运鹅²⁰²⁵

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值