自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 【Android-WIFI】(六) wpa_supplicant to kernel

【代码】【Android-WIFI】(六) wpa_supplicant to kernel。

2024-09-14 10:11:19 465

原创 【Android-WIFI】(五) Roaming机制HAL层源码分析

我们首先来看看 wpa_supplicant 进程的初始化。在 wpa_supplicant 进程的 main 函数中,初始化了 wpa_global 对象供整个进程使用。wpa_supplicant 进程主要是向上接受上层关于 WiFi 的请求,然后向下层内核驱动发送通信。所以这里通过 IO 多路复用来轮询监听相应的事件。wpa_global 中的 每一个 wpa_supplicant 对象都是一个 wpa_supplicant 接口,其中都配置了对应的驱动接口。可选驱动如上图所示。

2024-09-14 10:10:22 615

原创 【Android-WIFI】(四) Roaming机制Framework层源码分析

如果所有扫描结果和当前的网络连接都是同一个 SSID,则需要根据 RSSI 判断信号强度是否足够强,足够强的话就不需要,进行网络选择。(选择候选网络这里,到底是如何判断需要重新连接网络,是否是根据当前网络的强度还是什么,源码中选择候选网络时调用 isNetworkSelectionNeeded 判断是否需要挑选候选网络,只要搜索到有跟当前网络 SSID 不同的网络就会需要 select,而只有所有搜到的 SSID 都和当前网络相同的时候,这时候才会判断当前的网络强度是否有需要去切换网络,很困惑。

2024-09-14 10:08:53 451

原创 【Android-WIFI】(三) Wifi 连接

Station 模式下的连接的实现主要是在 ClientModeImpl 中。

2024-09-14 10:01:13 1151

原创 【Android-WIFI】(二) Wifi 扫描

在 SystemServer 中注册 并启动 WiFiScanning 服务,创建了 WifiScanningService。创建 WifiScanningService 实例对象的时候创建了 WifiScanningServiceImpl,也就是 WifiScanningService 的实际实现类。并且将 WifiScanningServiceImpl 注册到 ServiceManager 中。此处主要还创建了 ScannerImplFactory。

2024-09-14 09:57:12 622

原创 【Android-WIFI】(一) Wifi 服务启动

在 SystemServer 中注册 并启动 WiFi 服务,创建了 WifiService。创建 WifiService 实例时创建了一些对象,WifiInjector 管理和组织与 Wi-Fi 相关的各种操作和组件,WifiServiceImpl 是 WiFi 服务的具体实现,其成员几乎全由 WifiInjector 创建。并将 WifiServiceImpl 注册到 ServiceManager 中。

2024-09-14 09:55:32 1055

原创 【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 1372

原创 【Android】(五) 网络数据包流向

dst_input 根据不同的情况,可能是 ip_forward 或者是 ip_local_deliver。

2024-09-14 09:34:04 425

原创 【Android】(四) Fwmark

fwmark 是一个用于标识数据包的标记,它可以用来标识不同的数据流。它可以用来指定某些特定的数据包通过特定的路由表,或者用于指定某些特定的数据包应该使用特定的策略,例如指定某些数据包应该使用特定的 QoS 策略。有掩码的 fwmark 通常被用来指定某些特定的数据包应该使用特定的策略,而不是所有的数据包都使用特定的策略。在这种情况下,fwmark 的掩码用于指定哪些数据包应该使用特定的策略。

2024-09-14 09:32:05 995

原创 【Android】(十三) DNS-Resolver

init 进程启动后,解析 init.rc,启动了 netdnetd 启动过程中初始化了 Dns-Reslover。初始化过程调用了 initReslover,构造了解析器的回调函数,调用 resolv_init 具体进行初始化。resolv_init 中初始化 Dns 日志系统配置,设置解析器回调函数。接着准备启动Dns-Reslover服务。

2024-09-14 09:28:55 1167

原创 【Android】(十二) NAT

(处于 TetherModeAliveState 状态也可能收到 EVENT_IFACE_SERVING_STATE_ACTIVE,此时同样会向 IpServer 发送 CMD_TETHER_CONNECTION_CHANGED,此时 iface 是 mCurrentUpstreamIfaceSet)TetheringInterfaceUtils。进入状态时会调用状态的 enter 方法,向 Tethering 对象通知接口状态的改变。

2024-09-14 09:27:27 295

原创 【Android】(十一) DHCP模块

startModuleService 方法通过 bindServiceAsUser 来启动服务,此时 NetworkStackService 的 onBind 方法被调用,返回 IBinder 给服务代理端,此时服务代理端的 registerNetworkStackService 被调用,成功注册服务。并且会调用两状态的父状态的 enter 方法。startIPv4 方法中调用了 startIPv4 方法,并且经过一系列的调用,最终调用了 startDhcp 方法,构建了Dhcp Server。

2024-09-13 22:42:08 754

原创 【Android】(十) TetheringService

在 SystemServer 中启动了 TetheringService 服务,TetheringService 中创建了服务对应的 Binder 对象,并创建了 Tethering 对象。

2024-09-13 22:37:38 558

原创 【Android】 (九) 网络评分机制

WiFi 启动 PHASE_BOOT_COMPLETED 阶段结束后,在 WifiServiceImpl 中 handleBootCompleted 是创建并注册了 WifiNetworkFactory。WifiNetworkFactory 继承自 NetworkFactoy,NetworkFactory 中定义了 register 方法。NetworkFactory 中的 register 具体由 NetworkFactoryImpl 实现。

2024-09-13 22:26:57 432

原创 【Android】(八) 按时间段流量统计源码分析

NetworkStatsManager 中按照时间段统计网络流量的 API 中都是调用了 NetworkStats 中的以上三种函数。而这其中又调用了 INetworkStatsSession 中的以上两种函数。这两种函数分别又调用了 NetworkStatsCollection 中的函数。大致可以看到,getSummary 和 getHistory 统计数据是根据 NetworkStatsCollection 中的 NetworkStatsHistory array 来累计的。getSummary。

2024-09-13 22:25:33 718

原创 【Android】(七) TrafficStatistics API

【代码】【Android】(七) TrafficStatistics API。

2024-09-13 22:24:06 291

原创 【Android】(二) Netd初始化

MDnsSdListener 继承自 FrameworkListener,FrameworkListener 继承自 SocketListener,所以跟DnsResolverProxy 类似,创建一个 Socket_Name = “mdnsd” 的本地套接字,监听来自上层的消息,收到消息以后根据 onDataAvailable 来进行相应的处理。为了做到这一点,它首先对一些成员变量进行重置,然后通过执行iptables命令来实现必要的配置,清理一些 rule 并添加一些 rule。

2024-09-13 22:16:36 984

原创 【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 965

原创 【Android】(一) AIDL使用示例

跟activity同级

2024-09-13 22:03:48 449

原创 NetLink 通信机制

Netlink是linux提供的用于内核和用户态进程之间的通信方式。但是注意虽然Netlink主要用于用户空间和内核空间的通信,但是也能用于用户空间的两个进程通信。只是进程间通信有其他很多方式,一般不用Netlink。除非需要用到Netlink的广播特性时。一般来说用户空间和内核空间的通信方式有三种:/proc、ioctl、Netlink。而前两种都是单向的,但是Netlink可以实现双工通信。

2024-09-13 22:03:06 496

原创 【网络工具】pfctl(待补充QNX&Linux)

PF 从 /etc/pf.conf 中读取配置信息。

2024-09-13 10:15:47 237

原创 【网络工具】概览

以下工具列举顺序从下向上。

2024-09-13 10:15:05 1018

原创 【网络工具】bridge(待补充Linux)

Addinterfaceinterfacedownupruleinterfaceinterfacesizesecondssecondsaddressinterfacevalue。

2024-09-13 10:13:12 820

原创 【深度学习】(二) 优化算法

将样本均分,分成一个个 mini-batch,每个 mini-batch 的个数最好是 2 的次方个数,例如 64,128,256,512……被设置为接近于 0 的值,直观理解就是把多隐藏单元的权重设为 0,于是基本上消除了这些隐藏单元的许多影响,使得模型更加简单。被设置为接近于 0 的值,直观理解就是把多隐藏单元的权重设为 0,于是基本上消除了这些隐藏单元的许多影响,使得模型更加简单。的概率随机失活一部分神经单元,随机消除一部分神经单元的影响,起到了类似于 L2 正则化的影响。设置得足够大,权重矩阵。

2024-09-13 09:54:56 923

原创 【深度学习】(一) 概述

xxx: 表示一个 n1维数据,为输入数据,维度为nx1(n_x, 1)nx​1;yyy:表示输出结果,取值为01(0, 1)01;xiyixiyi:表示第 i 组数据,一般指训练集数据;Xx1x2xmXx1x2……xm, 向量化表示所有训练数据的输入值,放在一个nx∗mn_x*mnx​∗m的矩阵中, m 为样本数目;

2024-09-13 09:49:55 680

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除