dig理解DNS的解析过程

简介:

[root@localhost ~]# dig www.a.com

  ; <<>> DiG 9.2.4 <<>> www.a.com

  ;; global options:  printcmd

  ;; Got answer:

  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25746

  ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 6

  ;; QUESTION SECTION:

  ;www.aslibra.com.               IN      A

  ;; ANSWER SECTION:

  www.aslibra.com.        900     IN      A       222.76.215.25

  ;; AUTHORITY SECTION:

  aslibra.com.            33024   IN      NS      k8.hkidc.com.

  aslibra.com.            33024   IN      NS      b.hkidc.com.

  aslibra.com.            33024   IN      NS      j6.hkidc.com.

  aslibra.com.            33024   IN      NS      nidc.com.

  aslibra.com.            33024   IN      NS      ns5.hkidc.com.

  aslibra.com.            33024   IN      NS      a.hkidc.com.

  ;; ADDITIONAL SECTION:

  k8.hkidc.com.           55596   IN      A       125.65.112.32

  b.hkidc.com.            53594   IN      A       221.122.64.81

  j6.hkidc.com.           54375   IN      A       222.76.219.74

  nidc.com.          53598   IN      A       221.122.64.81

  ns5.hkidc.com.          55596   IN      A       222.76.219.81

  a.hkidc.com.            53594   IN      A       125.65.112.32

  ;; Query time: 71 msec

  ;; SERVER: 211.99.25.1#53(211.99.25.1)

  ;; WHEN: Mon Jun  1 12:05:17 2009

  ;; MSG SIZE  rcvd: 268

  如何理解上面的意思?

  QUESTION SECTION:查询的内容

  ANSWER SECTION:相应的内容,一般会得到至少一条A记录,否则就还没定义

  AUTHORITY SECTION:授权信息

  ADDITIONAL SECTION:每个授权服务器的IP地址

  SERVER:查询的dns服务器,可能会被缓存

  过程大体是:

  1 从SERVER查询www.a.com,如果有有效缓存就返回了

  2 如果没有,则找到a.com的授权服务器,下面有例子介绍

  3 从其中一个查询到结果(A记录)

  我们来看看更加具体的解析过程

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

  我们用一个大点的网站看看,比如 www.163.com。

  先看看不加trace的情况得到什么:

  [root@localhost ~]# dig www.163.com

  ; <<>> DiG 9.2.4 <<>> www.163.com

  ;; global options:  printcmd

  ;; Got answer:

  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46550

  ;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 2, ADDITIONAL: 2

  ;; QUESTION SECTION:

  ;www.163.com.                   IN      A

  ;; ANSWER SECTION:

  www.163.com.            51561   IN      CNAME   www.cache.gslb.netease.com.

  www.cache.gslb.netease.com. 1604 IN     A       61.135.253.16

  www.cache.gslb.netease.com. 1604 IN     A       61.135.253.17

  www.cache.gslb.netease.com. 1604 IN     A       61.135.253.18

  www.cache.gslb.netease.com. 1604 IN     A       61.135.253.9

  www.cache.gslb.netease.com. 1604 IN     A       61.135.253.10

  www.cache.gslb.netease.com. 1604 IN     A       61.135.253.11

  www.cache.gslb.netease.com. 1604 IN     A       61.135.253.12

  www.cache.gslb.netease.com. 1604 IN     A       61.135.253.13

  www.cache.gslb.netease.com. 1604 IN     A       61.135.253.14

  www.cache.gslb.netease.com. 1604 IN     A       61.135.253.15

  ;; AUTHORITY SECTION:

  gslb.netease.com.       1604    IN      NS      gslb1.netease.com.

  gslb.netease.com.       1604    IN      NS      gslb2.netease.com.

  ;; ADDITIONAL SECTION:

  gslb1.netease.com.      15896   IN      A       61.135.255.143

  gslb2.netease.com.      15900   IN      A       220.181.28.168

  ;; Query time: 56 msec

  ;; SERVER: 211.99.25.1#53(211.99.25.1)

  ;; WHEN: Mon Jun  1 12:29:51 2009

  ;; MSG SIZE  rcvd: 298

  ANSWER SECTION告诉你:

  www.163.com做了别名到www.cache.gslb.netease.com

  而www.cache.gslb.netease.com有这么一系列机器(A记录),你可以随便挑一个访问。

  我们看看加上trace后是什么信息:

  [root@localhost ~]# dig www.163.com +trace

  ; <<>> DiG 9.2.4 <<>> www.163.com +trace

  ;; global options:  printcmd

  .                       223628  IN      NS      e.root-servers.NET.

  .                       223628  IN      NS      f.root-servers.net.

  .                       223628  IN      NS      g.root-servers.Net.

  .                       223628  IN      NS      h.root-servers.net.

  .                       223628  IN      NS      i.root-servers.net.

  .                       223628  IN      NS      j.root-servers.net.

  .                       223628  IN      NS      k.root-servers.net.

  .                       223628  IN      NS      l.root-servers.net.

  .                       223628  IN      NS      m.root-servers.net.

  .                       223628  IN      NS      a.root-servers.net.

  .                       223628  IN      NS      b.root-servers.net.

  .                       223628  IN      NS      c.root-servers.net.

  .                       223628  IN      NS      d.root-servers.net.

 

  ;; Received 512 bytes from 211.99.25.1#53(211.99.25.1) in 65 ms

  com.                    172800  IN      NS      A.GTLD-SERVERS.NET.

  com.                    172800  IN      NS      B.GTLD-SERVERS.NET.

  com.                    172800  IN      NS      M.GTLD-SERVERS.NET.

  com.                    172800  IN      NS      F.GTLD-SERVERS.NET.

  com.                    172800  IN      NS      E.GTLD-SERVERS.NET.

  com.                    172800  IN      NS      D.GTLD-SERVERS.NET.

  com.                    172800  IN      NS      C.GTLD-SERVERS.NET.

  com.                    172800  IN      NS      H.GTLD-SERVERS.NET.

  com.                    172800  IN      NS      L.GTLD-SERVERS.NET.

  com.                    172800  IN      NS      I.GTLD-SERVERS.NET.

  com.                    172800  IN      NS      K.GTLD-SERVERS.NET.

  com.                    172800  IN      NS      J.GTLD-SERVERS.NET.

  com.                    172800  IN      NS      G.GTLD-SERVERS.NET.

  ;; Received 501 bytes from 192.203.230.10#53(e.root-servers.net) in 212 ms

  163.com.                172800  IN      NS      ns3.nease.net.

  163.com.                172800  IN      NS      ns4.nease.net.

  ;; Received 106 bytes from 192.5.6.30#53(A.GTLD-SERVERS.NET) in 293 ms

  www.163.com.            86400   IN      CNAME   www.cache.gslb.netease.com.

  gslb.netease.com.       18000   IN      NS      gslb1.netease.com.

  gslb.netease.com.       18000   IN      NS      gslb2.netease.com.

  ;; Received 138 bytes from 61.135.255.138#53(ns4.nease.net) in 47 ms

  这里的过程有点复杂,但其实很好理解,也很重要的内容,需要琢磨清楚。

  要明白,域名都是按等级授权的,比如把www.163.com. 拆分一下:

  . 分配 com. ,com. 分配 163.com. ,163.com. 分配 www.163.com. 。

  根服务器列表是在域名服务器上都有一份的,文档是一样的,文件可以下载。

  域名都是从“.”开始授权,域名根服务器是 (a-m).root-servers.net.这系列服务器分配授权

  .com .cn .net各种域名都从这里开始分配授权,比如 .com 授权给 (A-G).GTLD-SERVERS.NET.

  (尝试做一下 dig www.163.org +trace,就会发现 .org 是分配给 a0.org.afilias-nst.info.等服务器 了)

  这批服务器又授权 163.com给另外的机器

  163.com.                172800  IN      NS      ns3.nease.net.

  163.com.                172800  IN      NS      ns4.nease.net.

  于是查询www是哪个ip就落到了ns3.nease.net.和ns4.nease.net.上,他们给的答案是:

  www.163.com.            86400   IN      CNAME   www.cache.gslb.netease.com.

  然后没戏了,没有给出IP,还没有答案,当然了,别名就要重新查询了,我们继续查询。

  我们trace检查www.cache.gslb.netease.com. :

  [root@localhost ~]# dig www.cache.gslb.netease.com. +trace

  ; <<>> DiG 9.2.4 <<>> www.cache.gslb.netease.com. +trace

  ...(省略和上面查询一样的信息)

  netease.com.            172800  IN      NS      ns3.nease.net.

  netease.com.            172800  IN      NS      ns4.nease.net.

  ;; Received 121 bytes from 192.12.94.30#53(E.GTLD-SERVERS.NET) in 468 ms

  gslb.netease.com.       18000   IN      NS      gslb1.netease.com.

  gslb.netease.com.       18000   IN      NS      gslb2.netease.com.

  ;; Received 116 bytes from 61.135.255.138#53(ns4.nease.net) in 44 ms

  www.cache.gslb.netease.com. 1800 IN     A       220.181.28.53

  www.cache.gslb.netease.com. 1800 IN     A       220.181.28.54

  www.cache.gslb.netease.com. 1800 IN     A       220.181.28.212

  www.cache.gslb.netease.com. 1800 IN     A       220.181.28.50

  www.cache.gslb.netease.com. 1800 IN     A       220.181.28.51

  www.cache.gslb.netease.com. 1800 IN     A       220.181.28.52

  gslb.netease.com.       1800    IN      NS      gslb2.netease.com.

  gslb.netease.com.       1800    IN      NS      gslb1.netease.com.

  ;; Received 180 bytes from 61.135.255.143#53(gslb1.netease.com) in 20 ms

  gslb.netease.com. 的解析权给了 gslb1.netease.com.

  最终给出了 www.cache.gslb.netease.com. 的一系列A记录,解析就算完成了。

  使用dig命令我们甚至可以给163.com画一个他们的域名分布图了 :) ,结合下图应该很容易理解:

点击在新窗口中浏览此图片

  小结一下:

  1 DNS服务器会按等级授权给别的服务器解析域名

  2 指定的是NS记录,同时会有该NS记录的域名的A记录指定

  3 别名方式会再继续查询,一般本dns服务器不处理cdn应该可以别名到cdn功能的服务器处理

  4 你可以方便的用dig检查dns服务器分配情况

  引用

  DNS的工作原理及过程分下面几个步骤:

  第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。

  第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。

  第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。

  第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下第五步:重复第四步,直到找到正确的纪录。

  第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。



      本文转自Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1948600,如需转载请自行联系原作者





相关文章
|
10月前
|
域名解析 存储 网络协议
域名解析的终极指南:从基础到进阶,彻底搞懂 DNS 记录
域名解析是网站运行的基础,正确配置DNS记录至关重要。本文从基础到进阶全面解析DNS知识,涵盖A、AAAA、CNAME、MX、TXT、CAA等常见记录类型及其应用场景。通过学习,你将了解DNS的工作原理,掌握如何优化域名配置,确保网站与邮件服务高效运行。无论搭建个人博客还是企业官网,本文都能助你轻松搞定域名解析!
2361 0
|
9月前
|
域名解析 网络协议 网络安全
SSL证书验证全攻略:DNS/HTTP/手动解析怎么选?
SSL证书在网络安全中至关重要,1Panel提供三种验证方式:DNS验证、HTTP验证和手动解析。DNS验证便捷,适合CDN网站;HTTP验证快速,需服务器在线;手动解析灵活,但操作复杂。根据需求选择合适确认方式,定期检查证书状态。
970 2
|
11月前
|
域名解析 存储 缓存
深入学习 DNS 域名解析
在平时工作中相信大家都离不开 DNS 解析,因为 DNS 解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程。
|
9月前
|
网络协议 安全 Linux
阿里云服务器国际站dns服务器不可用怎么办?dns可以随便改吗?
阿里云服务器国际站dns服务器不可用怎么办?dns可以随便改吗?
2620 0
|
12月前
|
负载均衡 网络协议 容灾
【飞天技术沙龙】云解析 DNS 上海站《多云+IDC 融合场景下的 DNS 最佳实践》圆满落幕
【飞天技术沙龙】云解析 DNS 上海站《多云+IDC 融合场景下的 DNS 最佳实践》圆满落幕
283 0
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
424 2
|
11月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1066 29
|
11月前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
453 4
|
11月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
移动开发 前端开发 JavaScript
从入门到精通:H5游戏源码开发技术全解析与未来趋势洞察
H5游戏凭借其跨平台、易传播和开发成本低的优势,近年来发展迅猛。接下来,让我们深入了解 H5 游戏源码开发的技术教程以及未来的发展趋势。

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
  • DNS