zoukankan      html  css  js  c++  java
  • 【Dig工具】

    dig工具

     

    先说一下DNS的几个基本概念:

    DNS的资源记录:

    A记录:即地址资源记录,记录一个主机的IP地址;

    MX记录:邮件服务器资源记录,记录一个域的邮件服务器的域名;

    NS记录:即名字服务器资源记录,记录一个域的权威域名服务器的域名;

    CNAME记录,即规范名称(Canonical Name)资源记录,记录一个主机的标准名称。

    一. 根域

    就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯。

    根域服务器我们知道有13台,但是这是错误的观点。

    根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技术,所以我们可以在全球设立这些IP的镜像站点,你访问到的这个IP并不是唯一的那台主机。

    具体的镜像分布可以参考维基百科。这些主机的内容都是一样的

    二. 域的划分

    根域下来就是顶级域或者叫一级域,

    有两种划分方式,一种互联网刚兴起时的按照行业性质划分的com.,net.等,一种是按国家划分的如cn.,jp.,等。

    具体多少你可以自己去查,我们这里不关心。

    每个域都会有域名服务器,也叫权威域名服务器。

    Baidu.com就是一个顶级域名,而www.baidu.com却不是顶级域名,他是在baidu.com 这个域里的一叫做www的主机。

    一级域之后还有二级域,三级域,只要我买了一个顶级域,并且我搭建了自己BIND服务器(或者其他软件搭建的)注册到互联网中,那么我就可以随意在前面多加几个域了(当然长度是有限制的)。

    比如a.www.baidu.com,在这个网址中,www.baidu.com变成了一个二级域而不是一台主机,主机名是a。

    三. 域名服务器

    能提供域名解析的服务器,上面的记录类型可以是A(address)记录,NS记录(name server),MX(mail),CNAME等。

    (详解参见博客:域名解析中A记录、CNAME、MX记录、NS记录的区别和联系

    A记录是什么意思呢,就是记录一个IP地址和一个主机名字,比如我这个域名服务器所在的域test.baidu.com,我们知道这是一个二级的域名,然后我在里面有一条A记录,记录了主机为a的IP,查到了就返回给你了。

    如果我现在要想baidu.com这个域名服务器查询a.test.baidu.com,那么这个顶级域名服务器就会发现你请求的这个网址在test.baidu.com这个域中,我这里记录了这个二级域的域名服务器test.baidu.com的NS的IP。我返回给你这个地址你再去查主机为a的主机把。

    这些域内的域名服务器都称为权威服务器,直接提供DNS查询服务。(这些服务器可不会做递归哦)

    四.解析过程

    那么我们的DNS是怎么解析一个域名的呢?

    1.现在我有一台计算机,通过ISP接入了互联网,那么ISP就会给我分配一个DNS服务器,这个DNS服务器不是权威服务器,而是相当于一个代理的dns解析服务器,他会帮你迭代权威服务器返回的应答,然后把最终查到IP返回给你。

    2.现在的我计算机要向这台ISPDNS发起请求查询www.baidu.com这个域名了,(经网友提醒:这里其实准确来说不是ISPDNS,而应该是用户自己电脑网络设置里的DNS,并不一定是ISPDNS。比如也有可能你手工设置了8.8.8.8)

    3.ISPDNS拿到请求后,先检查一下自己的缓存中有没有这个地址,有的话就直接返回。这个时候拿到的ip地址,会被标记为非权威服务器的应答

    4.如果缓存中没有的话,ISPDNS会从配置文件里面读取13个根域名服务器的地址(这些地址是不变的,直接在BIND的配置文件中),

    5.然后像其中一台发起请求。

    6.根服务器拿到这个请求后,知道他是com.这个顶级域名下的,所以就会返回com域中的NS记录,一般来说是13台主机名和IP。

    7.然后ISPDNS向其中一台再次发起请求,com域的服务器发现你这请求是baidu.com这个域的,我一查发现了这个域的NS,那我就返回给你,你再去查。

    (目前百度有4台baidu.com的顶级域名服务器)。

    8.ISPDNS不厌其烦的再次向baidu.com这个域的权威服务器发起请求,baidu.com收到之后,查了下有www的这台主机,就把这个IP返回给你了,

    9.然后ISPDNS拿到了之后,将其返回给了客户端,并且把这个保存在高速缓存中。

    下面我们来用 nslookup 这个工具详细来说一下解析步骤:


    从上图我们可以看到:

              第一行Server是:DNS服务器的主机名--210.32.32.1

              第二行Address是: 它的IP地址--210.32.32.1#53

              下面的Name是:解析的URL--    www.jsjzx.com

              Address是:解析出来的IP--112.121.162.168

     
    但是也有像百度这样的DNS比较复杂的解析:

    你会发现百度有一个cname = www.a.shifen.com  的别名。

    这是怎么一个过程呢?

    我们用dig工具来跟踪一下把(Kali linux系统自带有)

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    Dig工具会在本地计算机做迭代,然后记录查询的过程。


    第一步是向我这台机器的ISPDNS获取到根域服务区的13个IP和主机名[b-j].root-servers.net.。

    第二步是向其中的一台根域服务器(Servername就是末行小括号里面的)发送www.baidu.com的查询请求,他返回了com.顶级域的服务器IP(未显示)和名称,

    第三步,便向com.域的一台服务器192.33.4.12请求,www.baidu.com,他返回了baidu.com域的服务器IP(未显示)和名称,百度有四台顶级域的服务器

         【此处可以用dig @192.33.4.12 www.baidu.com查看返回的百度顶级域名服务器IP地址】。


    第四步呢,向百度的顶级域服务器(202.108.22.220)请求www.baidu.com,他发现这个www有个别名,而不是一台主机,别名是www.a.shifen.com。
     
    解释:上面的每个图的每一行都表示一条记录,至于这条记录是哪种类型,取决于第四个字段,CNAME表示别名,NS表示权威域名服务器的域名,A表示查询域对应的IP。
    例如:上图第一条记录是别名记录,表示www.baidu.com的别名为www.a.shifen.com;
             上图第二条记录是NS记录,表示域a.shifen.com的权威域名服务器的域名为ns2.a.shifen.com。   

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    总结:

             ①本机向local dns请求www.baidu.com

             ②local dns向根域请求www.baidu.com,根域返回com.域的服务器IP

             ③向com.域请求www.baidu.com,com.域返回baidu.com域的服务器IP

             ④向baidu.com请求www.baidu.com,返回cname www.a.shifen.com和a.shifen.com域的服务器IP

             ⑤向root域请求www.a.shifen.com

             ⑥向com.域请求www.a.shife.com

             ⑦向shifen.com请求

             ⑧向a.shifen.com域请求

             ⑨拿到www.a.shifen.com的IP

             ⑩localdns返回本机www.baidu.com cname www.a.shifen.com 以及 www.a.shifen.com的IP

    命令使用:

    dig +trace www.baidu.com

    dig www.baidu.com

    转载
  • 相关阅读:
    基于分布式思想下的RPC解决方案--笔记
    前端对页面展示修改出现的问题------行内块元素(标签)、行内元素(标签)、块元素(标签)的区别
    POI读取带有图片(图片有的是合并单元格的)的商品列表Excel
    Springboot 默认加载文件(可直接访问、不可直接访问)是出现的问题
    for循环快还是递归快
    try catch finally 中遇到的return问题(经典)
    为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作
    数据结构Java实现03----单向链表的插入和删除
    匿名内部类详解(粗略)
    非法字符: 'ufeff' idea下的解决方案
  • 原文地址:https://www.cnblogs.com/balabalala/p/9395176.html
Copyright © 2011-2022 走看看