android是如何做DNS解析的

原创 2010年10月24日 00:23:00

通过ubuntu等Linux系统都是通过resolve.conf文件进行域名解析的,通过man resolve.conf可以查看到:

 

The  resolver is a set of routines in the C library that provide access to the Internet Domain Name System (DNS).  The  resolver  configuration file  contains  information  that  is read by the resolver routines the first time they are invoked by a process.  The file is designed  to  be human readable and contains a list of keywords with values that provide various types of resolver information. If this file doesn't exist the only name server to be queried  will  be       on  the  local machine; the domain name is determined from the hostname and the domain search path is constructed from the domain name.

 

所以DNS解析是由C库函数进行解析的,在Android中bionic/libc/docs/overview.txt文件中我们也可以看到:

NS resolver:
  Bionic uses a NetBSD-derived resolver library which has been modified in the following ways:
     - don't implement the name-server-switch feature (a.k.a. <nsswitch.h>)
     - read /system/etc/resolv.conf instead of /etc/resolv.conf
     - read the list of servers from system properties. the code looks for 'net.dns1', 'net.dns2', etc.. Each property should contain the IP address of a DNS server.
       these properties are set/modified by other parts of the Android system (e.g. the dhcpd daemon).
       the implementation also supports per-process DNS server list, using the properties 'net.dns1.<pid>', 'net.dns2.<pid>', etc... Where <pid> stands for the numerical ID of the current process.
     - when performing a query, use a properly randomized Query ID (instead of a incremented one), for increased security.
     - when performing a query, bind the local client socket to a random port for increased security.
     - get rid of *many* unfortunate thread-safety issues in the original code
  Bionic does *not* expose implementation details of its DNS resolver; the content of <arpa/nameser.h> is intentionally blank. The resolver implementation might change completely in the future.

所以android关注的是resolv.conf以及net.dns1等属性。

 

通过adb shell中通过getprop查看属性,确实有net.dns1、net.dns2以及wifi中的net.tiwlan0.dns1以及net.tiwlan0.dns2,移动网络中的net.rmnet0.dns1以及net.rmnet0.dns2等属性。

 

dns工作过程及原理 (linux dns及android dan的实现差异)

dns原理、dns工作过程、dns的实现、linux dns配置原因、android dns的实现框图。 前言本文分析dns工作过程及原理,给一个简单的dns实现代码流程,并针对linux及andro...
  • zjli321
  • zjli321
  • 2017年01月10日 18:38
  • 1700

Android4.3前后DNS解析简单研究

1. Change of Android4.3 在Android4.3以前,如果系统需要备份/恢复,防火墙以及DNS解析管理,Linux内核微调等,是需要ROOT权限才能进行的。在Andro...
  • insswer
  • insswer
  • 2013年12月17日 20:14
  • 13239

关于Android的DNS

工作中发现Android的DNS不正确,那么Anroid的DNS
  • ljg_tony
  • ljg_tony
  • 2014年08月08日 16:35
  • 2348

Android网络设置(route & DNS)

route设置android4.4只使用了一份路由表,使用busybox route就可以完成路由表的设置,从android5.0之后,考虑要对多网络的支持,采用了多路由表,下面的设置方法只适用于an...
  • iampisfan
  • iampisfan
  • 2016年04月01日 21:28
  • 6399

android DNS检测

前段时间心血来潮,突然想研究一下dns检测是什么实现的,于是拿wifi管家开刀了,下面是分析结果:  首先入口函数: protected boolean arQ() { String ...
  • u012292247
  • u012292247
  • 2017年08月20日 12:40
  • 408

Android DNS 代码分析

Android DNS 代码都在bionic/libc/netbsd中 (虽然netbsd 是个废弃的项目,但dns功能部分代码被 Android用上了) netbsd 代码晦涩难懂,只有一边写程序,...
  • span76
  • span76
  • 2014年11月25日 11:32
  • 7542

Android4.3前后DNS解析简单研究

1. Change of Android4.3 在Android4.3以前,如果系统需要备份/恢复,防火墙以及DNS解析管理,Linux内核微调等,是需要ROOT权限才能进行的。...
  • hds_yx
  • hds_yx
  • 2015年03月17日 10:43
  • 1071

Android中DNS解析

原文链接  http://bbs.9ria.com/thread-247917-1-1.html 当服务端IP变化,大量用户还是访问的以前的IP,连接不上服务器。   我们的客户端软件如何...
  • zhyj9493352669
  • zhyj9493352669
  • 2014年01月04日 11:02
  • 5423

android 4.3以上修改DNS 及 流程(netd)

android中请求DNS服务器,获取ip流程如下 如果不走netd,流程如下:
  • ganyue803
  • ganyue803
  • 2016年06月12日 15:01
  • 6301

getprop使用简介

原理:从系统的各种配置文件中读取信息。 init.rc default.prop /system/build.prop使用adb shell getprop就可以把所有的信息都打印出来。...
  • ahaaaaa
  • ahaaaaa
  • 2015年11月17日 15:32
  • 3543
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android是如何做DNS解析的
举报原因:
原因补充:

(最多只允许输入30个字)