DNS解析过程

一.DNS介绍

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址。通过主机名,最终得到该主机名所对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。通常 Internet 主机域名的一般结构为:

主机名.三级域名.二级域名.顶级域名

域名结构如下:

 

这里需要注意一点的是:不是所有的数据都在根域保管,不然就跟系统中Hosts文件一样了。

 

二.域名解析的过程

1.第一步——检查浏览器缓存

当用户在浏览器中输入域名并且按下回车键后,浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长和太短都不好。如果缓存时间太长,一旦域名被解析到的IP有变化,会导致客户端缓存的域名无法解析到变化后的IP地址,以致该域名不能正常解析,这段时间内有可能会有一部分用户无法访问网站。如果时间设置太短,会导致用户每次访问网站都要重新解析一次域名。

 

2.第二步——检查系统缓存

如果用户的浏览器缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析过程。其实操作系统也会有一个域名解析的过程,也就是hosts文件,在Windows中通过“C:\Windows\System 32\drivers\etc\hosts”文件来设置,在Linux系统中则在/etc/hosts。我们可以将任何域名解析到任何能够访问的IP地址。正是因为有这种本地DNS解析的过程,所以黑客就有可能通过修改你的域名解析来把特定的域名解析到它指定的IP地址上,导致这些域名被劫持。

前面这两个步骤都是在本机完成的,到这里还没有涉及真正的域名解析服务器,如果在本机中仍然无法完成域名的解析,就会真正请求域名服务器来解析输入的这个域名了。

 

3.第三步——请求LDNS(本地域名服务器)

怎么知道域名服务器呢?在我们的网络配置中都会有“DNS服务器地址”这一项,这个地址就用于解决前面所说的如果两个过程无法解析时要怎么办,操作系统会把这个域名发送给这里设置的LDNS,也就是本地域名服务器。这个DNS通常都提供给你本地互联网接入的一个DNS解析服务,例如我是在学校接入互联网,那么我的DNS服务器肯定在我的学校,如果我是在一个小区接入互联网的,那么这个DNS就是提供给你接入互联网的应用提供商,即电信、联通等,那么这个DNS通常也会在你所在城市的某个角落,通常不会很远。在Windows下可以通过“ipconfig /all”查询这个地址。

 

在Linux下可以通过"cat /etc/resolv.conf"查询配置的DNS服务器地址。这个专门的域名解析服务器性能都会很好,它们一般都会缓存域名解析结果,当然缓存时间是受域名的失效时间控制的,一般缓存空间不是影响域名失效的主要因素。大约80%的域名解析都到这里就已经完成了,所以LDNS主要承担了域名的解析工作。

 

4.第四步——本地域名服务器请求根域名服务器

如果本地域名服务器(LDNS)仍然没有命中,本地域名服务器就直接到根域名服务器(Root Server)请求解析。

 

5.第五步——根域名服务器返回主域名服务器地址给本地域名服务器

根域名服务器(Root Server)返回给本地域名服务器(LDNS)一个所查询域的主域名服务器(gTLD Server)地址。gTLD是通用顶级域名服务器,如“.com、.cn、.org”等,全球只有十几台。

 

6.第六步——本地域名服务器请求主域名服务器

本地域名服务器(LDNS)再向上一步返回的主域名服务器(gTLD Server)发送解析请求。

 

7.第七步——主域名服务器返回域名服务器地址

接收请求的主域名服务器(gTLD Server)查找并返回此域名所对应的Name Server域名服务器的地址,这个Name Server通常就是你注册的域名服务器,例如你在某个域名服务提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成。

 

8.第八步——本地域名服务器请求域名服务器

本地域名服务器(LDNS)向Name Server发出解析请求,Name Server域名服务器会查询存储的域名和IP的映射关系表,正常情况下都根据域名得到目标IP记录,连同一个TTL值返回给Name Server域名服务器。

 

9.第九步——域名服务器将结果返回本地域名服务器

Name Server返回该域名对应的IP和TTL值给本地域名服务器(LDNS),本地域名服务器(LDNS)会缓存这个域名和IP的对应关系,缓存的时间由TTL值控制。

 

10.第十步——本地域名服务器将结果返回给用户

本地域名服务器(LDNS)把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束。

在实际的DNS解析过程中,可能还不止这10个步骤,如Name Server也可能有多级,或者有一个GTM来负载均衡控制,这都有可能会影响域名解析的过程。一个MAC可以对应多个IP,一个IP可以对应多个MAC,一个域名可以对应多个IP,一个IP可以对应多个域名。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值