我们都知道在浏览器输入www.baidu.com的时候会打开百度的页面,但是实际情况下我们都是使用ip地址进行通信的,那为什么输入www.baidu.com等价于百度的ip地址呢?
一、DNS
DNS全称叫做Domain Name Server,域名服务器。它的作用就是将域名与ip进行映射,因为我们被分配到的ip一般都是没有规律,并且并不方便人类记忆,所以使用dns就可以简化ip,便于人类记忆。假设百度的ip地址是183.240.98.198,这显然不能马上记下来,但如果记baidu.com,你相信一下子就记下来了。
二、如何知道DNS对应的ip
文章一开始就说过了,我们真实的网络通信都是利用ip进行的,最终访问www.baidu.com还是用ip进行访问的。那我们怎么知道www.baidu.com对应的ip是多少呢?这就涉及到DNS域名查询了。
[注意:以下内容为了方便理解,省去部分DNS查询的过程,如须进一步了解,请自行学习计算机网络——DNS]
1、查询host记录和本机DNS缓存
什么是host?host就是一个人为规定的指定域名和ip的设置关系。例如我们知道localhost域名是等价于回环地址127.0.0.1的,其实是因为这个域名默认被写到了host里面,如果我们只要修改host的默认对应规则,就可以让其访问不同的地址。
当你的电脑输入www.baidu.com的时候,计算机先会去本地的DNS缓存查询是否有对应,再看看host是否存在对应项,如果没有的话就先查询dns缓存是否有对应项;dns缓存也没有的话就会去请求dns服务器获取,默认不手动配置dns服务器的话dns服务器是指向网关进行查询,查询端口是#53,使用的是UDP查询
2、查询网关dns记录
与计算机查询域名解析一样,网关在收到dns请求的时候会先查询网关的host,如果没有记录就再取查询自身的dns缓存,如果没有的话才会再往上查询dns记录,默认如果不设置dns服务器地址的话会向运营商dns服务器进行一层一层的递归查询,最后获得了域名对应的ip记录,并且缓存到本地dns存储,再递归返回给查询主机。
3、使用ip访问服务器
计算机获得域名的ip地址后就可以通过ip来访问对应z服务了
三、查询dns记录命令
使用nslookup+域名 可以查询对应域名的解析记录
四、DNS污染
有时候你可能会遇见前几分钟华科仪访问,后几分钟又不能访问的现象,这种问题叫做DNS污染,造成这种问题的原因有两个:
有时候重启电脑或者网络就可以解决
1、DNS缓存未更新
可能是域名对应的ip地址发生了变更,但是本地的DNS缓存还未更新,所以导致了本地的DNS查询返回了一个失效的地址,因此无法访问。
解决方法:很简单,使用命令清除本地DNS缓存即可,浏览器的话就按Ctrl+Shift+Del键清除缓存
2、域名查询错误
有可能是选用的DNS查询地址不想你访问对应域名,于是就返回了一个错误的地址,或者的做了DNS域名屏蔽,导致无法返回对应的地址。
解决方法:换用别的DNS服务器即可。