Android DNS 存储文件,Android网络DNS

本文详细介绍了Android系统的DNS工作原理,从netd服务的DNS设置与域名解析,到libc中的DNS解析函数,再到Android的netId管理和ndc工具的使用。探讨了如何查询和管理DNS服务器,包括刷新DNS缓存和设置网络DNS的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Android netd DNS

libcore/ojluni/src/main/java/java/net/InetAddress.java

netd中dns server设置文件:ResolverController.cpp

netd中域名解析文件:DnsProxyListener.cpp

Figure 1-1 Android netd DNS

942050ed58114cf0fac49ebc1c163d71.png

2 libc DNS解析函数

bionic/libc/dns/net/getaddrinfo.c

getaddrinfo()

bionic/libc/dns/net/getnameinfo.c

getnameinfo()

bionic/libc/dns/net/gethnamaddr.c

gethostbyname()

通过netd获取DNS服务器的IP地址(Ubuntu通过进程dnsmasq和配置文件/etc/resolv.conf),然后构建DNS请求包,查询域名对应的IP地址,并且按照netId的分类缓存到netd中:

bionic/libc/dns/net/gethnamaddr.c

gethostbyname_internal_real()

3 Android netId

3.1 获取网络接口的netId

netd中将接口名(wlan0、eth0等)转化为netId的函数:

server/NetworkController.cpp

NetworkController::getNetworkForInterface(const char*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值