![](https://img.haomeiwen.com/i7749898/7cf10d96184066a7.jpeg)
客户端首先访问最近的一台DNS服务器(客户端的TCP/IP设置中填写的DNS服务器地址),假设要查询www.lab.glasscom.com这台Web服务器的相关信息(图1.16①)。
由于最近的DNS服务器中没有存放www.lab.glasscom.com域名对应的信息,所以需要从顶层开始向下查找。
最近的DNS服务器中保存了根域DNS服务器的信息,因此它会将来自客户端的查询消息转发给根域DNS服务器(图1.16②)。
根域服务器中也没有这个域名,但根据域名结构可以判断这个域名属于com域,因此根域DNS服务器会返回它所管理的com域中的DNS服务器的IP地址。
接下来,最近的DNS服务器又会向com域的DNS服务器发送查询消息(图1.16③)。
com域中也没有www.lab.glasscom.com这个域名的信息,和刚才一样,com域服务器会返回它下面的glasscom.com域的DNS服务器的IP地址。
以此类推,只要重复前面的步骤,就可以顺藤摸瓜找到目标DNS服务器(图1.16⑤),只要向目标DNS服务器发送查询消息,就能得到www.lab.glasscom.com的IP地址了。
当然,DNS服务器有一个缓存功能,可以记住之前查询过的域名。如果要查询的域名和相关信息在缓存中,就可以直接返回响应,接下来的查询可以从缓存的位置开始向下进行。
这个缓存机制中有一点需要注意,那就是信息被缓存后,原本的注册信息可能会发生改变,这时缓存中的信息就有可能是不正确的。因此,DNS服务器中保存的信息都设置有一个有效期,当缓存中的信息超过有效期后,数据就会从缓存中删除。而且,在对查询进行响应时,DNS服务器也会告知客户端这一响应的结果是来自缓存中还是来自负责管理该域名的DNS服务器。
本文摘取自周自恒翻译的户根勤编写的《网络是怎样连接的》。
网友评论