1、什么是DNS?
DNS(Domain Name System)是域名系统的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,用于 TCP/IP 网络。
DNS的作用:
通常我们有两种方式识别主机:通过主机名或者 IP 地址。人们喜欢便于记忆的主机名表示,而路由器则喜欢定长的、有着层次结构的 IP 地址。为了满足这些不同的偏好,我们就需要一种能够进行主机名到IP 地址转换的目录服务,域名系统作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
2、递归查询和迭代查询
递归查询:是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。( 根服务器不会开递归查询。会开迭代查询)
迭代查询:是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
3、解析过程
1.用户在web浏览器输入“www.example.com”,浏览器会先检查自身缓存中有没有解析过这个域名对应的ip地址,如果有,解析结束,如果浏览器中没有缓存,那就检查操作系统hosts文件,称为本地解析(windows在C:\Windows\System32\drivers\etc\hosts,linux在/etc/hosts文件),如果命中,域名解析结束,如果没有命中,浏览器会向本地的DNS服务器(DNS Resolver )查询,如果命中域名解析就此结束。
2.如果本地DNS服务器没有命中域名解析,本地DNS服务器采用递归查询的方法,向根域名服务器(Root Server )进行查询。
3.根域名服务器开启迭代查询告诉本地域名服务器,下一步应该查询顶级域名服务器.com TLD的IP地址
4.本地域名向顶级域命服务器.com TLD进行查询
5. .com TLD服务器告诉本地域名服务器,下一步查询example.com权威域名服务器的ip地址
6.本地域名服务区向example.com权威域名服务器发送查询
7.example.com 权威域名服务器告诉本地域名服务器查询主机IP的地址
8.本地域名服务器最后把查询的ip地址响应给web浏览器
9.浏览器向IP地址发出HTTP请求
10.该IP处的web服务器返回要在浏览器中呈现的网页