比方说,我们有一个名为www.foo.com的子域名,它的CNAMElogging指向foo.bar.cc。 Foo.bar.cc又有一个Alogging指向IP地址1.2.3.4。
现在,如果我做了一个www.foo.com的DNS查询,我会得到一个这样的答案:
www.foo.com. IN CNAME foo.bar.cc. foo.bar.cc. IN A 1.2.3.4
我的问题是,在什么阶段foo.bar.cc解决? 在响应被发送回客户端之前,它是由recursionDNS服务器完成的吗? 还是客户端发出第二个请求到DNS服务器,这次是foo.bar.cc? 还是取决于DNS服务器是否已经有foo.bar.cc的caching条目?
我问,因为一个特定的recursionDNS服务器只返回第一行,即它不parsingCNAME。 但是,也许20秒后,对同一主机的后续请求将包括这两行。
2条logging在同一个请求中一起返回。 你可以通过下面的命令find
dig +trace www.foo.com
例如,我的域名photoblog.com有一个www的cname,所以从photoblog的名字服务器给我的最后两个请求看起来像
photoblog.com. 172800 IN NS ns1.photoblog.com. photoblog.com. 172800 IN NS ns2.photoblog.com. ;; Received 103 bytes from 192.43.172.30#53(i.gtld-servers.net) in 196 ms www.photoblog.com. 600 IN CNAME photoblog.com. photoblog.com. 600 IN A 74.52.128.18 photoblog.com. 60 IN NS ns2.photoblog.com. photoblog.com. 60 IN NS ns1.photoblog.com. ;; Received 133 bytes from 74.52.128.18#53(ns2.photoblog.com) in 59 ms
正如你可以看到请求询问ns1 / ns2什么是www.photoblog.com的IP,它很好地返回它是一个CNAME photoblog.com,这里是该Alogging的IP。