学习DNS之入门篇
转载 :https://blog.csdn.net/u013748736/article/details/52356959
DNS是什么?有什么作用?
- DNS是英语“Domain Name System”的缩写,直译过来就是“域名系统”。我们日常生活中访问网站基本上是通过网站名访问,几乎没有人会用ip地址去访问网站。然而ip地址是互联网服务的基础,我们敲入的网站名最终也会被“翻译”成ip地址,然后根据这个ip地址找到对应的服务器,接着得到服务器的响应。
域名的结构是怎么样的?
- 域名是按照“树形结构”组织的,类似于我们计算机硬盘上的目录结构。不过域名是用小数点作为分隔符,而且域名的高低等级是从右到左的,即上级在右,下级在左。这里的 .com 就被称为顶级域名(Top-Level Domain,简称 TLD),跟 .com 类似的那些 .net .org .gov 也是顶级域名。还有那些以国家/地区的代码命名的(比如 .cn .tw .hk .jp 等等)也是顶级域名。
域名解析的过程是怎么样的?
- 我们的电脑里都有网卡,上面除了有ip地址、掩码,还有下面的DNS服务器/域名服务器。域名服务器则提供域名查询的功能,即域名服务器上存储着域名对应的ip地址。
- 当我们在浏览器输入http://write.blog.csdn.net敲回车,这是电脑会进行以下动作:
- 首先根据网址提取出域名,即“write.blog.csdn.net”
- 如果你在系统中配置了Host文件,那么电脑会先查询hosts文件,看“write.blog.csdn.net”是否在Hosts文件中已经有了对应的记录,如果有就直接去该记录中的ip地址,域名解析的过程就结束了。
- 如果Hosts文件中没有这个域名的记录,此时电脑会根据你设置的域名服务器去解析域名。如果你的电脑没有配置域名服务器,那么这时就会出现网站的域名无法解析错误。过程也结束了。
- 如果你设置了域名服务器,那么电脑会向这个域名服务器发送一个域名查询的请求,如果这台域名服务器始终没有回应,则也会出现浏览器报错。
- 如果域名服务器回应了,那么电脑可以根据域名服务器返回的应答信息得到域名的ip地址。然后,浏览器就会想这个ip地址对应的web服务器发送http请求。
域名的缓存
- 首先我们得知道DNS服务器有两种方式来解析域名,一是递归查询,二是迭代查询。
- 当客户端发送过来的一个DNS查询请求时,本地DNS服务器S这时就会去查询自身缓存中有没有对应的域名记录,如果有,则直接应答;如果没有,这时DNS服务器S就会查询或联系其他DNS服务器以“完全”解析该域名,最后应答信息返回给DNS服务器S,S再将结果返回给客户端。这个过程就叫递归查询。由此可见递归查询是以本地DNS服务器为中心去查询的。
- 下面就说一下以DNS客户端C为中心去查询的迭代查询。迭代查询的过程如下:
- 当客户端C发送过来的DNS查询请求,本地DNS服务器也还是会去缓存中查询,看是否有对应的域名记录,如果没有,这时跟上面说的递归查询就有很大区别了:本地DNS服务器会返回一个应答信息给客户端C,并在里面附带一些“线索”:如根域名服务器的地址。
- 接着客户端C就会根据根域名服务器的地址,向该地址发送查询请求,根域名服务器接到请求后会在它本身的数据库中根据顶级域名来查询对应的顶级域名服务器的地址,然后再以一条DNS应答报文返回给DNS客户端。
- 紧接着,客户端根据根域名服务器返回的信息中包含的顶级域名服务器的地址,再向顶级域名服务器发送查询请求,顶级域名服务器首先查询自己的缓存,看里面是否已经有了对应的域名记录,如果没有,则根据顶级名称在它自身的数据库中查询对应的二级域名服务器的地址,最后返回给客户端。
- 如此反复,向三级、四级域名服务器查询也是按照这样的过程,直到返回最终的IP地址。
缓存的生命周期
既然这里说到了缓存,那就有生命周期。互联网上的域名信息是有可能发生变化的。比如某个域名被注销了,或者某个域名对应的IP地址修改了。所以域名服务器上的缓存中的域名记录都是有生命周期的,可能是几分钟,也可能几小时。如果某条记录过期了,就会被删除,然后DNS服务器就会在下次查询时重新缓存对应的域名记录。
抱怨没有用,只能靠自己