DNS域名解析

556 阅读3分钟

DNS解析

1、本地缓存中查找

通过在cmd中输入命令:ipconfig /displaydns查看本地缓存 ipconfig /flushdns清除本地缓存

下面试着访问www.baidu.com, 看一下解析过程。 使用powershell操作,powershell看起来方便一点:

输入命令 Get-DnsClientCache,看一下本地的缓存

image.png 本地缓存有百度的ip地址:110.242.68.3 我们在浏览器中访问www.baidu.com, 打开控制台,可以看到远程地址与缓存的ip一致

image.png

现在清一下缓存,输入Clear-DnsClientCache,再输入命令行Get-DnsClientCache,返回是空的,如果你的hosts文件有域名和ip的映射,这里会显示出来,不会被清理掉。

现在修改一下host文件,C:\Windows\System32\drivers\etc\hosts,在里边输入:

 198.168.1.1 www.baidu.com

你可以再看一下dns缓存:

image.png RecordType:记录类型 image.png TimeToLive(TTL):存活时间,单位秒

缓存中已经有了,然后在浏览器中访问www.baidu.com:

image.png

你会发现已经访问不了了,因为baidu网有做网络安全设置,ip地址改了,认为是在冒充,就拒绝访问了。但是这也说明了,DNS解析时,是读取了本地缓存。(这一操作,其实就是DNS劫持)

这个时候你把hosts文件baidu的ip映射删掉,再清一下dns缓存,再刷新页面,发现还是无法访问,原因是,浏览器中也会缓存DNS。解决方式,关闭当前页面,重新打开就好了

2、DNS服务器查询

当本地缓存中没有域名和IP地址的映射时,就会去DNS服务器查找。 在计算机网络属性中,会找到本地DNS服务器地址;

image.png

相关名词

image.png 根域名服务器: ICANN,全球域名最高管理机构,主要工作是维护顶级域名的IP地址,根域名服务器总共有 13 台,编号从 A 到 M

顶级域名服务器:一般指的是.com,.cn,.net,.edu等,域名最后结尾的

本地DNS缓存服务器:一般由运营商提供,现在大部分家庭使用的都是无线路由器,DNS的代理工作也由路由器负责。

查找域名IP的方法:

1、打开cmd,输入命令nslookup www.baidu.com 可查找对应IP

运行结果如下:

image.png

服务器:  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 的方式

image.png

若要追踪DNS解析过程,Linux系统可直接通过dig example.com查看,windows系统可下载dig工具查看;或者可在线查看www.diggui.com; 图片中缺少根域名返回顶级域名服务器,其实是,网页中会直接罗列出所有.com服务器查找的过程,我只截取了其中一个服务器。

image.png

总结DNS服务解析过程: 浏览器缓存 --> 系统缓存 --> hosts文件 --> 域名服务器

其实,hosts文件中定义的域名和IP的映射,会自动添加到系统缓存中。 image.png

DNS劫持

DNS劫持,即黑客攻破了DNS代理,控制了DNS服务器,这样就可以修改域名与IP的映射,引导用户去了钓鱼网站,用户没有及时发现的话,在页面的引导下泄露自己的账号密码,结果就有点危险了。