下面是一个关于DNS的实验:百度DNS解析过程,相信热爱学习的你一定很感兴趣,下面跟着小编一起来看看!
if现在我用一台电脑,通过ISP接入互联网,那么ISP就会分配给我一个DNS服务器(非权威服务器)。now,我的computer向这台ISPDNS发起请求查询。
首先,ISPDNS会检查自己的缓存中有没有这个地址,有的话直接返回给我的PC,没有的话,ISPDNS会把请求发送给根服务器(13台)。
根服务器发现是结尾的即是这个顶级域名下的,就告诉请求者负责解析的DNS服务器。(目前百度有4台的顶级域名服务器)。
ISPDNS再次向这个域的权威服务器发起请求,收到后,查一下www这台主机,然后把它的IP返回给IPSDNS,然后IPSDNS把地址返回给我的`PC,并且存入告诉cache中,以便再次访问。
//当然这是完美的解析不走,不过百度的DNS没这么简单。
[root@zichen star]# nslookup
Server:
Address: #53
Non-authoritative answer:
canonical name = .
Name:
Address:
Name:
Address:
百度有个cname=.的别名,这所怎么一个过程呢?用dig工具跟踪一下。
[root@zichen star]# dig +trace
; <<>> DiG 16 <<>> +trace
;; global options: +cmd
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
;; Received 228 bytes from #53() in 1841 ms--------(1)
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
;; Received 503 bytes from #53() in 1884 ms-------------------------(2)
. 172800 IN NS .
. 172800 IN NS .
. 172800 IN NS .
. 172800 IN NS .
;; Received 167 bytes from #53() in 305 ms-------------------(3)
. 1200 IN CNAME .
. 86444 IN NS .
. 86444 IN NS .
. 86444 IN NS .
. 86444 IN NS .
;; Received 194 bytes from #53() in 68 ms-------------(4)
DIG工具会在本地计算机做迭代,然后记录查询的过程。
第一步是我这台PC的ISPDNS获取到13个根服务器的13个IP和主机名【b-j】。
第二步是向其中的一台根域服务器发送的请求,他返回来com.顶级域的服务器的IP(未显示)和名称。
第三步是向com.域的一台服务器请求,他返回来域发服务器IP(未显示)和名称.
第四步,向百度的顶级域名服务器.请求,他发现这个www有别名叫。
按照一般逻辑,当dns请求到别名时,查询都会终止,而所重新发起查询别名的请求,所以此处应该返回的是.但是为什么返回的是这个NS呢?
此处我们可以用:
[root@zichen star]# dig +trace
. 172800 IN NS .
. 172800 IN NS .
. 172800 IN NS .
. 172800 IN NS .
;; Received 170 bytes from #53() in 325 ms
发现的顶级域名服务器和的域名服务器是同一台!
当 我拿到的别名的时候,本来要重新到com域查找的NS,又因为,两个域 在同一台NS上,所以直接向本机发起了域发现请求的是属于这个域的,于是 就把的这个NS和IP返回,让我到这个域的域名服务器上查询。
于是
. 7200 IN A
. 86400 IN NS .
. 86400 IN NS .
. 86400 IN NS .
. 86400 IN NS .
;; Received 186 bytes from #53() in 61 ms
拿到一条A记录,最终也就是的IP地址了。