DNS解析
1、本地缓存中查找
通过在cmd中输入命令:ipconfig /displaydns查看本地缓存 ipconfig /flushdns清除本地缓存
下面试着访问www.baidu.com, 看一下解析过程。 使用powershell操作,powershell看起来方便一点:
输入命令 Get-DnsClientCache,看一下本地的缓存
本地缓存有百度的ip地址:110.242.68.3
我们在浏览器中访问www.baidu.com, 打开控制台,可以看到远程地址与缓存的ip一致
现在清一下缓存,输入Clear-DnsClientCache,再输入命令行Get-DnsClientCache,返回是空的,如果你的hosts文件有域名和ip的映射,这里会显示出来,不会被清理掉。
现在修改一下host文件,C:\Windows\System32\drivers\etc\hosts,在里边输入:
198.168.1.1 www.baidu.com
你可以再看一下dns缓存:
RecordType:记录类型
TimeToLive(TTL):存活时间,单位秒
缓存中已经有了,然后在浏览器中访问www.baidu.com:
你会发现已经访问不了了,因为baidu网有做网络安全设置,ip地址改了,认为是在冒充,就拒绝访问了。但是这也说明了,DNS解析时,是读取了本地缓存。(这一操作,其实就是DNS劫持)
这个时候你把hosts文件baidu的ip映射删掉,再清一下dns缓存,再刷新页面,发现还是无法访问,原因是,浏览器中也会缓存DNS。解决方式,关闭当前页面,重新打开就好了
2、DNS服务器查询
当本地缓存中没有域名和IP地址的映射时,就会去DNS服务器查找。 在计算机网络属性中,会找到本地DNS服务器地址;
相关名词
根域名服务器:
ICANN,全球域名最高管理机构,主要工作是维护顶级域名的IP地址,根域名服务器总共有 13 台,编号从
A 到 M
顶级域名服务器:一般指的是.com,.cn,.net,.edu等,域名最后结尾的
本地DNS缓存服务器:一般由运营商提供,现在大部分家庭使用的都是无线路由器,DNS的代理工作也由路由器负责。
查找域名IP的方法:
1、打开cmd,输入命令nslookup www.baidu.com 可查找对应IP
运行结果如下:
服务器: xxx.cn //本地服务器名
Address: 192.168.5.196 //本地服务器ip
非权威应答:
名称: www.a.shifen.com
Addresses: 240e:e9:6002:15c:0:ff:b015:146f //IPV6地址
240e:e9:6002:15a:0:ff:b05c:1278
110.242.68.3 //IPV4地址
110.242.68.4
Aliases: www.baidu.com
2、通过 ping www.baidu.com 的方式
若要追踪DNS解析过程,Linux系统可直接通过dig example.com查看,windows系统可下载dig工具查看;或者可在线查看www.diggui.com; 图片中缺少根域名返回顶级域名服务器,其实是,网页中会直接罗列出所有.com服务器查找的过程,我只截取了其中一个服务器。
总结DNS服务解析过程: 浏览器缓存 --> 系统缓存 --> hosts文件 --> 域名服务器
其实,hosts文件中定义的域名和IP的映射,会自动添加到系统缓存中。
DNS劫持
DNS劫持,即黑客攻破了DNS代理,控制了DNS服务器,这样就可以修改域名与IP的映射,引导用户去了钓鱼网站,用户没有及时发现的话,在页面的引导下泄露自己的账号密码,结果就有点危险了。