[知识整理]Linux系统WIFI知识的一些整理
前段时间接触了wifi,主要是在linux系统下做预研、开发。本文根据个人收集资料及研究经验做了一些基本入门级别的引子,旨在对wifi有一个很基础的入门的认知,比如知道wifi模块硬件接口有哪些,了解wifi驱动,等等。如有需要,可以根据文中给出的术语、链接进行扩展的研究学习。
一、硬件接口
就笔者接触的资料,wifi接口有很多种,不同接口适应于不同场合。更多资料,可以直接到某宝上搜索了解。
USB
PCI
串口
使用AT指令进行操作。一般模块会带有单片机。许多年前,笔者的同学也曾研究过GSM模块,也是使用AT命令的——那时,“迟思堂工作室”正式成立。不过此类模块,对速率要求高的可以不用考虑了。
二、基本概念
wifi的基本概念比较多,网上资料一大把。这里只简单描述一下,有的直接拿人家写好的来用了。
wifi模式
AP模式:即Access Point,接入点。是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就是一个AP。
STA模式:即Station, 类似于无线终端,STA本身并不接受无线的接入,它可以连接到AP,一般无线网卡即工作在该模式。
Monitor模式:这种模式下,所有的数据包无过滤地传输到主机,此模式下主要查看网络中出了那些故障。在支持MAC80211的一般设备中,工作于Monitor模式下,可以有效地对整个网络进行监控,在此模式下,可以实现数据包的注入。
其它概念
SSID:SSID就是一个WiFi网络的网络名称。
频率:
1)IEEE 802.11b/g标准工作在2.4G频段,频率范围为2.400—2.4835GHz,共83.5M带宽
2)划分为14个子信道
3)每个子信道宽度为22MHz
4)相邻信道的中心频点间隔5MHz
5)相邻的多个信道存在频率重叠(如1信道与2、3、4、5信道有频率重叠)
6)整个频段内只有3个(1、6、11)互不干扰信道
国家码:不同国家使用的信道有不同,要根据实际需要设置,中国的国家码为CN,美国为US,等等。
对于5GHz而言,还有DFS。
三、linux相关驱动
linux下的无线网卡驱动,一般会结合ko和固件使用。固件一般不开源,但官方会提供二进制文件下载。固件放到linux系统的/lib/firmware目录下,在系统启动时会到对应目录查找。可以到https://wireless.wiki.kernel.org/en/users/Drivers上查看linux无线网卡驱动,上面有许多不同厂商的芯片驱动。对于一些特性,如是否支持AP模式、Monitor模式,等,都可以在上面找到信息。在研究无线网卡前,最好去查一下网卡是否被内核支持。
另外,内核层和用户层操作无线网卡的还涉及到mac80211、cfg80211、nl80211这些模块,还需要对内核进行配置(如iptables、bridge等),这些目前没有研究过,暂时不写。
四、linux相关系统应用
linux系统涉及wifi的模块、软件或服务程序十分之多,本节简单介绍笔者接触过的一些软件。注意,无线网卡也是网卡,一般名称为wlan0、wlan1,ifconfig、ethtool命令依然对其生效。另外网络设备命名规则同样生效,当同一主板变换无线网卡时,其名称会发生变化。关于此问题可以参考笔者个人主页上的文章,有详细描述。
如果单纯在linux系统中使用无线网卡作为上网之用,无需做太多的配置,像在Ubuntu系统中,直接点击桌面任务栏的WIFI图标,找到对应无线路由器名称,输入密码即可。但如果在linux中使用无线网卡搭建热点环境,则需要额外的工具,一般是使用hostapd,外加一个dhcp服务器。
lspci
如果无线网卡使用PCI接口,则可以使用lspci命令查看设备ID。上面提供
# lspci
03:00.0 Class 0280: Device 168c:003c
iw
查看、配置无线网卡命令。查看当前无线网卡信息,直接用iw list即可。关于这个命令本文不展开讨论。
hostapd
linux实现AP的服务程序。很多脚本都会使用这个程序。一般结合dhcp服务器组成软件AP。可以自己写脚本实现,也可以使用如ap-hostapd、create_ap这些著名的脚本。
ap-hostapd
一个脚本,利用hostapd、dnsmaq实现完整的软件AP功能。
rfkill
linux下可以使用rfkill命令打开、禁止无线电子设备,如蓝牙、WIFI。如果在系统中无法使用WIFI,则需要查一下是否被禁止了。下面是查看命令:
$ rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
可以看到我的WIFI是没有被阻止的,亦即可正常使用。要禁止(或阻止)WIFI,可以使用命令:rfkill block wifi。要激活,则使用命令:rfkill unblock wifi。具体信息rfkill –help查看。
五、个人研究计划
首先将WIFI网卡当成普通网卡使用,即station模式,能让linux连接无线路由器,正常上网。
然后研究AP模式,把linux系统做成热点,让手机、平板正常连接。
后续再看看minitor模式,主要想抓一下周围手机、平板的包(有些邪恶想法,不过还没实践)。
再后面有机会和时间,深入研究驱动。
当然,如有其它事务中断(比如中午你吃完饭正打算午休,领导叫你马上收拾电脑去机场到东北某省出差几天),以上的再议。
六、参考资源
CRDA:https://wireless.wiki.kernel.org/en/developers/Regulatory/CRDA
Linux下支持的wifi芯片列表:https://wireless.wiki.kernel.org/en/users/Devices
查看linux驱动是否支持AP模式:http://ubuntuhandbook.org/index.php/2014/09/wifi-hotspot-access-point-not-supported/
linux无线网卡驱动大本营:https://wireless.wiki.kernel.org/en/users/Drivers
hostapd官网:http://w1.fi/
WIFI基本知识点:http://blog.csdn.net/myarrow/article/details/7930131
WIFI从零开始学起:http://blog.csdn.net/perddy/article/details/9017977
转自:http://www.latelee.org/net-study/my-wifi-notes.html
[知识整理]Linux系统WIFI知识的一些整理的更多相关文章
- Linux系统基础知识整理
一.说明 本篇文章,我将结合自己的实践以及简介,来对linux系统做一个直观清晰的介绍,使得哪些刚接触Linux的小伙伴可以快速入门,也方便自己以后进行复习查阅. 二.基本知识整理 1.Linux文件 ...
- Linux系统基础知识整理(一)
本文来自于: https://www.cnblogs.com/hafiz/p/6686187.html#4196989 一.说明 本篇文章,我将结合自己的实践以及简介,来对linux系统做一个直观清晰 ...
- Linux系统文件属性知识
---------------------------------------------------------------------------------------------------- ...
- 嵌入式4412开发板学习知识-Linux系统基础知识
1. 什么是Linux系统编程 Linux系统编程分为三个部分:系统调用.C库和C编译器. 系统调用系统编程的基础是系统调用,也结束于系统调用.在带有操作系统的嵌入式开发中,需要从操作系统申请一些服务 ...
- 八.linux系统文件属性知识
1.文件属性权限是12位,现在只看9位,其中每3个一组,为:属主权限.属组权限.其他权限,其中r可读,w可写,x可执行,如图: 2.文件属性之软硬链接 linux系统中有两种链接,为硬链接(ln) ...
- Linux系统小知识
换Linux系统快半年了,刚开始总是碰到各种各样的问题,虽然斗解决了,由于没有记录,过一段时间就忘了,故在这里记录一下. 选择国内镜像源: Manjaro有一个很好用的命令rankmirrors.ra ...
- find查找文件命令 - Linux系统中的常用技巧整理
“find”在Linux系统中是比较常用的文件查找命令,使用方法有很多,可以拥有查找文件.文件目录.文件更新时间.文件大小.文件权限及对比文件时间.下面是整理的“find”常用方法,方便以后需要的时候 ...
- 相关不同Linux系统的性能监控命令整理
Linux系统 查看系统版本情况: $uname -a 监控进程的CPU,MEM使用情况: $ps –aux 过滤方式命令:$ ps -aux|awk '{print $3,$4,$11}'|sort ...
- 05.Linux系统-WCP知识共享平台安装部署(旗舰版)
WCP知识共享平台部署 一.环境准备 操作系统:CentOS Linux release 7.5.1804 (Core) Java:jdk-7u79-linux-x64.tar.gz 中间件:apac ...
随机推荐
- LaTex中插入大括号的多行公式
由于近期要发表论文,不得不恶补LaTex.现在需要插入带大括号的多行公式,效果如下: LaTex编辑如下: \begin{equation} \label{eq6} [x_{i}]=\left\{ \ ...
- 如何使用JFinal开发javaweb
介绍开始: 编辑器:MyEclipse; 数据库:MySQL; 服务器:tomcat; 1 首先新建web项目 要强调的是Target runtime必须选择为None.然后点击两次Next,选中创建 ...
- 将安防IPC摄像机进行类似于萤石/乐橙/360水滴模式的互联网直播的几种方案
前言 在维护EasyDarwin开源项目的几年内,几乎市面上大大小小的技术需求都给接触了一遍,大团队.大背景有大需求,草根团队有草根团队的需求,然而这些需求近些年都有一个发展的趋势,那就是" ...
- Xcode9 新功能
翻译: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/WhatsNewXcod ...
- OPEN(SAP) UI5 学习入门系列之一:扫盲与热身(下)
1 UI5代码结构 上一次我们一起用了20秒的时间完成一个UI5版的Hello World.应用打开后有一个按钮,按钮的文字是Hello World,点击这个按钮之后,按钮会慢慢的消失掉(Fade o ...
- Android编程 高德地图 中如何重写 定位按键 的触发事件 (com.amap.api.maps2d.LocationSource)点击定位后不仅定位在地图中心点上而且可以设置地图的缩放大小和提示
在利用高德地图来编写自己的APP的时候,发现了一种对定位按键的重写方法,那就是利用 com.amap.api.maps2d.LocationSource 接口来重写. 什么是定位按键呢,下图中右 ...
- AE编码、稀疏编码(待续)
http://ufldl.stanford.edu/tutorial/unsupervised/SparseCoding/
- CFE Bootloader详解 — 引导过程
CFE命令 CFE引导过程 系统加电后,CFE从boot.S (src/shared/boot.S)开始执行,完成判断芯片类型.设置时钟.初始化缓存.把自身加载进RAM等任务后,跳转到c_main() ...
- JNative用法注意事项
公司要做个跟设备打交道的web系统,需要java调用dll.搞java的同事说JNative看起来挺好使的,找俺帮忙调通.用的是1.3.1版本 环境设置. JNative的调试信息需要打开才能更清楚些 ...
- iOS8扩展插件开发配置 [转载]
一.iOS8扩展插件概述 WWDC14除了发布了OS X v10.10和switf外,iOS8.0也开始变得更加开放了.说到开放,当然要数应用扩展(App Extension)了.顾名思义,应用扩展允 ...