zoukankan      html  css  js  c++  java
  • DNS的查询流程

    我们可以通过一个命令了演示,同时进行抓包。
    在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、得到结果

  • 相关阅读:
    图的深度优先搜索(递归和非递归c++实现)
    第十届蓝桥杯大赛软件类省赛 迷宫问题题解
    第十届蓝桥杯大赛软件类省赛研究生组 试题D:最短路
    第十届蓝桥杯大赛软件类省赛研究生组 试题H:修改数组
    Redis设计与实现书中勘误-sdstrim函数解释错误
    Clion 引入libevent Undefined symbols for architecture x86_64: "
    RabbitMQ Linux 下 安装
    kafka基本使用
    2种方法改变String 值
    Maven学习笔记-1
  • 原文地址:https://www.cnblogs.com/dieangel/p/5989060.html
Copyright © 2011-2022 走看看