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

在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. Flexbox,更优雅的布局

    在设计的眼中,排版的操作是一件很简单的事情,靠左.置中.靠右,我只要点一下,所有元素,就会乖乖的到指定的位置. 但到了前端在排版的实现上,就不是这样了. 我们常常得用一堆其实本来不是这样用的属性来做 ...

  2. ${mapred.local.dir}选择策略--Map Task存放中间结果

    上篇说了block在DataNode配置有多个${dfs.data.dir}时的存储策略,本文主要介绍TaskTracker在配置有多个${mapred.local.dir}时的选择策略. mapre ...

  3. HDU--杭电--1026--Ignatius and the Princess I--广搜--直接暴力0MS,优先队列的一边站

    别人都是广搜+优先队列,我没空临时学,所以就直接自己暴力了 Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others)     ...

  4. Python3学习(二)-递归函数、高级特性、切片

    ##import sys ##sys.setrecursionlimit(1000) ###关键字参数(**关键字参数名) ###与可变参数不同的是,关键字参数可以在调用函数时,传入带有参数名的参数, ...

  5. centos 7 下安装numpy、scipy等python包

    本文适用于刚入门的小白,欢迎大牛们批评指正. 因为要开始数据分析,而python又不像R和matlab那么简洁.需要安装的包很多~ 网上找了好多牛人博客,想在centos7下安装numpy,scipy ...

  6. DevExpress gridControl 设置分组

    有些代码非常有用,但是用的时候就记不清怎么写,所以就在这里打个草稿. //设置组汇总 private void SetSummation() { this.gridViewShipment.Group ...

  7. VS2010的项目配置

    一直对VS的项目配置都是不怎么了解的,以前用过点,半年不用后,什么都忘记了... 下面这个是免于输入过长的引用头文件的,比如:#include “D:/C++/curl-7.37.0/libcurl/ ...

  8. 基于.NET的CAD二次开发学习笔记二:AutoCAD .NET中的对象

    1.CAD对象:一个CAD文件(DWG文件)即对应一个数据库,数据库中的所有组成部分,看的见(包括点.多段线.文字.圆等)和看不见(图层.线型.颜色等)的都是对象,数据库本身也是一个对象. 直线.圆弧 ...

  9. Thinkphp模型问题(一)

    很长一段时间,脑海里没有模型和控制器的区别,几乎把所有代码都敲在控制器里边了. 来自于ThinkPhp3.2.3手册模型定义 ​​​​​​​模型类的作用大多数情况是操作数据表的,如果按照系统的规范来 ...

  10. mov和ldr/str的区别

    ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令.比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如:ldr r0, 0x12345678就 ...