Android
文章平均质量分 80
chendh1977
这个作者很懒,什么都没留下…
展开
-
【Android】(六) Netfilter
struct net 有一个 struct netns_nf 成员,里面有个 nf_hook_entries 列表,每个 nf_hook_entries 就对应了每个钩子点所对应的钩子函数列表。nf_hook_entries 内的 hooks 就是钩子点所有的过滤函数,具体的钩子函数就是 nf_hook_entry 内的 nf_hookfn 函数。遍历 nf_hook_entries 中的 hook 函数,依次执行,根据返回值判断,是 NF_ACCEPT,还是 NF_DROP,还是NF_QUEUE。原创 2024-09-14 09:36:04 · 671 阅读 · 0 评论 -
【Android】(五) 网络数据包流向
dst_input 根据不同的情况,可能是 ip_forward 或者是 ip_local_deliver。原创 2024-09-14 09:34:04 · 174 阅读 · 0 评论 -
【Android】(四) Fwmark
fwmark 是一个用于标识数据包的标记,它可以用来标识不同的数据流。它可以用来指定某些特定的数据包通过特定的路由表,或者用于指定某些特定的数据包应该使用特定的策略,例如指定某些数据包应该使用特定的 QoS 策略。有掩码的 fwmark 通常被用来指定某些特定的数据包应该使用特定的策略,而不是所有的数据包都使用特定的策略。在这种情况下,fwmark 的掩码用于指定哪些数据包应该使用特定的策略。原创 2024-09-14 09:32:05 · 598 阅读 · 0 评论 -
【Android】(十三) DNS-Resolver
init 进程启动后,解析 init.rc,启动了 netdnetd 启动过程中初始化了 Dns-Reslover。初始化过程调用了 initReslover,构造了解析器的回调函数,调用 resolv_init 具体进行初始化。resolv_init 中初始化 Dns 日志系统配置,设置解析器回调函数。接着准备启动Dns-Reslover服务。原创 2024-09-14 09:28:55 · 339 阅读 · 0 评论 -
【Android】(十二) NAT
(处于 TetherModeAliveState 状态也可能收到 EVENT_IFACE_SERVING_STATE_ACTIVE,此时同样会向 IpServer 发送 CMD_TETHER_CONNECTION_CHANGED,此时 iface 是 mCurrentUpstreamIfaceSet)TetheringInterfaceUtils。进入状态时会调用状态的 enter 方法,向 Tethering 对象通知接口状态的改变。原创 2024-09-14 09:27:27 · 194 阅读 · 0 评论 -
【Android】(十一) DHCP模块
startModuleService 方法通过 bindServiceAsUser 来启动服务,此时 NetworkStackService 的 onBind 方法被调用,返回 IBinder 给服务代理端,此时服务代理端的 registerNetworkStackService 被调用,成功注册服务。并且会调用两状态的父状态的 enter 方法。startIPv4 方法中调用了 startIPv4 方法,并且经过一系列的调用,最终调用了 startDhcp 方法,构建了Dhcp Server。原创 2024-09-13 22:42:08 · 343 阅读 · 0 评论 -
【Android】(十) TetheringService
在 SystemServer 中启动了 TetheringService 服务,TetheringService 中创建了服务对应的 Binder 对象,并创建了 Tethering 对象。原创 2024-09-13 22:37:38 · 362 阅读 · 0 评论 -
【Android】 (九) 网络评分机制
WiFi 启动 PHASE_BOOT_COMPLETED 阶段结束后,在 WifiServiceImpl 中 handleBootCompleted 是创建并注册了 WifiNetworkFactory。WifiNetworkFactory 继承自 NetworkFactoy,NetworkFactory 中定义了 register 方法。NetworkFactory 中的 register 具体由 NetworkFactoryImpl 实现。原创 2024-09-13 22:26:57 · 229 阅读 · 0 评论 -
【Android】(八) 按时间段流量统计源码分析
NetworkStatsManager 中按照时间段统计网络流量的 API 中都是调用了 NetworkStats 中的以上三种函数。而这其中又调用了 INetworkStatsSession 中的以上两种函数。这两种函数分别又调用了 NetworkStatsCollection 中的函数。大致可以看到,getSummary 和 getHistory 统计数据是根据 NetworkStatsCollection 中的 NetworkStatsHistory array 来累计的。getSummary。原创 2024-09-13 22:25:33 · 397 阅读 · 0 评论 -
【Android】(七) TrafficStatistics API
【代码】【Android】(七) TrafficStatistics API。原创 2024-09-13 22:24:06 · 115 阅读 · 0 评论 -
【Android】(二) Netd初始化
MDnsSdListener 继承自 FrameworkListener,FrameworkListener 继承自 SocketListener,所以跟DnsResolverProxy 类似,创建一个 Socket_Name = “mdnsd” 的本地套接字,监听来自上层的消息,收到消息以后根据 onDataAvailable 来进行相应的处理。为了做到这一点,它首先对一些成员变量进行重置,然后通过执行iptables命令来实现必要的配置,清理一些 rule 并添加一些 rule。原创 2024-09-13 22:16:36 · 643 阅读 · 0 评论 -
【Android】(三) iptables 详解
根据target参数的值,判断要执行的命令类型。如果target是V4或V4V6,则调用sendCommand函数执行iptables-restore命令,并将结果存储在output中。也因为 Chain 中 Rules 的次序非常关键,执行 Rules 时,会按照从上往下的顺序进行。表(Table)是面向应用场景的管理方式,每张表被赋予了不同的应用场景,所以也内含了不同的 Chains 和 Rules。此外,Netfilter 提供了 5 条内建的 Chains,用户也可以新建自定义的 Chains。原创 2024-09-13 22:13:26 · 577 阅读 · 0 评论 -
【Android】(一) AIDL使用示例
跟activity同级原创 2024-09-13 22:03:48 · 274 阅读 · 0 评论 -
NetLink 通信机制
Netlink是linux提供的用于内核和用户态进程之间的通信方式。但是注意虽然Netlink主要用于用户空间和内核空间的通信,但是也能用于用户空间的两个进程通信。只是进程间通信有其他很多方式,一般不用Netlink。除非需要用到Netlink的广播特性时。一般来说用户空间和内核空间的通信方式有三种:/proc、ioctl、Netlink。而前两种都是单向的,但是Netlink可以实现双工通信。原创 2024-09-13 22:03:06 · 257 阅读 · 0 评论