- 很多时候开发的网站并没有购买域名,只有用IP地址进行访问?
- 这里我带大家了解一下DNS域名解析的整个过程了。
1.DNS域名解析全过程
浏览器缓存
- 浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。
- 这也就是经常网站版本迭代了需要清理一下缓存的一个小原因。
系统本地解析(host文件)
- 如果浏览器缓存中没有(专业点叫还没命中),浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过c盘里一个叫hosts的文件来设置,如果你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址。
- 但是这种操作系统级别的域名解析规程也被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows中将hosts文件设置成了readonly,防止被恶意篡改。
- windows host地址:C:\Windows\System32\drivers\etc
- linux host地址:/etc/hosts
本地域名服务器
- 如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。
本地域名服务器迭代查询 DNS根服务器、com/net/org等域的顶级域名服务器
- 向根域名服务器(其虽然没有每个域名的具体信息,但存储了负责每个域,如com、net、org等的解析的顶级域名服务器的地址)查找,根域名服务器返回com域的顶级域名服务器的地址。
- 本地域名服务器 向com域的顶级域名服务器发起请求,返回baidu.com权限域名服务器(权限域名服务器,用来保存该区中的所有主机域名到IP地址的映射)地址。
- 本地域名服务器 向baidu.com权限域名服务器发起请求,得到www.baidu.com的IP地址。
- 本地域名服务器 将得到的IP地址返回给操作系统,同时自己也将IP地址缓存起来。
- 操作系统将 IP 地址返回给浏览器,同时自己也将IP地址缓存起来。
- 至此,浏览器已经得到了域名对应的IP地址。
递归查询和迭代查询的区别
- 递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
- 迭代查询DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS服务器提交请求,依次循环直到返回查询的结果。