DNS 分为 Client 和 Server,Client 扮演发问的角色,也就是问 Server 一个 DomainName,而 Server 必须要回答此 DomainName 的真正 IP 地址,DNS 是怎么来作名称解析的?
DNS 的工作原理
DNS 分为 Client 和 Server,Client 扮演发问的角色,也就是问 Server 一个 DomainName,而 Server 必须要回答此 DomainName 的真正 IP 地址。而当地的 DNS 先会查自己的资料库。如果自己的资料库没有,则会往该 DNS 上所设的的 DNS 询问,依此得到答案之 后,将收到的答案存起来,并回答客户。
DNS 服务器会根据不同的授权区 (Zone),记录所属该网域下的各名称资料,这个资料包括网域下的次网域名称及主机名称。
在每一个名称服务器中都有一个快取缓存区 (Cache),这个快取缓存区的主要目的是将该名称服务器所查询出来的名称及相对的 IP 地址记录快取缓存区 中,这样当下一次还有另外一个客户端到次服务器上去查询相同的名称时,服务器就不用在到别台主机上去寻找,而直接可以从缓存区中找到该笔名称记录资料,传 回给客户端,加速客户端对名称查询的速度。例如:
当 DNS 客户端向指定的 DNS 服务器查询网际网路上的某一台主机名称 DNS 服务器会在该资料库中找寻用户所指定的名称如果没有,该服务器会先在自己的 快取缓存区中查询有无该笔纪录,如果找到该笔名称记录后,会从 DNS 服务器直接将所对应到的 IP 地址传回给客户端,如果名称服务器在资料记录查不到且快取 缓存区中也没有时,服务器首先会才会向别的名称服务器查询所要的名称。例如:
DNS 客户端向指定的 DNS 服务器查询网际网路上某台主机名称,当 DNS 服务器在该资料记录找不到用户所指定的名称时,会转向该服务器的快取缓存区找 寻是否有该资料,当快取缓存区也找不到时,会向最接近的名称服务器去要求帮忙找寻该名称的 IP 地址,在另一台服务器上也有相同的动作的查询,当查询到后会 回复原本要求查询的服务器,该 DNS 服务器在接收到另一台 DNS 服务器查询的结果后,先将所查询到的主机名称及对应 IP 地址记录到快取缓存区中,最后在将 所查询到的结果回复给客户端。
范例
我们举例说明,假设我们要查询网际网路上的一个名称为 www.test.com.cn,从此名称我们知道此部主机在中国 CN,而且要找的组织名称 test.com.cn 此网域下的 www 主机,以下为名称解析过程的每一步骤。
《 Step1 》在 DNS 的客户端 (Reslover) 键入查询主机的指令,如:
c:\pingwww.test.com.cn
pingingwww.test.com.cn 【 192.72.80.36 】 with32bytesofdata
replyfrom192.72.80.36bytestime<10msttl253 《 Step2 》而被指定的 DNS 服务器先行查询是否属于该网域下的主机名称,如果查出改主机名称并不属于该网域范围,之后会再查询快取缓存区的纪录资料,查是否有此机名称。 《 Step3 》查询后发现缓存区中没有此纪录资料,会取得一台根网域的其中一台服务器,发出说要找 www.test.com.cn 的 Request 。 《 Step4 》在根网域中,向 RootNameServer 询问,RootNameServer 记录了各 TopDomain 分别是由哪些 DNSServer 负责,所以他会响应最接近的 NameServer 为控制 CN 网域的 DNS 伺服主机。 《 Step5 》 RootNameServer 已告诉 LocalDNSServer 哪部 NameServer 负责.cn 这个 Domain,然后 LocalDNS 再向负责发出找寻 www.test.com.cn 的名称 Request 。 《 Step6 》在.cn 这个网域中,被指定的 DNS 服务器在本机上没有找到此名称的的纪录,所以会响应原本发出查询要求的 DNS 服务器说最近的服务器在哪里? 他会回应最近的主机为控制 com.cn 网域的 DNS 伺服主机。 《 Step7 》原本被查询的 DNS 服务器主机,收到继续查询的 IP 位置后,会再向 com.cn 的网域的 DNSServer 发出寻找 www.test.com.cn 名称搜寻的要求。 《 Step8 》 com.cn 的网域中,被指定的 DNSServer 在本机上没有找到此名称的记录,所以会回复查询要求的 DNSServer 告诉他最接近的服务器在哪里? 他就回应最接近为控制 test.com.cn 的网域的 DNS 主机。 《 Step9 》原本被查询的 DNSServer,在接收到应继续查询的位置,在向 test.com.cn 网域的 DNSServer 发出寻找 www.test.com.cn 的要求,最后会在 test.com.cn 的网域的 DNSServer 找到 www.test.com.cn 此主机的 IP 。 《 Step10 》所以原本发出查询要求的 DNS 服务器,再接收到查询结果的 IP 位置后,响应回给原查询名称的 DNS 客户端。 两种真正 DNS 的查询模式 有两种询问原理,分为 Recursive 和 Interactive 两种。前者是由 DNS 代理去问,问的方法是用 Interactive 方式,后者是由 本机直接做 Interactive 式的询问。由上例可以看出,我们一般查询名称的过程中,实际上这两种查询模式都是交互存在着的。 递归式 (Recursive):DNS 客户端向 DNSServer 的查询模式,这种方式是将要查询的封包送出去问,就等待正确名称的正确响应,这种方式只处理响应回来的封包是否是正确响应或是说是找不到该名称的错误讯息。 交谈式 (Interactive):DNSServer 间的查询模式,由 Client 端或是 DNSServer 上所发出去问,这种方式送封包出去问, 所响应回来的资料不一定是最后正确的名称位置,但也不是如上所说的响应回来是错误讯息,他响应回来告诉你最接近的 IP 位置,然后再到此最接近的 IP 上去寻 找所要解析的名称,反复动作直到找到正确位置。