zoukankan      html  css  js  c++  java
  • DNS(一)DNS基础

    一、 什么是DNS?
    DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

    二、 域名的层级
    DNS 的分布式数据库是以域名为索引的,每个域名实际上就是一棵很大的逆向树中路径,这棵逆向树称为域名空间(domain name space)。如图所示树的最大深度不得超过127 层,树中每个节点都有一个可以长达63 个字符的文本标号。
    树的最顶层是根域名,一般使用 . 来表示。

    三、 DNS的分类
    1、 主DNS服务器:就是一台存储着原始资料的DNS服务器。
    2、 从DNS服务器:使用自动更新方式从主DNS服务器同步数据的DNS服务器。也成辅助DNS服务器。
    3、 缓存服务器:不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也叫递归服务器。
    4、 转发器:这台DNS发现非本机负责的查询请求时,不再向根域发起请求,而是直接转发给指定的一台或者多台服务器。自身并不缓存查询结果。

    四、 DNS域名的解析过程

    首先,客户端先在本地缓存查找有没有域名缓存,如果没有,客户端发出DNS请求翻译IP地址或主机名。DNS服务器在收到客户机的请求后:
    (1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;
    (2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;
    (3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。
    (4)若没有找到,则返回错误信息。

    递归查询
    是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结构提交给用户。

    迭代查询
    是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。

    五、 dig命令跟踪域名解析
    # dig +trace www.baidu.com

    1、 查询根服务器
    根域名服务器,全球有13组,负责返回顶级域的权威域名服务器地址。

    ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> +trace www.baidu.com
    ;; global options: +cmd
    .                       754     IN      NS      h.root-servers.net.
    .                       754     IN      NS      g.root-servers.net.
    .                       754     IN      NS      c.root-servers.net.
    .                       754     IN      NS      m.root-servers.net.
    .                       754     IN      NS      k.root-servers.net.
    .                       754     IN      NS      l.root-servers.net.
    .                       754     IN      NS      i.root-servers.net.
    .                       754     IN      NS      a.root-servers.net.
    .                       754     IN      NS      j.root-servers.net.
    .                       754     IN      NS      f.root-servers.net.
    .                       754     IN      NS      d.root-servers.net.
    .                       754     IN      NS      b.root-servers.net.
    .                       754     IN      NS      e.root-servers.net.
    ;; Received 239 bytes from 10.31.0.18#53(10.31.0.18) in 0 ms

    2、查询顶级域名服务器
    通过查询顶级域名服务器,获取权威DNS服务器

    com.                    172800  IN      NS      g.gtld-servers.net.
    com.                    172800  IN      NS      i.gtld-servers.net.
    com.                    172800  IN      NS      a.gtld-servers.net.
    com.                    172800  IN      NS      m.gtld-servers.net.
    com.                    172800  IN      NS      f.gtld-servers.net.
    com.                    172800  IN      NS      j.gtld-servers.net.
    com.                    172800  IN      NS      l.gtld-servers.net.
    com.                    172800  IN      NS      k.gtld-servers.net.
    com.                    172800  IN      NS      e.gtld-servers.net.
    com.                    172800  IN      NS      b.gtld-servers.net.
    com.                    172800  IN      NS      h.gtld-servers.net.
    com.                    172800  IN      NS      c.gtld-servers.net.
    com.                    172800  IN      NS      d.gtld-servers.net.
    com.                    86400   IN      DS      30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
    com.                    86400   IN      RRSIG   DS 8 1 86400 20201009170000 20200926160000 46594 . Ncf1dZ8eF6fcsAbRycpXGyJqWESFHsf776rkecUlcXXXAjq71qyJtN2g 5XuqZdn4tHb4JYnH1SOf36P2Gq6NwLa1Q0EtM36I5xPRI9OxBKyF/wzu /pkSqngmKWuWbUYJ9o4BHhuxgHutrgouzZ628qCzOC+78uWg/dK5EOGm 2t1iH8b74sFPd3LtydptuYcAJ3MrhFGvsyespLTAdaOEF63j6LwDCUSs MMDIKnNx+46uuxUmq2K9gQlV2Eq/q1vTkQ7+TgdJhea5K4idHgPD1Vyq wm7SCtHIk0Mq3Hu+0PZW8JXilnc6TS2RaZ9bqLGplcuxuiW3uegTjVIb UzSIrg==
    ;; Received 1173 bytes from 202.12.27.33#53(m.root-servers.net) in 63 ms

    3、 查询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      ns1.baidu.com.
    baidu.com.              172800  IN      NS      ns7.baidu.com.
    CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
    CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20200930044209 20200923033209 24966 com. xChJAuWE/feHPvOG0a2fHr1qGnFCaOWXM3/MAltsC/PS/IXbtuzmgIJZ brsIJCOQZpYusZkbSOJXatbHbUWvqwPrdq8jCKBTWwoSzQZSNWAryJ9u ydKMVHxQmJoUxaiaT8UStYCLRu4bYQj6h19mELbwNwg1QNTLfO65dfvF aMyhkIJ7DkTAWDppKtouPwJ+5JkTrxry+KwJTgNfChF6Ow==
    HPVUSBDNI26UDNIV6R0SV14GC3KGR4JP.com. 86400 IN NSEC3 1 1 0 - HPVVMRO7OPIUUS1A7GJE2R6L39VL43TL NS DS RRSIG
    HPVUSBDNI26UDNIV6R0SV14GC3KGR4JP.com. 86400 IN RRSIG NSEC3 8 2 86400 20201002230005 20200925215005 24966 com. bssYJp0q5Gv07/bUbJQxpCErTiS01VRrxxiiw5gc4BuyT+L2RnpWrHq5 JmLvWDiIXXzMB8iCwMMwNRFnlQHJ3ilAu/ZjoBwYcbeOCAREgm3r3eJI KAOlZvB1mZqStcHTbcRM5KwQ1rwuaJxsSjVrjfK08zp8+1/y88RFbeU1 Ib7BFOFBCRs491LRnQ3Y3YSrVCgKQQ2o0edh4D9OHfIT/g==
    ;; Received 761 bytes from 192.26.92.30#53(c.gtld-servers.net) in 223 ms

    4、最终返回www.baidu.com的解析记录

    www.baidu.com.          1200    IN      CNAME   www.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      ns1.a.shifen.com.
    a.shifen.com.           1200    IN      NS      ns4.a.shifen.com.
    ;; Received 239 bytes from 180.76.76.92#53(ns7.baidu.com) in 3 ms

    六、 胶水记录
    我们先看下www.baidu.com的解析过程
    1、 如果想要获取www.baidu.com的 IP 地址,就需要访问.com顶级域名服务器g.gtld-servers.net.
    2、 如果想要获取g.gtld-servers.net.的 IP 地址,就需要访问net.顶级域名服务器g.gtld-servers.net.
    3、 如果想要获取g.gtld-servers.net.的 IP 地址,就需要访问.net顶级域名服务器g.gtld-servers.net.

    这样就陷入一个循环以来。
    为了解决这一个问题,我们引入了胶水记录(Glue Record)这一概念,也就是在出现循环依赖时,直接在上一级作用域返回 DNS 服务器的 IP 地址:

    # dig +trace +additional www.baidu.com
    com.                    172800  IN      NS      i.gtld-servers.net.
    com.                    172800  IN      NS      e.gtld-servers.net.
    com.                    172800  IN      NS      j.gtld-servers.net.
    com.                    172800  IN      NS      d.gtld-servers.net.
    com.                    172800  IN      NS      b.gtld-servers.net.
    com.                    172800  IN      NS      g.gtld-servers.net.
    com.                    172800  IN      NS      c.gtld-servers.net.
    com.                    172800  IN      NS      m.gtld-servers.net.
    com.                    172800  IN      NS      f.gtld-servers.net.
    com.                    172800  IN      NS      h.gtld-servers.net.
    com.                    172800  IN      NS      l.gtld-servers.net.
    com.                    172800  IN      NS      a.gtld-servers.net.
    com.                    172800  IN      NS      k.gtld-servers.net.
    com.                    86400   IN      DS      30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
    com.                    86400   IN      RRSIG   DS 8 1 86400 20201009170000 20200926160000 46594 . Ncf1dZ8eF6fcsAbRycpXGyJqWESFHsf776rkecUlcXXXAjq71qyJtN2g 5XuqZdn4tHb4JYnH1SOf36P2Gq6NwLa1Q0EtM36I5xPRI9OxBKyF/wzu /pkSqngmKWuWbUYJ9o4BHhuxgHutrgouzZ628qCzOC+78uWg/dK5EOGm 2t1iH8b74sFPd3LtydptuYcAJ3MrhFGvsyespLTAdaOEF63j6LwDCUSs MMDIKnNx+46uuxUmq2K9gQlV2Eq/q1vTkQ7+TgdJhea5K4idHgPD1Vyq wm7SCtHIk0Mq3Hu+0PZW8JXilnc6TS2RaZ9bqLGplcuxuiW3uegTjVIb UzSIrg==
    a.gtld-servers.net.     172800  IN      A       192.5.6.30
    b.gtld-servers.net.     172800  IN      A       192.33.14.30
    c.gtld-servers.net.     172800  IN      A       192.26.92.30
    d.gtld-servers.net.     172800  IN      A       192.31.80.30
    e.gtld-servers.net.     172800  IN      A       192.12.94.30
    f.gtld-servers.net.     172800  IN      A       192.35.51.30
    g.gtld-servers.net.     172800  IN      A       192.42.93.30
    h.gtld-servers.net.     172800  IN      A       192.54.112.30
    i.gtld-servers.net.     172800  IN      A       192.43.172.30
    j.gtld-servers.net.     172800  IN      A       192.48.79.30
    k.gtld-servers.net.     172800  IN      A       192.52.178.30

    七、 DNS中的记录类型
    1、 A记录,IPV4主机地址
    2、 AAAA记录:IPV6主机地址
    3、 PTR记录:解析IP的指针,反向记录
    4、 CNAME记录:别名记录
    5、 NS记录:域的授权名称服务器
    6、 MX记录:域的邮件交换器,要跟着一个优先级值,越小越高
    7、 SOA:可以理解为一段为自己dns做备注说明的文本,一般与ns一致

    八、 DNS命名规范
    1、 26个英文字母
    2、 “0,1,2,3,4,5,6,7,8,9”十个数字
    3、 “-”(英文中的连词号)
    4、 最多63字节长度

    九、 DNS使用的协议
    1、 UDP协议
    域名解析时,使用UDP协议
    2、 TCP协议
    1) 主从DNS服务器之间同步数据
    2) 当返回报文超过4096字节的大小时,协议的TC标志出现删除标志,这时则使用TCP发送。

  • 相关阅读:
    【转】java的string中,关于split空串总会返回单个元素的数组
    【转】Java实现将文件或者文件夹压缩成zip
    单例模式
    数据库隔离级别
    ckeditor+ckfinder
    extremecomponents
    在linux环境下重启oracle数据库,解决密码过期的问题
    20180918 begin
    hadoop免登录
    CentOS环境下通过YUM安装软件,搭建lnmp环境
  • 原文地址:https://www.cnblogs.com/guoxianqi2020/p/13740551.html
Copyright © 2011-2022 走看看