DNS(英文全称:Domain Name System,域名系统)是互联网的一项服务。它是将域名和ip地址相互映射的一个分布式数据库。数据库
网络通信大部分是基于TCP/IP的,而TCP/IP是基于ip地址的,因特网上的节点均可以用ip地址唯一标识,而且能够经过ip地址被访问。但即便是将32位的二进制ip地址写成4个0~255的十位数形式,也依然太长、太难记。所以,人们发明了域名(Domain Name),域名可将一个ip地址关联到一组有意义的字符上去。浏览器
用户访问一个网站的时候,既能够输入该网站的ip地址,也能够输入其域名,对访问而言,二者是等价的。例如:微软公司的Web服务器的ip地址是207.46.230.229,其对应的域名是www.microsoft.com,无论用户在浏览器中输入的是207.46.230.229仍是www.microsoft.com,均可以访问其Web网站。缓存
咱们访问网站时,在浏览器地址栏中输入域名,就能看到所须要的页面,这是由于有一个叫“DNS服务器”的计算机自动把咱们的域名“翻译”成了相应的ip地址,而后调出ip地址所对应的网页。服务器
域名系统在全世界保持惟一性,也就是全球通用一份。网络
域名服务主要是基于UDP实现的,服务器的端口号为53。分布式
域名服务器就是装有域名系统的主机。性能
分类 | 做用 |
---|---|
根域名服务器 | 最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助 |
顶级域名服务器 | 负责管理在该顶级域名服务器下注册的二级域名 |
权限域名服务器 | 负责一个区的域名解析工做 |
本地域名服务器 | 当一个主机发出DNS查询请求时,这个查询请求首先发给本地域名服务器 |
注:一个域名服务器所负责的范围,或者说有管理权限的范围,就称为区。网站
当一个用户在地址栏输入www.baidu.com时,DNS解析过程大体以下:spa
1.浏览器先检查自身缓存中有没有被解析过的这个域名所对应的ip地址,若是有(也就是命中),解析过程结束。操作系统
浏览器对缓存域名的大小和缓存时间也是有限制的,一般状况下为几分钟到几小时不等,域名缓存时间能够经过TTL属性设置,若是缓存时间过长,一旦域名所映射的ip地址有变化,会致使客户没法及时解析到变化后的ip地址,致使该域名不能正常解析;反之,若是缓存时间太短,会致使每次用户访问网站时都要从新解析一次域名,因此须要设置合理的缓存时间。
2.若是浏览器缓存中没有,浏览器会检查操做系统缓存(也就是hosts文件)中有没有对应的解析映射。
在Windows中可找到C:\Windows\System32\drivers\etc\hosts文件来设置,若是你在这里指定了一个域名对应的ip地址,那浏览器会使用这个域名所映射的ip地址。
可是这种操做系统级别的域名解析规程也被不少黑客利用,经过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,形成所谓的域名劫持。因此如今的hosts文件都被设置为只读,防止这个文件被轻易修改。
3.若是至此尚未命中域名,本机才会真正的请求本地域名服务器(LDNS)来解析这个域名。
本地域名服务器通常由网络供应商所提供,这台服务器通常在你的城市的某个角落,距离你不会很远,而且这台服务器的性能都很好,通常都会缓存域名解析结果,大约80%的域名解析到这里就完成了。
本地域名服务器(LDNS)会检查缓存中有没有该域名所对应的ip地址,若是有会返回给本机,解析结束。
4.若是本地域名服务器(LDNS)仍然没有命中, 本地域名服务器(LDNS)会请求根域名服务器来解析。
5.根域名服务器返回给本地域名服务器(LDNS)一个该域名应该查询的顶尖域名服务器的地址。
6.此时本地域名服务器(LDNS)再根据上一步返回的顶尖域名服务器的地址,请求顶尖域名服务器来解析。
7.接受请求的顶尖域名服务器查找并返回这个域名对应的权限域名服务器的地址,这个权限域名服务器就是要请求的网站所注册的域名服务器。
8.而后本地域名服务器(LDNS)再根据上一步返回的权限域名服务器的地址,请求权限域名服务器来解析。
权限域名服务器根据映射关系表找到该域名所对应的目标ip地址,返回给本地域名服务器(LDNS)。
9.本地域名服务器(LDNS)缓存该域名和对应的ip地址,而后根据缓存来解析该域名。
10.本地域名服务器(LDNS)把解析的结果返回给用户,用户根据TTL值缓存到本地浏览器缓存中,域名解析过程至此结束。