百度DNS解析过程

在Linux环境下使用dig命令表述这个过程。

简单介绍下dig

n3verl4nd@ubuntu:~$ dig www.baidu.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16443
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 6

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; MBZ: 0005 , udp: 4096
;; QUESTION SECTION:
;www.baidu.com.         IN  A

;; ANSWER SECTION:
www.baidu.com.      5   IN  CNAME   www.a.shifen.com.
www.a.shifen.com.   5   IN  A   119.75.216.20
www.a.shifen.com.   5   IN  A   119.75.213.61

;; AUTHORITY SECTION:
a.shifen.com.       5   IN  NS  ns2.a.shifen.com.
a.shifen.com.       5   IN  NS  ns1.a.shifen.com.
a.shifen.com.       5   IN  NS  ns5.a.shifen.com.
a.shifen.com.       5   IN  NS  ns3.a.shifen.com.
a.shifen.com.       5   IN  NS  ns4.a.shifen.com.

;; ADDITIONAL SECTION:
ns1.a.shifen.com.   5   IN  A   61.135.165.224
ns2.a.shifen.com.   5   IN  A   180.149.133.241
ns3.a.shifen.com.   5   IN  A   61.135.162.215
ns4.a.shifen.com.   5   IN  A   115.239.210.176
ns5.a.shifen.com.   5   IN  A   119.75.222.17

;; Query time: 8 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Thu Jul 27 18:36:49 CST 2017
;; MSG SIZE  rcvd: 271

n3verl4nd@ubuntu:~$
  • QUESTION SECTION:查询的内容
  • ANSWER SECTION:相应的内容,一般会得到至少一条A记录,否则就还没定义
  • AUTHORITY SECTION:授权信息
  • ADDITIONAL SECTION:每个授权服务器的IP地址
  • SERVER:查询的dns服务器,可能会被缓存

dig . :返回根域名的相关记录。也可以在此查看:
https://www.internic.net/domain/named.root


dig www.baidu.com +trace 可以查看到更加具体的解析过程。

n3verl4nd@ubuntu:~$ dig +trace www.baidu.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> +trace www.baidu.com
;; global options: +cmd
.           5   IN  NS  l.root-servers.net.
.           5   IN  NS  d.root-servers.net.
.           5   IN  NS  e.root-servers.net.
.           5   IN  NS  a.root-servers.net.
.           5   IN  NS  m.root-servers.net.
.           5   IN  NS  f.root-servers.net.
.           5   IN  NS  i.root-servers.net.
.           5   IN  NS  h.root-servers.net.
.           5   IN  NS  c.root-servers.net.
.           5   IN  NS  b.root-servers.net.
.           5   IN  NS  j.root-servers.net.
.           5   IN  NS  k.root-servers.net.
.           5   IN  NS  g.root-servers.net.
;; Received 492 bytes from 127.0.1.1#53(127.0.1.1) in 10 ms

com.            172800  IN  NS  c.gtld-servers.net.
com.            172800  IN  NS  h.gtld-servers.net.
com.            172800  IN  NS  a.gtld-servers.net.
com.            172800  IN  NS  f.gtld-servers.net.
com.            172800  IN  NS  j.gtld-servers.net.
com.            172800  IN  NS  b.gtld-servers.net.
com.            172800  IN  NS  g.gtld-servers.net.
com.            172800  IN  NS  k.gtld-servers.net.
com.            172800  IN  NS  l.gtld-servers.net.
com.            172800  IN  NS  i.gtld-servers.net.
com.            172800  IN  NS  e.gtld-servers.net.
com.            172800  IN  NS  d.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 20170809050000 20170727040000 15768 . flkNhOHdo2lTHezA006ZbUFjExKm76sKGMI85Xzk61hnhHDiaQmqSQoQ qhMWY0HSFSoaqfLOWSvs7rBnaLcuwUOGX16MnZ7ylOqccMoFpf3MlxWv mK2Tx2pgxoj+RZhbJ3VPQKf+hzzhp+s8MocKWIi2MYkMuJl0GcxCYadH CmEI1wDOcOzDm5nekczh83QpJ+k1aWWN/myPnUn5eur+IHvGqShS8SOX xdB7qd0EB2EqlHQMYbBCiw0aHDlO1VMx1EIRKDXa5pBIGzxtFbiqXW0t RnNHhhAJGHtughBXLVJ/dPjonDsYOJaDlDsSPVrvlnON31fU0K5kOzbV eg3wyg==
;; Received 1173 bytes from 192.112.36.4#53(g.root-servers.net) in 217 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 20170801044942 20170725033942 5528 com. mNrH9UbQUryufDZtDw/Qy5P5VdXZU0X2yg6yQPQQNUYJeOx/rIi87+3e ezn6YNnO2agExUKpSj3hOnjZlR4+U0t/SWOeRqYCu5JkIIvBXGSXpl1D w7W3V+9zn1g0JCQArKtGZBnA1rC7V+btbaspGIIjbGxT7XQ3ZZz6RM2x Vp0=
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN NSEC3 1 1 0 - HQ01I3PFSK4TG3Q31LT3RIMHGBFQU42T NS DS RRSIG
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN RRSIG NSEC3 8 2 86400 20170803045107 20170727034107 5528 com. CZ1S9dgc0MduaZDd/NlXpIT3zAKlRZRo2hM8BTB38UY2J0n6iC+N7oGN wExdHJnh0dfX21+Y3l0+5Nj8hNfKRoKxEnuGeuqgCIGvS/5xNzPBHbSa AkWZTsPL1+2OTMTRHQEnr7IpoZ2x6F4MMnsRwOe86VLoO+kx1BGChwRP LR8=
;; Received 697 bytes from 192.48.79.30#53(j.gtld-servers.net) in 270 ms

www.baidu.com.      1200    IN  CNAME   www.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns1.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns3.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns5.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns4.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns2.a.shifen.com.
;; Received 239 bytes from 220.181.38.10#53(ns4.baidu.com) in 6 ms

查询流程:
1.客户机提交查询www.baidu.com的A记录的请求给本地域名服务器,本地域名服务器则会向根域名服务器(g.rootservers.net)提交www.baidu.com这个域名的A记录查询请求,然后g.root-servers.net返回给本地域名服务器一个或多个可以处理.com域的顶级域名服务器(m.gtldservers.net)的A记录。
2.本地域名服务器向j.gtld-servers.net提交关于www.baidu.com的A记录的查询请求,然后j.gtld-servers.net返回一个或者多个可以处理baidu.com这个域的域名服务器(ns4.baidu.com)的A记录给本地域名服务器。
3.本地域名服务器向ns4.baidu.com提交关于www.baidu.com的A记录的查询请求,这时
ns4.baidu.com发现他的记录信息如下:

www.baidu.com.      1200    IN  CNAME   www.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns1.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns3.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns2.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns4.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns5.a.shifen.com.

也就是说他不能找到www.baidu.com这台主机的IP地址,这时候他就会查看www.baidu.com是不是通过cname得到的Aliases,经过查询发现确实是这样,此时ns4.baidu.com服务器会将www.baidu.com 1200 IN CNAME www.a.shifen.com这条记录放入响应报文中,同时他会在他本机上启动一个关于www.a.shifen.com的A记录的查询请求,然后将查询结果:

a.shifen.com.       5   IN  NS  ns2.a.shifen.com.
a.shifen.com.       5   IN  NS  ns3.a.shifen.com.
a.shifen.com.       5   IN  NS  ns5.a.shifen.com.
a.shifen.com.       5   IN  NS  ns1.a.shifen.com.
a.shifen.com.       5   IN  NS  ns4.a.shifen.com.

同时添加进入刚才的响应报文中,一并返回给本地域名服务器。
至于为什么我们做个测试:

dig +trace shifen.com

shifen.com.     172800  IN  NS  dns.baidu.com.
shifen.com.     172800  IN  NS  ns2.baidu.com.
shifen.com.     172800  IN  NS  ns3.baidu.com.
shifen.com.     172800  IN  NS  ns4.baidu.com.

可见shifen.com的域名服务器和baidu.com的域名服务器是一样的,所以直接向(ns4.baidu.com)发起查询并返回了a.shifen.com的域名服务器。

4.本地域名服务器接下来根据刚才的响应报文会找ns1.a.shifen.com去查询www.a.shifen.com的A记录,这时候ns1.a.shifen.com就会返回给本地域名服务器关于www.a.shifen.com 的A记录也就是119.75.216.20之类的信息,然后本地域名服务器就会将结果返回给客户了。客户就可以使用得到的IP地址与对应的主机建立连接了。


DNS工作原理

  • 第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
  • 第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
  • 第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
  • 第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
  • 第五步:重复第四步,直到找到正确的纪录。
  • 第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

资料:http://www.ruanyifeng.com/blog/2016/06/dns.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N3verL4nd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值