DNS全程是Domain Name System ,是用来将域名转化为Ip地址的一套系统,当一个主机需要将域名转化为IP,该应用进程将调用一个解析进程,这个解析进程将会成为第一个DNS用户,把待解析的域名放在DNS请求报文中,并且以UDP用户数据方式发送给本地域名解析服务器(使用UDP是为了减少性能损耗),本地域名服务器在查找域名之后,把对应的IP地址放在回答报文中返回,应用进程获得目的主机的IP之后即可进行通信,如果本地域名服务器不能提供相应的域名解析,则此域名服务器将会成为DNS另一个客户,并向其他域名服务器发出查询请求,这种过程将会一直持续直到找到能够回答该请求的域名服务器为止。
什么是DNS
DNS全程是Domain Name System ,是用来将域名转化为Ip地址的一套系统,当一个主机需要将域名转化为IP,该应用进程将调用一个解析进程,这个解析进程将会成为第一个DNS用户,把待解析的域名放在DNS请求报文中,并且以UDP用户数据方式发送给本地域名解析服务器(使用UDP是为了减少性能损耗),本地域名服务器在查找域名之后,把对应的IP地址放在回答报文中返回,应用进程获得目的主机的IP之后即可进行通信,如果本地域名服务器不能提供相应的域名解析,则此域名服务器将会成为DNS另一个客户,并向其他域名服务器发出查询请求,这种过程将会一直持续直到找到能够回答该请求的域名服务器为止。
DNS查询类型
DNS查询有两种查询形式,一种是左边采用迭代方式进行查询,另一种四使用递归的方式进行查询,
所有的域名后面都带着顶级域名,但是一般都省略掉了,域名形式为
.
实际通常采用的方式是:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。
DNS查询的具体过程
当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在,并且chrome缓存的时间只有一分钟,查看chrome的缓存可打开:chrome://net-internals/#dns )
当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP;
当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查,以上三步均为客服端的DNS缓存;(操作系统的缓存:window系统是一天,mac系统严格根据DNS协议中的TTL)
当在用户客服端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找;(这个是根据自己电脑设置的本地DNS服务器地址进行请求)
当以上均未完成,则进入根服务器进行查询,那么这就说明ISP一定存在所有根域名服务器的IP。全球仅有13台根域名服务器,1个主根域名服务器,其余12为辅根域名服务器。根域名收到请求后会查看区域文件记录,若无则将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器;
顶级域名服务器收到请求后查看区域文件记录,若无则将其管辖范围内主域名服务器的IP地址告诉本地DNS服务器;
主域名服务器接受到请求后查询自己的缓存,如果没有则进入下一级域名服务器进行查找,并重复该步骤直至找到正确纪录;
本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接。