邓凡平WIFI学习笔记1:netd
·Netd接收并处理来自Framework层中NetworkManagementService或NsdService的命令。这些命令最终由Netd中对应的Command对象去处理。
·CommandListener、DnsProxyListener、MDnsSdListener:分别创建名为"netd"、"dnsproxyd"、"mdns"的监听socket,并处理来客户端的命令。
MDnsSdListener对应的Framework层服务为NsdService(Nsd为Network Service Discovery的缩写)
Addressing:即为主机分配IP
aming:Naming解决的是host和IP地址的对应关系
Service Discovery:SD基于Naming工作,它使得应用程序能查找到网络内部的服务,并解析该服务对应的IP地址和端口号
·NetlinkManager:接收并处理来自Kernel的UEvent消息。这些消息经NetlinkManager解析后将借助它的Broadcaster(也就是代码中为NetlinkManager设置的CommandListener)发送给Framework层的NetworkManagementService。
NETLINK_KOBJECT_UEVENT
NETLINK_ROUTE
NETLINK_NFLOG
iptables的语法比较复杂,但工作原理较易理解。清楚iptables的前提是理解它的表(Table)、链(Chain)和规则(Rule)。
·iptables内部(其实是Kernel的netfilter模块)维护着四个Table,分别是filter、nat、mangle和raw,
·Table中定义了Chain。一个Table可以支持多个Chain,Chain实际上是Rule的集合,每个Table都有默认的Chain。例如filter表默认的Chain有INPUT、OUTPUT、FORWARD。用户可以自定义Chain,也可修改Chain中的Rule。
·Rule就是iptables工作的规则。首先,系统将检查要处理的数据包是否满足Rule设置的条件,如果满足则执行Rule中设置的目标(Target),否则继续执行Chain中的下一条Rule。
iptables中的Rule有四个默认定义的Target,如下。
·ACCEPT:接收数据包。
·DROP:直接丢弃数据包。没有任何信息会反馈给数据源端。
·RETURN:返回到调用Chain,略过后续的Rule处理。
·QUEUE:数据返回到用户空间去处理。
提示 iptables的扩展Target还支持REJECT。相比DROP而言,REJECT会发送反馈信息
给数据源端,如主机不可达之类(icmp-host-unreachable)的信息。目前只有INPUT、
OUTPUT、FORWARD以及被这三个链调用的自定义链支持REJECT。
iptables有很多参数,此处先介绍一些常用参数。
-t:指定table。如果不带此参数,则默认为filter表。
-A,--append chain rule-specification:在指定Chain的末尾添加一条Rule,rule-specification指明该Rule的内容。
-D,--delete chain rule-specification:删除指定Chain中满足rule-specification的那条Rule。
-I,--insert chain[rule num]rule-specification:为指定Chain插入一条Rule,位置由rule num指定。如果没有该参数,则默认加到Chain-N:创建一条新Chain。
-L,--list:显示指定Table的Chain和Rule的信息。
Rule-specification描述该Rule的匹配条件以及目标动作,它也有一些参数来指明这些信
息。
-i:指定接收数据包的网卡名,如eth0、eth1等。
-o:指定发出数据包的网卡名。
-p:指定协议,如tcp、udp等。
-s,--source address[/mask]:指定数据包的源IP地址。
-j,--jump target:跳转到指定目标,如ACCEPT、DROP等。
ip命令是Linux系统中另一个强大的网络管理工具,主要功能如下。
·可替代ifconfig命令。即通过ip工具可管理系统中的网络接口,包括配置并查看网络接口情况、使能或禁止指定网络接口。
·可替代route命令。即ip工具支持设置主机路由、网络路由、网关参数等。
·可替代arp命令。即ip工具支持查看、修改和管理系统的ARP缓存等。
ndc是Android为Netd提供的一个测试工具。其主要功能有:
·监视Netd中发生的事情。
·支持通过命令行发送命令给Netd去执行。
相信读者很轻松就能想到ndc的实现原理,其实它就是连接上位于netd进程中的"netd"监
听socket,然后从Netd接收信息或发送命令给Netd。
adb shell ndc monitor
InterfaceCmd
(1)NIC设备信息管理选项
·list:列举系统当前的网络设备。这是通过枚举/sys/class/net目录下的文件名而来
#ndc interface list
readrxcounter和readtxcounter:这两个选项分别用于读取系统所有网络设备的接收字节数
和发送字节数等统计信息。它们都是通过读取/proc/net/dev
(2)输入和输出流量控制选项
getthrottle:throttle是节流之意,用于流量控制。该选项支持读取发送和接收阈值
·setthrottle:该选项的参数为setthrottle interface rx_kbps tx_kbps,用于控制网卡输入和输出流量。
(3)Route控制选项
当添加的是默认路由时,直接调用ifc_add_route函数为指定设备添加一个路由
·如果是针对多路由表的"secondary",则使用SecondaryTableCtrontroller的addRoute函数来
添加路由。该函数中,SecondaryTableCtrl首先会计算一个Table索引,然后利用ip命令将路由添加到对应的Table中。
ip route add 192.168.0.100/24 via 192.168.0.1 dev wlan0 table 78#使用路由表78
(4)Driver控制选项
(5)IFC设备控制选项
ndc interface getcfg wlan0
(6)IPv6控制选项
ipv6:用于启动或禁止网卡的IPv6支持。往/proc/sys/net/ipv6/网卡名/conf/disable_ipv6中写入0或1即可。
ipv6privacyextensions:用于控制网卡使用临时IPv6地址的情况
IpFwd和FirewallCmd命令
- IpFwd命令
status:用于判断ipforward功能是否开启。
enable和disable:分别用于启动和禁止ipforward功能。
通过读写/proc/sys/net/ipv4/ip_forward文件来实现对内核ipforward功能的管理。
- FirewallCmd命令
·enable和is_enabled:用于启动防火墙和判断防火墙是否已经启动。
·set_interface_rule:针对单个或多个NIC设备设置防火墙规则。
·set_egress_source_rule和set_egress_dest_rule:基于源IP和目标IP地址设置防火墙。
·set_uid_rule:根据uid设置单个进程的防火墙。
iptables-I FORWARD_INPUT-m owner--uid-owner uid-j RETURN
iptables-I FORWARD_OUTPUT-m owner--uid-owner uid-j RETURN
ListTtysCmd和PppdCmd命令
/sys/class/tty
PppdCmd仅有attach和detach两个选项。其中,attach用于启动pppd进程,而detach用于杀死pppd进程。
NatCmd命令
TetherCmd和SoftapCmd命令
ResolverCmd命令
ResolverCmd和Android系统中DNS的实现有关,用于给不同NIC设备配置不同的DNS。
其主要支持四个选项。
·setdefaultif:设置DNS查询时默认的NIC。和Android中DNS的实现有关。
·setifdns:设置不同NIC的DNS配置信息。
·flushdefaultif、flushif:清空默认或某个NIC的DNS配置信息。
邓凡平WIFI学习笔记1:netd相关推荐
- 邓凡平WIFI学习笔记3: WiFi 协议安全部分
安全是无线网络技术中一个很重要的部分,它主要有三个保护点. ·数据的完整性(Integrity):用于检查数据在传输过程中是否被修改. ·数据的机密性(Confidentiality):用于确保数据不 ...
- 邓凡平WIFI学习笔记4:WiFi Simple configuration
1)打开AP和STA.用户首先从STA相关的设置选项中获取一个PIN码. 2)用户将STA的PIN码通过AP的设置页面传递给AP. 3)AP和STA将基于这个PIN码完成安全设置协商.然后STA将完成 ...
- 专访邓凡平:Android开发路上的快速学习之道
摘要:随着Android系统越来越流行,Android应用的需求也在不断变化,对于开发者而言,深入理解Android系统原理显得越来越重要.社区之星第22期采访了移动开发牛人.技术精深.乐于分享的邓凡 ...
- android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升
android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升 转载于:https://www.cnblogs.com/jeanschen/p/3507512.html
- 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)
<繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...
- 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述
<繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...
- 一文让你完全弄懂逻辑回归和分类问题实战《繁凡的深度学习笔记》第 3 章 分类问题与信息论基础(上)(DL笔记整理系列)
好吧,只好拆分为上下两篇发布了>_< 终于肝出来了,今天就是除夕夜了,祝大家新快乐!^q^ <繁凡的深度学习笔记>第 3 章 分类问题与信息论基础 (上)(逻辑回归.Softm ...
- 一文让你完全弄懂回归问题、激活函数、梯度下降和神经元模型实战《繁凡的深度学习笔记》第 2 章 回归问题与神经元模型(DL笔记整理系列)
<繁凡的深度学习笔记>第 2 章 回归问题与神经元模型(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net/ http ...
- [Android]Android P(9) WIFI学习笔记 - HAL (1)
目录 前文回顾 前言 入口 WifiNative 初始化 打开WIFI IWifiChip IWifiCond ISupplicant 前文回顾 WIFI学习笔记 - Framework (1) WI ...
- 高通 NFC开发基础知识 (未完待续)(目前是主要择录,参考 邓凡平:深入理解Android:WiFi模块 NFC和GPS卷)
NFC开发相关 NFC概述 NFC(Near Field Communication,近场通信)也叫做近距离无线通信技术.该技术最早由Philips和Sony两家公司于2002年年末联合推出.2004 ...
最新文章
- 蓝桥杯:安慰奶牛(最小生成树)
- Java中几个主流的数据库连接池
- C/C++变量命名规则,个人习惯总结
- T-SQL编程基础之三:游标(Cursor)编程
- 漫画:如何用栈实现队列
- Word中摘要和正文同时分栏后,正文跑到下一页,怎么办?或Word分栏后第一页明明有空位后面的文字却自动跳到第二页了,怎么办?...
- ubuntu18.04 出现 Command 'ifconfig' not found 问题的解决办法
- 大数据组件运维工具之HBase
- OCS2007R2部署之四部署存档和监控服务器
- WINDOWS游戏编程大师技巧-常见编绎连接错误FAQ
- python 面向对象五 获取对象信息 type isinstance getattr setattr hasattr
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_04-项目概述-技术栈和开发步骤...
- 10g添加用户 oracle_linux安装oracle
- vue实现上传图片并预览效果 html+css+js
- VirtualBox虚拟机中安装XP系统
- java启动tomcat9闪退
- Vue3.0调用PC端本地摄像头录像
- Visual Studio 2015产品密钥
- 什么是手机号码姓名实名认证 手机号码查姓名 手机号实名认证API
- 基于动态邻域的切换粒子群优化算法