1:客户端访问www.lihuia.com
2:本机DNS缓存假如有对应关系,返回IP地址
3:系统如果首选配置了的name server,或者是ISP分配的DNS服务器能够解析,返回IP地址
3:如果以上仍没有其对应关系,从系统配置文件里读取十几个根域名服务器的name server,向一台发起请求
4:根域名服务器收到了请求,知道是顶级域名.com,就返回.com的name server,接着继续向其中一台发起请求
5:.com域名服务器收到了请求,知道是lihuia.com域,就返回lihuia.com的name server,接着继续向其中一台发起请求
6:lihuia.com域名服务器收到了请求,查了下www这台主机,然后就将IP地址返还给你
递归查询和迭代查询
上面的过程其实是DNS迭代查询,是DNS服务器之间的不停深入的过程,自己解析不全,将下一位的IP返回,让你亲自联系下一位来进行查询;递归查询是客户端和DNS服务器之间的关系,当客户端发出的请求,DNS服务器自己解析不了,会相当于作为客户端向其他的DNS服务器发出请求,解析出来的IP再返还给客户端,这就是递归查询
查询根服务器可以通过dig命令:
MacBook:~ lihui$ dig ; <<>> DiG 9.8.3-P1 <<>> ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61549 ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 30926 IN NS c.root-servers.net. . 30926 IN NS d.root-servers.net. . 30926 IN NS e.root-servers.net. . 30926 IN NS f.root-servers.net. . 30926 IN NS g.root-servers.net. . 30926 IN NS h.root-servers.net. . 30926 IN NS i.root-servers.net. . 30926 IN NS j.root-servers.net. . 30926 IN NS k.root-servers.net. . 30926 IN NS l.root-servers.net. . 30926 IN NS m.root-servers.net. . 30926 IN NS a.root-servers.net. . 30926 IN NS b.root-servers.net. ;; ADDITIONAL SECTION: a.root-servers.net. 3549809 IN A 198.41.0.4 a.root-servers.net. 3549809 IN AAAA 2001:503:ba3e::2:30 b.root-servers.net. 3550372 IN A 192.228.79.201 b.root-servers.net. 3549809 IN AAAA 2001:500:84::b c.root-servers.net. 3551640 IN A 192.33.4.12 c.root-servers.net. 3550041 IN AAAA 2001:500:2::c d.root-servers.net. 3550188 IN A 199.7.91.13 d.root-servers.net. 3550041 IN AAAA 2001:500:2d::d e.root-servers.net. 3550613 IN A 192.203.230.10 f.root-servers.net. 3554987 IN A 192.5.5.241 f.root-servers.net. 3550041 IN AAAA 2001:500:2f::f g.root-servers.net. 3551159 IN A 192.112.36.4 h.root-servers.net. 3551076 IN A 128.63.2.53 ;; Query time: 11 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Thu Jun 25 01:09:05 2015 ;; MSG SIZE rcvd: 496
缓存
本机的缓存包括WEB客户端和系统,比如浏览器和/etc/hosts;最终成功解析后,这个对应关系也会缓存到本地