您的位置:首页 > 理论基础 > 计算机网络

Linux下的网络函数gethostbyname/gethostbyaddr会访问DNS吗?

2011-08-01 11:32 337 查看
这两天一直在复习Linux下的C编程,除了项目的需要外,还在为找工作做准备。每次复习的时候,都有新的体会,以前看着这2个函数,觉得会用就行了,也没有深入地去了解它们的工作原理。昨天再次看到,有了新的想法,既然这两个函数能够转换 IP 和域名,那么,它们就会去访问DNS服务器吗?如果真的要去访问,网络不通的情况下,它们又怎么办呢?带着这些疑问,我在网上查了一下,并根据提示,做了一下试验,简单总结了一下:

gethostbyname(域名->IP)、gethostbyaddr(IP->域名)在解析的时候,系统默认会先到 /etc/hosts 文件中去寻找匹配信息,然后再到DNS服务器去解析,这个顺序是可以交换的,只要修改 /etc/host.conf 里的 host(本机) 和 bind(DNS服务器) 的顺序即可,我们做个试验:

在DNS服务器配置正常的情况下,gethostbyname的参数为“www.baidu.com”能正常解析,禁掉DNS就不能正常工作了。但是如果把它和 IP 的映射对添加到 /etc/hosts 文件中,则函数又能正常工作了。例如我们在 /etc/hosts 文件里添加这样一组映射:

12.34.56.78 www.baidu.com

则在执行这两个函数的时候,就会返回映射对对应的信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: