DNS域名解析
- DNS (Domain Name System)简单来讲是将域名
www.baidu.com
解析为IP地址14.215.177.38
的服务。 - 当我们发送一次网络请求,比如 www.baidu.com,浏览器首先需要通过DNS查询,获得域名对应的IP,才能将请求发送到www.baidu.com的服务器。
DNS查询流程
- 优先查询本地DNS缓存
- 其次查找最近的DNS服务器,一般为你的运营商(ISP)服务器
- 当ISP DNS服务器也查询不到时,将由其发起DNS递归搜索。通常,DNS服务器将在缓存中具有.com名称服务器的名称,因此不需要命中根名称服务器。
使用 dig domain a + trace
命令,查看详细的DNS查询过程。
test@ubuntu:~$ dig www.baidu.com a +trace
; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.baidu.com a +trace
;; global options: +cmd
. 5 IN NS e.root-servers.net.
. 5 IN NS h.root-servers.net.
. 5 IN NS i.root-servers.net.
. 5 IN NS d.root-servers.net.
. 5 IN NS a.root-servers.net.
. 5 IN NS m.root-servers.net.
. 5 IN NS k.root-servers.net.
. 5 IN NS b.root-servers.net.
. 5 IN NS g.root-servers.net.
. 5 IN NS l.root-servers.net.
. 5 IN NS c.root-servers.net.
. 5 IN NS f.root-servers.net.
. 5 IN NS j.root-servers.net.
;; Received 239 bytes from 127.0.1.1#53(127.0.1.1) in 16 ms
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com. 86400 IN RRSIG DS 8 1 86400 20190123170000 20190110160000 16749 . IdZfBu4jr35ks1jNLlCthD6F+kFRsj/J8ON+jr0XtlykK/Rm0WZL1k01 91Lxjkxa74mVD5daaeo94+WQsVm14HoqgZ6S/AOfPwPzRwgQZ2eDXW/e iRnqkJmqvJfkBCDmz5yf/o5eqHPZLjt3pm/XrITtOanYVLQI4G6gnkvE QuSV0WD2MjbwI7Y4pQJVyf3evr5WNDHc5iE3E+z3aW1y18MsrEl+f5xv LmHb79AOM+CJvKA263EbzNEp/NmiZPlW4WduOXUVh0KIAJwMvIZoDLrn QdK1THHNoeskFuWAEi5zmtXmjJ3oie29xp+zkK3zGqVRWpD0+6AjSjFa kiaziw==
;; Received 1173 bytes from 198.97.190.53#53(h.root-servers.net) in 225 ms
baidu.com. 172800 IN NS dns.baidu.com.
baidu.com. 172800 IN NS ns2.baidu.com.
baidu.com. 172800 IN NS ns3.baidu.com.
baidu.com. 172800 IN NS ns4.baidu.com.
baidu.com. 172800 IN NS ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20190115054344 20190108043344 37490 com. jK6jpwTMUEgKeuQjhYhK2I1v0ioYeX0pkKhNrbrB2sNfjrGhMc7v7g5s KEa5lkxs+TUtXnVt0oUiDA2cLOIQ7pufMKr2ujrlkrGlz9qWw6+IDnUd O1QC5nsHa/vshT35e5lVPoKxiRREEG+OFy7ECGNshnhjH95VmW0pJUSA jlE=
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN NSEC3 1 1 0 - HPVVN3Q5E5GOQP2QFE2LEM4SVB9C0SJ6 NS DS RRSIG
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN RRSIG NSEC3 8 2 86400 20190117060915 20190110045915 37490 com. C4/8BrgGI3NDrcUjWijcBiHyqQqQPSCRwIR7XIflVj3IDgIsLrgryKsc +JDw/8YzFYTce/X8RF+U8wH9B2GKczWT/DWujen6F8Frqvow8LXaXdUt MUipk0JwMShaKfdBVUBtz9RFinUVWcytc9QZX+Ajs7Ayl+G7VRZEE9fl +RA=
;; Received 697 bytes from 192.12.94.30#53(e.gtld-servers.net) in 126 ms
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
a.shifen.com. 1200 IN NS ns2.a.shifen.com.
a.shifen.com. 1200 IN NS ns5.a.shifen.com.
a.shifen.com. 1200 IN NS ns3.a.shifen.com.
a.shifen.com. 1200 IN NS ns1.a.shifen.com.
a.shifen.com. 1200 IN NS ns4.a.shifen.com.
;; Received 239 bytes from 14.215.178.80#53(ns4.baidu.com) in 10 ms
参考文献
- https://zhuanlan.zhihu.com/p/28305778
- http://www.ruanyifeng.com/blog/2016/06/dns.html
- http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/comment-page-4/#comments