基于Linux的系统,从上而下分为应用层,应用框架层、函数库、虚拟机、内核层
网络管理和控制的后台daemon(守护程序),主要有三个方面的功能:
netd位于框架层与内核层之间,其main函数主要有四个成员:
网络链接管理器,简称NM,用于创建并接收来自Kernel(内核层)的UEvent消息,核心代码位于start函数中。start函数注册了三个用于接收UEvent的socket
命令监听器,简称CL,接收来自框架层NetWorkManageService的命令,定义了是11个Command类和10个controller类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J3JPFJQQ-1638444199769)(…/AppData/Roaming/Typora/typora-user-images/image-20211125152843447.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ksY40KCU-1638444199771)(…/AppData/Roaming/Typora/typora-user-images/image-20211125154241104.png)]
InterfaceCmd用来管理和控制系统中的网络设备
CL构造函数利用iptables等工具创建较多的Chain和Rule,以及对某些命令控制对象初始化
CL创建后filter表包含五部分内容:
bw_INPUT、bw_OUTPUT、bw_FORWARD Chain用于带宽(Bandwidth)控制
fw_INPUT、fw_OUTPUT、fw_FORWARD用于防火墙(Firewall)控制
narctrl_FROWARD用于网络地址转换(NAT)
oem_fwd、oem_out用于OEM厂商自定义的控制。
ndc测试工具:
PPP(点对点协议),为同等单元之间传递数据包设计的链路层协议,提供全双工,按顺序传递数据包。主要包含三个部分
pppd是运行ppp协议的后台进程。他和kernel中的ppp驱动联动,以完成在直连线路(DSL、拨号网络)上建立IP通信链路的工作
域名解析socketAPI:
getaddrinfo:根据指定host名或service获得对应ip地址
getnameinfo:根据指定ip地址获得对应的host或service名称
域名代理监听,简称DPL,定义了两个命令:
组播域名服务,对应的框架层服务为NsdService(NetworkServiecDiscover),运行过程分三步:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T8wojR9q-1638444199773)(…/AppData/Roaming/Typora/typora-user-images/image-20211125110751833.png)]
网络管理工具 iptables Target 和常用参数
iptables中的rule有四个默认定义的Target
设置防火墙:
iptables -t filter -A input -s 192.168.1.108 -j DROP
仅拦截协议为tcp的数据包
iptables -t filter -A input -p tcp -s 192.168.1.108 -j DROP
iptables仅支持IPV4
Traffic Control 流量空限,通过建立数据包队列(Queue),并控制各个队列中 数据包的发送方式来实现
网络管理工具,功能:
Wireless Fidelity
Test Plan(Wi-Fi测试方案)参考了IEEE802.11规范,并拓展了802.11内容
IEEE802 局域网、城域网标准
IEEE802.11 无线局域网的介质访问控制协议以及物理层技术规范
常见协议:HTTP、HTTPS、FTP、SMTP等。其数据单位为APDU
为不同客户端提供数据和信息的语法转换、压缩解压缩、加密解密等服务。数据单位为PPDU
为通信双方制定通信方式,创建和注销会话(双方通信)等。常见协议有ZIP、AppleTalk、SCP。数据单位为SPDU
控制数据流量,同时能进行调试及错误处理,确保通信顺利。发送端为数据分组加上序号,接收端将分组重组为有用的数据或文件。常见协议有TCP、UDP等。数据单位为TPDU
为数据传输的目的寻址,然后再选择一个传输数据最佳路线。网络层数据单位为Package或Datagram。常见设备有路由器等,常见协议有IP、IPv6
在物理层提供比特流的基础上,建立相邻节点之间的数据链路。通过差错控制提供数据帧(Frame)在信道上无差错的传输。数据链路层在不可靠的物理介质上提供可靠的传输。改层的作用包括物理地址寻址、数据的成帧、流量控制、数据检错、重发等。数据链路层的单位为Frame(帧),常见设备有二层交换机、网桥等。
数据单位为bit,定义了设备机械、电气、功能和过程等方面的特性。建立、维护、拆除物理链路连接。
数据链路层分为LLC子层和MAC子层
解决局域网(LAN)共用信道的使用发生竞争时,如何分配信道的使用权。
无线局域网的介质访问控制协议只涉及MAC层,主要采用CSMA/CA(载波监听多路访问/冲突避免机制)
两种方式:延迟发送:当无线链路被占用时,设备随机为每一帧选择一段退避(backoff)时间,减少冲突发生。
RTS和CTS握手:
MAC层为上层提供MACService,MACService内部包含数个Entity。Entity封装了一组功能模块,MAC Entity对上层提供MAC Service。Entity可以相互调用来完成某个功能。
MAC Service 为上层提供服务时必须经由MAC Service access Point来访问。
实现了两个站点之间帧的交换,实现端到端(源到目的),无差错的帧传输和应答功能及流量控制功能。
规范定义了无线局域网中MAC层和PHY层的技术标准
从模块来看,802.11中的Service分为两大类别
无线网络数据传输的数据是无线MAC帧数据。
无线网络三个重要的服务
MAC层定义了一些Service用于为上层LLC提供服务
MAC帧由三个基本域组成
MAC Header:
控制帧(Frame Control):共2字节16位
Protocol Version:版本号
Type:MAC的类型:
数据帧:一般Frame Body最大长度为2312字节。
控制帧:控制帧的作用包括协助数据帧的传递、管理无线媒介第访问等
RTS:申请无线媒介的使用时间。RTS的MAC标头由4个字段字段构成:
CTS:用于回复RTS。CTS的MAC标头由3个字段构成
ACK:MAC以及任何数据的传输都需要得到肯定确认。这些数据包括普通的数据传输、RTS/CTS交换之前帧以及分片帧
PS-POLL:该控制帧被STA用于从AP中获取因省电模式而缓存的数据。其中AID的值是STA和AP关联时,由AP赋给该STA的
管理帧:
Beacon(信标)帧:AP定时发送Beacon帧用来声明某个网络。必须包含
Timestamp:时间戳信息,定长字段,8字节,用于同步BSS中的STA,时间单位为微秒
Beacon Interval:宣布无线网络的存在
Capability:占2字节,该字段用于宣告此网络具备何种功能。
SSID:网络名,用字符串表达
Association Request/Response(关联请求/回复帧):当STA需要关联某个AP时,将发送此帧。
Probe Request/Response(探测请求/回复帧):用于搜索周围的无线网络必须包含:
Authentication/Deauthentication(认证/取消认证)帧:用于身份验证
管理帧的MAC Header包含6个域,具体的管理信息数据将由Frame Body携带,管理信息数据又大体可分为两种类型:
定长字段:长度固定的信息,Fixed Field
Authentication Alogorithm Number:占两字节,代表认证过程所使用的认证类型。取值如下
Beacon Interval field:占2字节。每隔一段时间AP就会发出Beacon信号用来宣布无线网络的存在。该信号包含了BSS参数等重要信息。所以STA必须要监听Beacon信号。Beacon Interval field字段表示Beacon信号之间的间隔时间,其单位为Time Units(TU,一个TU为1024微妙。)
Capability Information(性能信息):占2字节,一般通过Beacon帧、Probe Request和Response帧携带它。该字段用于宣告此网络具备何种功能。
Current AP Address:6字节,表示当前和STA关联的AP的MAC地址。作用是便于关联和重新关联操作
Listen Interval:2字节,和省电模式有关。作用是告知AP,STA进入PS模式后,每隔多长时间它会醒来接收Beacon帧。AP可根据该值为STA设置对应的缓存大小,该值越长,对应的缓冲也相应较大。
Association ID(AID):2字节。 STA和AP关联后,AP会为其分配一个AssociationID用于后续的管理和控制。最高2位永远为1,取值范围1~2007。
Reason Code:2字节,通知关联失败的原因。0->保留,1->未指定,2->前一个身份验证以失败,3->STA离开BSS或者ESS导致验证失败,4->STA不活跃时间超时故取消关联。5->AP没有资源再处理新的STA故取消关联
Status Code:2字节,用于反馈某次操作的处理结果。 0->成功,
信息元素(IE):长度不固定的信息。标准结构由Element ID、 Length、Information构成。
SubType:子类型
ToDS:只用在数据类型的帧中
FromDS:只用在数据类型的帧中
ToDS:0,FromDS=0 | IBSS:一个STA发送到另一个STA ;BSS:一个非AP的STA发送给另一个非AP的STA |
---|---|
ToDS:1,FromDS=0 | 发送给DS或AP的STA的MAC帧,发给DS必须进过AP中转 |
ToDS:0,FromDS=1 | 来自DS或AP的数据帧 |
ToDS:1,FromDS=1 |
More Fragments:是否分片,只支持数据帧和管理帧
Retry:是否重传包,1->重传
PowerManagement:表明发送该帧的STA处于活跃模式还是省电模式
More Data:和省电模式相关。0 ->STA 已近接收完数据帧
Protected Frame :数据是否加密
Order:接收端必须按顺序处理该帧
时长(Duration/ID ) :2字节16位,根据Type 和SubType不同而不同,大体代表ID和duration
地址(Address)
Mac地址:6字节十六进制表示,组成包括两部分:
802.11MAC帧头部包含四个Address域
Frame Body :帧域 长度可变
FCS(Frame Check Sequence,帧校验序列 ):保障帧数据的完整性
802.11上层协议封装:802.11使用LLC层来封装上层协议。当Ethernet(以太网)帧要在无线网络上传输时,必须先将其转换成LLC帧,由RFC 1042规定。它主要在MAC Header和Type之间增加了4个字段,统称SNAP(子网访问协议)。
MAC子层中专门用于管理的Entity(实体):MLME,对外提供接口:MLME_SAP
Request:Scan.request用于扫描周围的无线网络
两种扫描模式:
confirm:用于通知扫描结果
获取周围的无线网络后,STA可以选择加入(join)其中的一个BSS
关联到某个AP之前,STA必须通过身份验证。
MLME-Authenticate.request:STA A向AP B发起身份验证请求
MLME-Authenticate.confirm: STA A收到来自AP B的身份验证处理结果
MLME-Authenticate.indication:AP B收到来自STA A的身份验证处理请求
MLME-Authenticate.response:AP B向STA A发送身份验证处理结果
MAC帧一共有三种类别、CLASS1、CLASS2、CLASS3,各自包含不同的数据帧
类别 | 控制帧 | 管理帧 | 数据帧 |
---|---|---|---|
Class1 | RTS、CTS、ACK | Probe Request/Response、Beacon、Authentication、Deauthentication、Public Action | 无 |
Class2 | 无 | Association Request/Response Reassociation Request/Response | 无 |
Class | PS-POLL等 | 除Class和Class2包含的管理帧之外的其他管理帧 | BSS中所有数据帧 |
STA从最初到最终经历四个阶段
无线网络主要有三个保护点。
无线网络安全技术发展历程:WEP(有线等效加密)------>WPA(Wi-Fi Protected Access)--------->RSN(Robust Security Network,强健安全网络),WFA将RSN称之为WPA2
WEP身份验证:
EAP是一种简单的封装方式,可以运行于任何的数据链路层以及使用各种身份验证的方式。
EAP的封包格式:
EAP的请求与响应
EAP的交换操作由请求(Request)与响应(Response)构成。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bro0wiF2-1638444199773)(%E5%AD%A6%E4%B9%A0.assets/image-20211201100147030-16383301375571.png)]
Code字段的值为1代表请求,2代表响应。Data字段用来携带请求与响应所使用的数据。每个Data字段会携带一种数据,可再分为Type Identifier code(类型标识符)以及associated data(关联数据):
Transport Layer Security(传输层安全,简称TLS)
Secure Socket Layer(安全套接层,简称SSL)
PMK(Pairwise Master Key,成对主密钥):
PTK(PairwiseTransient Key,成对传输密钥):用于单播数据帧的加密和解密
GTK(Group Temporal Key,组临时密钥):用于组播数据帧和广播数据帧的加解密
MIC(Message Integrity Check,数据及消息校验码)
PTK包含四个部分:
**目的:**为确保无线传输数据的安全性和完整性,通过四次握手协商密钥产生PTK 、GTK
过程:
1/4:Authenticator---->Supplicant
Authenticator(认证者)将ANonce发送给Supplicant(请求者)。Supplicant收到M1后,就有了生成PTK的所有元素
2/4:Supplicant------>Authenticator
Supplicant计算出PTK,将SNonce和自己的MAC地址发送给Authenticator。同时从2/4开始每个报文都会有MIC
3/4:Authenticator---->Supplicant
Autenticator向Supplicant证明自己是有效的,同样有MIC加入其中
4/4:Supplicant------>Authenticator
Supplicant向Authenticator发送ACK,确认PTK已经装好,后面的数据可以进行加密。
**WPA 、WPA2 在4次握手上的区别:**WPA的GTK在4次握手完成后进行安装,WPA2在4次握手的过程中就进行了安装
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9lFqoheC-1638444199774)(%E5%AD%A6%E4%B9%A0.assets/image-20211201174139700-16383517070781.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Smhcr5Ax-1638444199775)(%E5%AD%A6%E4%B9%A0.assets/image-20211201180120959.png)]
WPA2四握手协议
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LBnEqTYY-1638444199776)(%E5%AD%A6%E4%B9%A0.assets/image-20211201182227746-16383541515593.png)]
WPA3 是 WFA 新制定的适用于个人网络和企业网络的安全标准。WPA3 旨在通过使用现代安全算法和更强大的加密套件来提高 WLAN 的整体安全性。WPA3 分为两个部分:
Wi-Fi Enhanced Open 是 WFA 新推出的适用于公共网络的安全标准,基于机会性无线加密 (OWE)。Wi-Fi Enhanced Open 可以为咖啡馆、酒店、餐馆和图书馆等场所内无密码保护的开放网络提供加密和隐私保护。Enhanced Open 不提供身份验证。
WPA3 和 Wi-Fi Enhanced Open 可以提升 WLAN 的整体安全性,从而提供更好的隐私保护和稳健性来抵御已知攻击。由于许多设备尚不支持这些标准或尚未进行软件升级来支持这些功能,因此 WFA 提供了以下过渡模式:
Android 12 支持“过渡停用”指示,这是一种指示设备不使用 WPA2 而改用 WPA3 的机制。设备收到此指示后,会使用 WPA3 连接到支持过渡模式的 WPA3 网络。Android 12 还支持 WPA3 Hash-to-Element (H2E) 身份验证交换。
WPA3 和 Wi-Fi Enhanced Open 仅在客户端模式下受支持。
Wifi工作步骤:
Android 12 支持“过渡停用”指示,这是一种指示设备不使用 WPA2 而改用 WPA3 的机制。设备收到此指示后,会使用 WPA3 连接到支持过渡模式的 WPA3 网络。Android 12 还支持 WPA3 Hash-to-Element (H2E) 身份验证交换。
WPA3 和 Wi-Fi Enhanced Open 仅在客户端模式下受支持。
Wifi工作步骤: