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

在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. HTML 中级2

    <colgroup> 标签用于对表格中的列进行组合,以便对其进行格式化. 通过使用 <colgroup> 标签,可以向整个列应用样式,而不需要重复为每个单元格或每一行设置样式. ...

  2. 简单研究下Retrofit

    2015-09-24 15:36:26 第一部分: 1. 什么是Retrofit? (点击图片有惊喜) 以上是来自官网的解释,言简意赅,咳咳,我就不翻译了~ 2. 如何使用Retrofit? 2.1 ...

  3. Bootstrap<基础三> 排版

    Bootstrap 使用 Helvetica Neue. Helvetica. Arial 和 sans-serif 作为其默认的字体栈. 使用 Bootstrap 的排版特性,您可以创建标题.段落. ...

  4. 资源:Python for Windows

    http://win32com.goermezer.de/content/blogsection/7/284/ 一个网站,有各种Windows 下使用 Python 的脚本示例,很不错,有待继续挖掘. ...

  5. MyBatis3学习--来源自用户指南

    MyBatis是什么? MyBatis 是一款一流的支持自定义SQL.存储过程和高级映射的持久化框架. MyBatis几乎消 除了所有的JDBC 代码,也基本不需要手工去设置参数和获取检索结果. My ...

  6. git 小结

    git cherry-pick de0ec64  可将另一个分支中的提交 cherry-pick到当前分支来

  7. arduino--1s间隔闪烁灯

    初始使用Arduino,写了这么个小功能:1s间隔闪烁灯 void setup() { pinMode(,OUTPUT);//Set 13Pin as OUTPUT } void loop() { d ...

  8. 【转】 Linux shell的&&和||

    http://www.2cto.com/os/201302/189655.html Linux shell的&&和||   shell 在执行某个命令的时候,会返回一个返回值,该返回值 ...

  9. ie6下js更新元素display:block后,仍然不显示的hack办法

    $hotGames.html(html).removeClass("hide").show();//代码执行到这里,在ie6下仍然无法正常显示 //只有执行了下边的两行代码后,才正 ...

  10. android 透明度

    透明度百分比对应的十六进制: (说明:百分比计算出来会有小数,按照常规的四舍五入处理,详情请往下查看) 百分比:0% HEX: 00 百分比:1% HEX: 30 百分比:2% HEX: 50 百分比 ...