我们可以通过一个命令了演示,同时进行抓包。

在OS X可以用dig命令进行查询追踪。

dig @8.8.8.8 www.baidu.com

看看输出会是什么呢

; <<>> DiG 9.8.3-P1 <<>> +trace www.baidu.com
;; global options: +cmd
. 4551 IN NS g.root-servers.net.
. 4551 IN NS i.root-servers.net.
. 4551 IN NS c.root-servers.net.
. 4551 IN NS a.root-servers.net.
. 4551 IN NS l.root-servers.net.
. 4551 IN NS d.root-servers.net.
. 4551 IN NS j.root-servers.net.
. 4551 IN NS f.root-servers.net.
. 4551 IN NS b.root-servers.net.
. 4551 IN NS k.root-servers.net.
. 4551 IN NS h.root-servers.net.
. 4551 IN NS e.root-servers.net.
. 4551 IN NS m.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 208 ms
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
;; Received 491 bytes from 192.112.36.4#53(192.112.36.4) in 108 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.
;; Received 201 bytes from 192.26.92.30#53(192.26.92.30) in 117 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 ns2.a.shifen.com.
a.shifen.com. 1200 IN NS ns4.a.shifen.com.
;; Received 228 bytes from 220.181.37.10#53(220.181.37.10) in 55 ms

抓包看一下

09:56:37.132581 IP (tos 0x0, ttl 64, id 58263, offset 0, flags [none], proto UDP (17), length 45)

192.168.1.108.59877 > 8.8.8.8.53: [udp sum ok] 50017 NS? . (17)

查询 . ns记录

09:56:37.329776 IP (tos 0x0, ttl 50, id 47757, offset 0, flags [none], proto UDP (17), length 256)

8.8.8.8.53 > 192.168.1.108.59877: [udp sum ok] 50017 q: NS? . 13/0/0 . [1h15m51s] NS g.root-servers.net., . [1h15m51s] NS i.root-servers.net., . [1h15m51s] NS c.root-servers.net., . [1h15m51s] NS a.root-servers.net., . [1h15m51s] NS l.root-servers.net., . [1h15m51s] NS d.root-servers.net., . [1h15m51s] NS j.root-servers.net., . [1h15m51s] NS f.root-servers.net., . [1h15m51s] NS b.root-servers.net., . [1h15m51s] NS k.root-servers.net., . [1h15m51s] NS h.root-servers.net., . [1h15m51s] NS e.root-servers.net., . [1h15m51s] NS m.root-servers.net. (228)

回应刚才的查询。 q:NS? .查询问题。13/0/0 回答RR数/授权信息RR数/附加信息RR

09:56:37.341675 IP (tos 0x0, ttl 64, id 24452, offset 0, flags [none], proto UDP (17), length 59)

192.168.1.108.64388 > 192.112.36.4.53: [udp sum ok] 21413 A? www.baidu.com. (31)

查询 g.root-server.net 服务器上是否有 www.baidu.com 的A记录

09:56:37.441124 IP (tos 0x0, ttl 234, id 36143, offset 0, flags [DF], proto UDP (17), length 519)

192.112.36.4.53 > 192.168.1.108.64388: [udp sum ok] 21413- q: A? www.baidu.com. 0/13/14 ns: com. [2d] NS f.gtld-servers.net., com. [2d] NS k.gtld-servers.net., com. [2d] NS g.gtld-servers.net., com. [2d] NS i.gtld-servers.net., com. [2d] NS h.gtld-servers.net., com. [2d] NS l.gtld-servers.net., com. [2d] NS b.gtld-servers.net., com. [2d] NS c.gtld-servers.net., com. [2d] NS j.gtld-servers.net., com. [2d] NS a.gtld-servers.net., com. [2d] NS e.gtld-servers.net., com. [2d] NS m.gtld-servers.net., com. [2d] NS d.gtld-servers.net. ar: a.gtld-servers.net. [2d] A 192.5.6.30, b.gtld-servers.net. [2d] A 192.33.14.30, c.gtld-servers.net. [2d] A 192.26.92.30, d.gtld-servers.net. [2d] A 192.31.80.30, e.gtld-servers.net. [2d] A 192.12.94.30, f.gtld-servers.net. [2d] A 192.35.51.30, g.gtld-servers.net. [2d] A 192.42.93.30, h.gtld-servers.net. [2d] A 192.54.112.30, i.gtld-servers.net. [2d] A 192.43.172.30, j.gtld-servers.net. [2d] A 192.48.79.30, k.gtld-servers.net. [2d] A 192.52.178.30, l.gtld-servers.net. [2d] A 192.41.162.30, m.gtld-servers.net. [2d] A 192.55.83.30, a.gtld-servers.net. [2d] AAAA 2001:503:a83e::2:30 (491)

并没有查询到记录,回应了 com.域的 授权服务器地址及授权服务器的解析IP -号代表非递归查询

09:56:37.450709 IP (tos 0x0, ttl 64, id 15440, offset 0, flags [none], proto UDP (17), length 59)

192.168.1.108.64612 > 192.26.92.30.53: [udp sum ok] 5096 A? www.baidu.com. (31)

继续向 d.gtld-servers.net 查询

09:56:37.564570 IP (tos 0x0, ttl 51, id 61188, offset 0, flags [none], proto UDP (17), length 229)

192.26.92.30.53 > 192.168.1.108.64612: [udp sum ok] 5096- q: A? www.baidu.com. 0/5/5 ns: baidu.com. [2d] NS dns.baidu.com., baidu.com. [2d] NS ns2.baidu.com., baidu.com. [2d] NS ns3.baidu.com., baidu.com. [2d] NS ns4.baidu.com., baidu.com. [2d] NS ns7.baidu.com. ar: dns.baidu.com. [2d] A 202.108.22.220, ns2.baidu.com. [2d] A 61.135.165.235, ns3.baidu.com. [2d] A 220.181.37.10, ns4.baidu.com. [2d] A 220.181.38.10, ns7.baidu.com. [2d] A 119.75.219.82 (201)

回应授权及附加信息

09:56:37.568584 IP (tos 0x0, ttl 64, id 31367, offset 0, flags [none], proto UDP (17), length 59)

192.168.1.108.65266 > 220.181.37.10.53: [udp sum ok] 11729 A? www.baidu.com. (31)

继续查询百度的授权服务器

09:56:37.623400 IP (tos 0x0, ttl 48, id 65248, offset 0, flags [none], proto UDP (17), length 256)

220.181.37.10.53 > 192.168.1.108.65266: [udp sum ok] 11729*- q: A? www.baidu.com. 1/5/5 www.baidu.com. [20m] CNAME www.a.shifen.com. ns: a.shifen.com. [20m] NS ns1.a.shifen.com., a.shifen.com. [20m] NS ns3.a.shifen.com., a.shifen.com. [20m] NS ns5.a.shifen.com., a.shifen.com. [20m] NS ns2.a.shifen.com., a.shifen.com. [20m] NS ns4.a.shifen.com. ar: ns1.a.shifen.com. [20m] A 61.135.165.224, ns2.a.shifen.com. [20m] A 180.149.133.241, ns3.a.shifen.com. [20m] A 61.135.162.215, ns4.a.shifen.com. [20m] A 115.239.210.176, ns5.a.shifen.com. [20m] A 119.75.222.17 (228)

收到了回答。*表示是他的主域名服务器。

最终递归查询归纳

1、查询 . 的 ns 记录

2、迭代查询 . 的 ns 服务器上是否有 域名的 A记录

3、迭代查询 com. 的 ns 服务器上是否存在记录

4、迭代查询 返回的授权服务器

5、得到结果

DNS的查询流程的更多相关文章

  1. DNS的解析流程

    一.简单理解 DNS服务器里存着一张表,表中放着域名和IP地址,域名和IP地址以映射关系保存,即一对一 浏览器访问某个域名,实际上是访问它的ip地址 所以浏览器需要知道域名对应的ip地址,由此产生dn ...

  2. centos的DNS服务工作流程及搭建

    1  什么是DNS? DNS(Domain Name Server,域名服务器)即域名解析服务,是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器.DNS ...

  3. Activiti 查询流程定义

    package com.mycom.processDefinition; import java.io.InputStream; import java.util.List; import java. ...

  4. Solr4.8.0源码分析(5)之查询流程分析总述

    Solr4.8.0源码分析(5)之查询流程分析总述 前面已经写到,solr查询是通过http发送命令,solr servlet接受并进行处理.所以solr的查询流程从SolrDispatchsFilt ...

  5. MVC5搜索/查询 流程功能的实现

    接着上次的篇幅,我们这篇手动来写一个查询的流程代码!  搜索/查询 流程功能的实现 那现在要做搜索(查询)功能我们第一步应该做什么呢!第一次是不是我们应该去Controller(控制器)里去搞一个搜索 ...

  6. jt项目日志查询流程

    jt项目日志查询流程

  7. 四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享

    一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现-- ...

  8. activiti7查询流程定义的相关信息

    package com.zcc.activiti02; import org.activiti.engine.ProcessEngine;import org.activiti.engine.Proc ...

  9. mysql高级教程(一)-----逻辑架构、查询流程、索引

    mysql逻辑架构 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用.主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提 ...

随机推荐

  1. 主板BIOSCOMS故障解决三例

    主板故障中因为BIOS/COMS设置不当或者因为主板电池引起的coms故障而导致主板无法正常工作的比例占了不小.今天我们就来说说主板BIOS/COMS的故障和解决.声卡维修 硬盘安装设置 CMOS设置 ...

  2. 100. Same Tree

    [题目] Given two binary trees, write a function to check if they are equal or not. Two binary trees ar ...

  3. 如何理解和熟练运用js中的call及apply?

    改变this指向 要先明白存在call和apply的原因,才能记得牢一点: 在javascript OOP中,我们经常会这样定义: function cat(){ } cat.prototype={ ...

  4. 检索 COM 类工厂中 CLSID 为 {820280E0-8ADA-4582-A1D9-960A83CE8BB5} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。

    检索 COM 类工厂中 CLSID 为 {820280E0-8ADA-4582-A1D9-960A83CE8BB5} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRE ...

  5. SQLite常用函数

    length(column_name) 取得相应栏位的长度 substr(column_name, start, length) 截取某个栏位相应长度的值

  6. 查询Sqlserver数据库死锁的一个存储过程

    From:http://www.cnblogs.com/mzhanker/archive/2011/06/04/2072739.html 使用sqlserver作为数据库的应用系统,都避免不了有时候会 ...

  7. AnyCAD.NET C#开发CAD软件实践(一)

    免费的AnyCAD.NET发布了!俺喜欢的C#有了大展前途的机会了. 打算用这个框架搭建一套实用的CAD系统,目标是能买出去10套以上. 先看看AnyCAD.NET的自我介绍. http://www. ...

  8. CDH5.4.5运行多字符分割记录

    准备工作: 测试文件内容:cis_cust_imp_info 20131131|+|100010001001|+|BR01|+|2000.0120131131|+|100010001002|+|BR0 ...

  9. 使windows隐藏文件全部显示出来

    win+R => cmd=>attrib -s -b *.*  /S /D 找出所有隐藏文件夹—— FindHidden

  10. extjs之apply

    ext.apply(Ext.Form.VTypes,{}) {}里面的内容如下: { password:function (val.field) { if(field.initialPassField ...