- 博客(17)
- 收藏
- 关注
原创 记录DHCP IPV6遇到的问题(一)
进行DHCP IPV6连接的时候,经常遇到设备获取过一次地址后,在短时间内再次重新主动进行一次DHCP IPV6连接,会连接失败,从抓包来分析就是上行服务器不响应。通过与服务器方的沟通,了解到一点,服务器会记录请求设备的mac和DUID(是唯一标识一台DHCPv6设备(包括客户端、中继和服务器)的标识符,用于DHCPv6设备之间的相互验证),发现的设备DUID会一直变动,导致校验失败,所以服务器就不响应了。找到原因,接下来就到了分析源码的时候了: /* * 2 bytes.
2021-09-03 10:39:42
2644
原创 Android流量统计
最近做个需求要在native层的某个应用中加入流量统计,所以研究了一下Android自带的流量统计代码,将JNI中的代码直接移植到了我需要的地方Android提供的流量统计功能在TrafficStats.java类中,包含以下几个:public static long getMobileTxPackets() //Return number of packets transmitted across mobile networks since device boot public static l
2020-09-23 11:14:29
1622
原创 Android 调整DNS顺序
目前IPV6的大力推广,所以现在越来越多的Android设备都开始支持IPV6了,那么在网络上就是IPV4//IPV6双栈连接IPV4/IPV6双栈连接那么系统就会得到下发的ipv4 dns服务器和ipv6 dns服务器,DNS服务器地址在dns协议中保存在一个数组中,后面进行DNS请求也是对该数组进行遍历,所以首先进行请求的目标DNS就是保存在数组中的第一个(具体DNS原理可以查看https://blog.csdn.net/cc0410/article/details/103288483这篇文章)
2020-09-18 10:28:12
1474
1
原创 Android有线IPV6总结(二):内核中RS与RA的一点学习
RS:Router Solicitation路由器请求RA:Router Advertisement路由器公告在Android系统中我们想要打开一个网络接口(比如eth0)的ipv6功能,用命令的话我们有如下两种办法:1,echo 0 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6直接读写的内核proc文件2,ndc interface ipv6 eth0 enable用ndc命令,最终也是写内核proc文件如上的操作pr..
2020-09-15 10:00:28
6354
1
原创 Android Wifi学习(五)
wifi的softap打开过程:1)从Android 7.0开始,google已经从原先直接调用WifiManager.setWifiApEnabled()的方式,直接改成调用ConnectivityManager.startTethering()的方式了。2)当修改AP配置时,也不用原先像mWifiManager.setWifiApEnabled(null, false),再mWifiManager.setWifiApEnabled(mWifiConfig, true)的方式。改成了当hosta.
2020-09-04 10:40:02
379
原创 Android Wifi学习(三)
wifi的scan流程分析:一般,在上层应用上,当用户进入wifi的UI界面时,此时就会自动去下scan,是一个定时scan,间隔10s或15s,当退出wifi UI界面时,这时就会停止上层的scan。这个是上层应用做的操作。在android 8.0之前的版本,scan的定时扫描都是在上层app做的,但从8.0开始,google把这个定时器做到了framework中的SettingsLib(frameworks/base/packages/SettingsLib)中去了如下修改为goog
2020-06-28 15:45:10
423
转载 转载:一篇文章了解相见恨晚的 Android Binder 进程间通讯机制
概述最近在学习Binder机制,在网上查阅了大量的资料,也看了老罗的Binder系列的博客和Innost的深入理解Binder系列的博客,都是从底层开始讲的,全是C代码,虽然之前学过C和C++,然而各种函数之间花式跳转,看的我都怀疑人生。毫不夸张的讲每看一遍都是新的内容,跟没看过一样。后来又看到了Gityuan的博客看到了一些图解仿佛发现了新大陆。下面就以图解的方式介绍下Binder机制,相信你看这篇文章,一定有所收获。什么是 Binder?Binder是Android系统中进程间通讯(IP
2020-06-18 09:47:46
187
原创 Android Wifi学习(一)
Android Wifi的整体架构如下图所示:第一层Application:主要就是wifi应用,已settings apk为主第二层Android Wifi Framework:Android Wifi框架层,为wifi应用提供API,维护wifi各功能状态,与Android网络模块建立关联第三层Android Wifi Hal:wifi的硬件抽象层,为Android Wifi Framework提供操作wifi的命令第四层Netlink:为用户层到内核层建立通道的工具第五层cfg
2020-06-16 17:27:30
514
原创 Android DNS机制
1,DNSDNS全称Domain Name System(域名系统),顾名思义,就是把域名解析为指向的IP,让人们通过注册的域名可以方便的访问到网址的一种服务。域名解析就是域名到IP地址的转换过程。域名解析的工作由DNS服务器完成,其过程可简单描述为:域名地址经过DNS服务器解析后,得到对应的IP地址,通过该IP地址访问到服务器获取我们要访问的内容。2,Android DNS模...
2020-04-30 14:00:58
2604
1
原创 Android有线IPV6总结(一):IPV6无状态
IPV6无状态Android Frameworks的流程如下图所示:在上图中我们可以看到无状态的DNS获取是根据RA报文中的MOflag来确定的,如果M=0,O=0那么我们将获取自定义的默认DNS地址,如果M=0,O=1那么我们将通过DHCPv6来获取DNS地址,RA报文如下图所示:DHCPv6请求DNS地址的流程如下图所示:...
2019-11-29 11:26:34
2093
原创 Android 4.4 设置DNS及DNS解析请求流程分析
1,将网络连接获取的DNS设置到系统中1.1DNS获取后先设置LinkProperty在Android Frameworks中不同的网络interface(eth0、wlan0等)都会有一个独立的LinkProperties对象来保持自己的网络信息1.2通知ConnectivityService DNS信息已获取成功不管是dhcp、pppoe或者是静态设置,在成功获取...
2019-11-28 17:05:35
4756
2
原创 property_set启动service时带入参数
Android的init.rc系列脚本中通常会定义很多native service,如下:而这些service中有些我们会在合适的时候使用property_set("ctl.start",cmd)的方式进行启动,那么使用这种方式的时候能否携带参数进而传给实际要去运行的可执行程序呢?答案是可以的这里我们不仔细分析property_set的原理了,简单来说就是init进程启动后会给p...
2019-10-10 10:08:10
1806
4
原创 Android DNS缓存时长的探索
这段时间在研究Android DNS缓存机制,其中有个小点就是关于DNS缓存的时长,就在这里记录一下了Android的DNS缓存机制是双重的:Java层的快速缓存 Native C层的缓存1,Java层先来看Java层的快速缓存,应用层如果想要解析DNS,基本上都是调用InetAddress.getByName(String host)接口,最终调用的就是lookupHostByN...
2019-09-16 16:42:57
5015
1
原创 Android user编译版本 默认打开adb及关闭adb设备认证
Android编译有3种方式:eng userdebug user三种编译方式的不同,这里暂不做具体描述,但可以告诉大家如何去了解这三种编译方式产生的区别:在source build/envsetup.sh lunch xx之后,会将变量TARGET_BUILD_VARIANT赋值为eng或者userdebug或者user然后你就可以在build目录下去grep TAR...
2019-07-19 14:37:50
7803
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人