黑马程序员技术交流社区

标题: 第23天网络编程,问什么没联网也能获取到百度IPs? [打印本页]

作者: 王震阳老师    时间: 2012-11-22 10:30
提示: 该帖被管理员或版主屏蔽
作者: 段海涛    时间: 2012-11-22 11:00
本帖最后由 段海涛 于 2012-11-22 11:03 编辑

呵呵,奥妙在windows系统获取域名所对应的IP地址的机制
windows系统在目录C:\WINDOWS\system32\drivers\etc 下有一个hosts文件,里面可以存放 域名——>IP地址的映射记录
当windows试图获取域名所对应的ip地址时,首先就是从这个hosts文件中读取,如果能读取到,就取这个文件中所映射的ip地址,
如果这个文件中没有要查的映射,再去网络上的DNS即域名服务器查找

所以,我推测,你的系统中hosts文件中估计有这两条
119.75.218.77          www.baidu.com
119.75.217.56          www.baidu.com

这样,GetBaiDuIPs.java在没联网的情况下就获取到了www.baidu.com在hosts文件中映射的这两个ip地址;
为了验证,你可以试着把这个hosts文件中的baidu条目删到只剩一条,且修改成
127.0.0.1         www.baidu.com

修改保存后你再试试执行GetBaiDuIPs  ?
甚至,你可以把网络连上试试用ie打开www.baidu.com?
结果应该能够应证我上面所说的windows查找域名的机制
作者: 胡勇敏    时间: 2012-11-22 11:03
这个获取到的应该是DNS缓存中的地址。你可以用CMD-->ipconfig /displaydns来查看下DNS的缓存。查看完后可以用ipconfig /flashdns来清除下DNS的缓存。
作者: 王震阳老师    时间: 2012-11-22 11:11
huymd1234 发表于 2012-11-22 11:03
这个获取到的应该是DNS缓存中的地址。你可以用CMD-->ipconfig /displaydns来查看下DNS的缓存。查看完后可以 ...

这是截屏,那个是缓存呀?

ipconfig.jpg (105.36 KB, 下载次数: 59)

ipconfig.jpg

作者: 胡勇敏    时间: 2012-11-22 11:33
王震阳 发表于 2012-11-22 11:11
这是截屏,那个是缓存呀?

按我给你的命令敲 ipconfig /displaydns




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2