DNS详解
DNS解析流程详解
1.客户机上的用户在应用程序(如web浏览器)中输入网址。应用程序首先检查其浏览器缓存,如果缓存中有,则这个域名解析过程就结束。如果浏览器缓存中没有,浏览器会查找本地的hosts文件是否有这个映射关系,如果有,就先调用这个IP地址映射,完成域名解析。如果没有,应用程序则调用客户机上的解析器,解析器先向其内部的缓存进行查询,如果没有,则创建一个包含服务器名称的DNS递归查询消息,并将其传输到在计算机的TCP/IP配置中确定的DNS服务器(命令行中输入“ipconfig -all”回车,可以查看到,见图2),如图1中的本地DNS服务器所示。这个专门的递归解析器(本地DNS服务器)性能都会很好,它们一般都会缓存域名解析结果,当然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了,所以本地DNS服务器主要承担了域名的解析工作。
客户端通常是一个存根解析器 - 内置于操作系统的简单解析器
缓存:用于存储解析后的IP地址。当客户端申请一个需要解析为IP地址的名称时,在向其DNS服务器发送请求之前,它首先检查其本地缓存。
hosts文件:这种操作系统级别的域名解析规程也被很多黑客利用,通过修改hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows中将hosts文件设置成了readonly,防止被恶意篡改。
本地DNS服务器:一般默认设置情况下DNS为DHCP分配到的运营商的服务器地址。如果电脑和运营商之间还加了无线或者有线路由,那极有可能路由器本身还内置了一个DNS转发器,它的作用是将发往他所有的DNS请求转发到上层DNS