第一个图解释了DNS是什么
全称Domain Name System,即域名解析系统。DNS帮助用户在互联网上寻找路径,你告诉我主机名称,我告诉你对应的IP地址。
第2个图解释了域名的结构
注意:顶级域名后面有个 . 省略了,这个 . 代表根域名服务器
第3个图解释了域名服务器的层次结构
注意:abc.org和y.abc.org都是权限域名服务器,只是不同分区
第四个图解释了DNS的查询方式
下面举一个例子演示整个查询过程:
假定域名为m.xyz.com的主机想知道另一个主机y.abc.com的IP地址。例如,主机m.xyz.com打算发送邮件给y.abc.com。这时就必须知道主机y.abc.com的IP地址。下面是迭代查询的几个查询步骤:
-
浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。
-
如果浏览器缓存中没有(专业点叫还没命中),浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过c盘里一个叫hosts的文件来设置,如果你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址。
3、如果前两步没有查询到,主机m.abc.com先向本地服务器dns.xyz.com进行递归查询。
4、本地服务器采用迭代查询。它先向一个根域名服务器查询。
5、根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。
6、本地域名服务器向顶级域名服务器dns.com进行查询。
7、顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。
8、本地域名服务器向权限域名服务器dns.abc.com进行查询。
9、权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。
10、本地域名服务器最后把查询结果告诉m.xyz.com。
整个查询过程共用到了8个UDP报文。
为了提高DNS查询效率,并减轻服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
查询命令:
nslookup type=A 域名