WiFi篇
一。Netd
是守护进程;
Netd是Android系统中专门负责网络管理和控制的后台daemon程序;
位于Framework层和Kernel层之间;
是Android系统中网络相关消息和命令转发及处理的中枢模块;
1.三个主要功能:
1)FireWall,NAT,带宽控制,无线网卡软接入(Soft Access Point),网络设备绑定(Tether)等;
2)Android系统中DNS信息的缓存和管理;
3)网络服务搜索(Net Service Discovery,NSD):服务注册,服务搜索,服务名解析等;
2.工作分为两个部分:
1)Netd接收并处理来自Framework层中NetworkManagementService或NsdService
的命令。这些命令最终由Netd中对应的Command对象去处理;
2)Netd接收并解析来自Kernel的Event消息然后再转发给Framework层中对应Service去处理;
3.工作流程
由init进程根据init.rc的对应配置项而启动;
启动时创建三个TCP监听socket,netd,dnsproxyd,mdns;
三个监听:
1)Framework层中的NetworkManagementService和 NsdService分别和netd,mdns监听socket建立连接;
2)每个调用和域名解析相关的socketAPI的进程都会借由dnsproxyd监听socket与netd建立链接;
4.接收并解析来自Kernel的UEvent消息(NetlinkManager)
UEvent消息的三个类型:
1)kobject, 通知内核中某个模块的加载/卸载;
2)route, 网络链路断开/接通;
3)nflog, 带宽控制相关;
NetlinkManager分别注册了三个用于接收UEvent的socket,其对应的NetlinkHandler分别是mUeventHandler,mRouteHandler和mQuotaHandler;
Netlink的工作流程:
每个NetlinkHandler对象均会单独创建一个线程用于接收socket消息;
5.接收来自于Framework层NetworkManageService的命令 (CommandListener)
1)Client端发送的命令;
2)CL收到命令,找到命令对象;
3)命令对象执行runCommand函数;
CL命令:
1.iptables 设置一些filter/NAT的规则
2.tc 流量控制
从建立队列,建立分类,建立过滤器三个方面,进行流量控制:
1)针对网络物理设备绑定一个队列QDisc;
2)在该队列上建立分类class;
3)为每个分类建立基于路由的filter;
4)与filter配合,建立特定的路由表;
3.ip 网络管理工具
1)替代ifconfig命令
2)替代route命令
3)替代arp命令
6.DNS管理相关 (DnsProxyListener)
二。Wifi基础知识
IEEE 802.11
工会名称 802项目第11个工作组
局域网标准 无线局域网MAC层,物理层技术规范
OSI/RM(开放互联参考模型)的七层架构:
应用,表示,会话,传输,网络,数据链路,物理
数据链路层:
1)LLC 逻辑链路控制子层;
2)MAC 媒介访问控制子层;
802.11只涉及MAC层
媒介 不同的媒介 :无线(CSMA/CA)/有线(CSMA/CD)
CD:冲突检测 边发送边监听
CA:冲突避免