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等属性。

 

相关文章推荐

Android百度地图之自定义绘制功能

我们可以在地图上绘制各种自定义的图形,包括点、折线、圆、多边形等等,尤其绘制点和折线非常实用,点可以用来标识所处的位置,折线可以用来描述走过的轨迹,结合前面GPS定位功能可以做出一些非常有意思的应用,...

如何替换android apk中的so

Android的apk文件实际上就是zip文件。通过解压软件解压后可以看到apk文件内部的内容,并且对其中的文件进行修改或更新。但是如果直接将修改后的 1. apktool官网:...

qzone框架机如何做dns纠正总结

在CDN中,通过控制dns实现用户的就近接入,但dns解释有一个缺陷,那就是根据local dns server的ip来源判断用户的来源,而实际上,好多用户的local dns server配置是有问...

如何做域名的MX解析记录

  • 2013年07月01日 16:09
  • 40KB
  • 下载

android apk签名(为什么 如何做 验证)

android apk签名(为什么 如何做 验证)这篇文章其实就是根据自己的疑问然后结合多个文章结合成的文章引用:  http://liangxh2008.blog.163.com/blog/stat...

(转)android apk 签名(为什么 如何做 验证)

一、为什么要签名:   1、发送者的身份认证,由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,以此保证签名不同的包不被替换   2、保证信息传输的完整性,签名对于包中...
  • zl_hao
  • zl_hao
  • 2011年11月28日 11:19
  • 359

android如何做自己的手写输入法

1、xml

Android应用如何做屏幕适配

Android应用如何做屏幕适配 在Android应用开发中,我们常遇到一个非常麻烦的问题,那就是做不同屏幕的适配问题。因为Android手机的种类众多,屏幕的尺寸,像素等配置都各不相同,如...
  • mac_lim
  • mac_lim
  • 2013年05月16日 02:11
  • 1141

android 开发如何做内存优化

网上看的一篇很好的文章;http://www.gforetell.com/?/question/id-111__uid-focus   不少人认为JAVA程序,因为有垃圾回收机制,应该没有内存泄露。...

Cocos2D 如何做 Android 适配

我们知道Cocos2D 是跨平台的 ( Android, iOS, BlackBerry ), 因此它必须把自己适配到不同平台上, 这些适配包括: 1) 屏幕显示 2) 用户输入 3) 进程主循...
  • span76
  • span76
  • 2013年04月21日 18:08
  • 3119
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android是如何做DNS解析的
举报原因:
原因补充:

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