·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命令

  1. IpFwd命令

status:用于判断ipforward功能是否开启。

enable和disable:分别用于启动和禁止ipforward功能。

通过读写/proc/sys/net/ipv4/ip_forward文件来实现对内核ipforward功能的管理。

  1. 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相关推荐

  1. 邓凡平WIFI学习笔记3: WiFi 协议安全部分

    安全是无线网络技术中一个很重要的部分,它主要有三个保护点. ·数据的完整性(Integrity):用于检查数据在传输过程中是否被修改. ·数据的机密性(Confidentiality):用于确保数据不 ...

  2. 邓凡平WIFI学习笔记4:WiFi Simple configuration

    1)打开AP和STA.用户首先从STA相关的设置选项中获取一个PIN码. 2)用户将STA的PIN码通过AP的设置页面传递给AP. 3)AP和STA将基于这个PIN码完成安全设置协商.然后STA将完成 ...

  3. 专访邓凡平:Android开发路上的快速学习之道

    摘要:随着Android系统越来越流行,Android应用的需求也在不断变化,对于开发者而言,深入理解Android系统原理显得越来越重要.社区之星第22期采访了移动开发牛人.技术精深.乐于分享的邓凡 ...

  4. android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升

    android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升 转载于:https://www.cnblogs.com/jeanschen/p/3507512.html

  5. 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)

    <繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...

  6. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

  7. 一文让你完全弄懂逻辑回归和分类问题实战《繁凡的深度学习笔记》第 3 章 分类问题与信息论基础(上)(DL笔记整理系列)

    好吧,只好拆分为上下两篇发布了>_< 终于肝出来了,今天就是除夕夜了,祝大家新快乐!^q^ <繁凡的深度学习笔记>第 3 章 分类问题与信息论基础 (上)(逻辑回归.Softm ...

  8. 一文让你完全弄懂回归问题、激活函数、梯度下降和神经元模型实战《繁凡的深度学习笔记》第 2 章 回归问题与神经元模型(DL笔记整理系列)

    <繁凡的深度学习笔记>第 2 章 回归问题与神经元模型(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net/ http ...

  9. [Android]Android P(9) WIFI学习笔记 - HAL (1)

    目录 前文回顾 前言 入口 WifiNative 初始化 打开WIFI IWifiChip IWifiCond ISupplicant 前文回顾 WIFI学习笔记 - Framework (1) WI ...

  10. 高通 NFC开发基础知识 (未完待续)(目前是主要择录,参考 邓凡平:深入理解Android:WiFi模块 NFC和GPS卷)

    NFC开发相关 NFC概述 NFC(Near Field Communication,近场通信)也叫做近距离无线通信技术.该技术最早由Philips和Sony两家公司于2002年年末联合推出.2004 ...

最新文章

  1. 蓝桥杯:安慰奶牛(最小生成树)
  2. Java中几个主流的数据库连接池
  3. C/C++变量命名规则,个人习惯总结
  4. T-SQL编程基础之三:游标(Cursor)编程
  5. 漫画:如何用栈实现队列
  6. Word中摘要和正文同时分栏后,正文跑到下一页,怎么办?或Word分栏后第一页明明有空位后面的文字却自动跳到第二页了,怎么办?...
  7. ubuntu18.04 出现 Command 'ifconfig' not found 问题的解决办法
  8. 大数据组件运维工具之HBase
  9. OCS2007R2部署之四部署存档和监控服务器
  10. WINDOWS游戏编程大师技巧-常见编绎连接错误FAQ
  11. python 面向对象五 获取对象信息 type isinstance getattr setattr hasattr
  12. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_04-项目概述-技术栈和开发步骤...
  13. 10g添加用户 oracle_linux安装oracle
  14. vue实现上传图片并预览效果 html+css+js
  15. VirtualBox虚拟机中安装XP系统
  16. java启动tomcat9闪退
  17. Vue3.0调用PC端本地摄像头录像
  18. Visual Studio 2015产品密钥
  19. 什么是手机号码姓名实名认证 手机号码查姓名 手机号实名认证API
  20. 基于动态邻域的切换粒子群优化算法

热门文章

  1. 查税号,税号查询,纳税人识别号查询 - 企查查
  2. EXCEL科学计数法转为文本格式
  3. 【渝粤题库】 陕西师范大学 202961 教育社会学 作业(高起本、专升本)
  4. 视觉里程计 特征点法
  5. python光流法算法学习
  6. 解决edge可以访问github,谷歌却无法访问的问题
  7. 什么是数据可视化大屏?如何制作一个数据可视化大屏?
  8. 逻辑教育大厂必备IOS面试突击班
  9. 根据c语言代码自动画出流程图,根据程序画出流程图
  10. 二元分类(Binary Classfication)与logistic回归