DNS: domain name server  协议(C/S 53/UDP 53/TCP);
    应用层协议; BIND bekerley internet name domain -> ISC

    TCP:面向连接的协议
    UDP:无连接的协议

    本地名称解析文件:hosts(主机有限时候可用)
        /etc/hosts
        %WINDOWS%/system32/drivers/etc/hosts

DNS的树状结构(namespace)
DNS基础与bind的安装

Top:
    com    cn    net     org    int    mil    gov……

    三类: 组织域,国家域(.cn  .hk  .tw ),反向域
查找顺序:
    自顶向下
    但是互联网上的任何一台主机都不会去依次查找主机,会先去找dns服务器,这台服务器去替
    客户端主机查找。
查询类型:
    一台客户端主机仅发送一次请求就获得最终结果的称为递归查询;
    服务器主机多次发出查询请求获取最终结果的称为迭代查询
名称服务器:负责解析本域内的名称的主机(ns)
    根服务器:异地多活;13组服务器
解析类型:
    Name --> IP
    Ip <-- Name

    注意:正反向解析是两个不同的名称空间,是两棵不同的解析树;

DNS服务器类型
    主DNS
        维护所负责解析的域内解析库服务器,由管理员维护
    辅助DNS
            从DNS服务器要从主DNS或者其他从DNS服务器那里复制(区域传送)一份解析库;
            序列号,解析库的版本号,前提任何时候主服务器解析库内容发生变化,其序列号递增
            刷新时间:从服务器从主服务器请求同步解析库的时间间隔,
            重试时间:从服务器请求同步失败时候再试的时间间隔
                重试时间小于刷新时间
            “通知”机制:主服务器在发生改变之后会主动通知从服务器进行同步
        过期时长:从服务器始终联系不到主服务器时候,多久放弃从服务器角色,停止提供服务
        区域传送:
            全量传送:传送整个解析库
            增量传送:传递解析库变化的那份内容

    缓存DNS         不负责解析任何域,不注册任何域名,但是它可以帮助本地主机解析域名,做缓存
    转发器

DNS:domain
        正向:FQDN--> IP
        反向:IP-->FQDN 
        正向反向各个都需要一个解析库负责本地的正向 反向解析
            正向区域
            反向区域
        FQDN: 完全合格域名(full qualified name)
                www.magedu.com.(点不能被省略)
一次完整的查询请求经过的流程
          Client --> hosts file --> dns service 
        Local cache --> DNS server(recursion) --> server cache --> iteration(迭代) -->
        解析答案:
            肯定答案:正确解析了请求的结果
            否定答案:请求条目不存在等原因导致无法返回结果。

            权威答案:负责该域的服务器直接给出的答案
            非权威答案:非负责该域的服务器给出的答案
资源记录:resource record, RR
    记录类型:A,AAAA(ipv6),PTR,SOA,NS,CNAME,MX

    SOA: start authority;起始授权记录,一个区域解析库有且只能有一个SOA记录,必须为解析库的第一条记录
    A:inernet address 作用:FQDN-->IP
    AAAA:FQDN -->ipv6
    PTR:pointTER IP--> FQDN
    NS:name server :专门用于标明当前区域的DNS服务器
    CNAME:canonical name: 别名记录
    MX:mail exchanger 邮件交换器

    资源记录定义的格式
        语法:name     [TTL]   IN  Rr_type value 
        注意:
            (1)TTL可以从全局继承
            (2)@可以用于引用当前区域的名字
            (3)同一个名字可以通过多条记录来定义多个不同的值;此时DNS服务器会轮询方式响应
            (4)同一个值有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅仅表示
                通过多个不同的名字可以找到同一个主机而已
        SOA
            Name:当前区域的名字 例如:Douma.com
            value:有多部分组成
                (1)当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字
                (2)当前区域管理员的邮箱地址,但是地址中不能使用@符号,一般用.替换,
                    例如:linuxedu.magedu.com;
                  (3)(主从服务协调属性的定义以及否定的答案的统一TTL)
                Ps:
                    Magedu.com  86400   IN  SOA ns.Douma.com.   nsadmin.Douma.com.
                                2015042201  序列号
                        2H  刷新时间
                        10M 重试时间
                        1W  过期时间
                        1D  否定答案的TTL值
                )
        NS 
            Name : 当前区域的名字
            value:   当前区域的某DNS服务器的名字 ps: ns.Douma.com.;
                注意:一个区域可以有多个NS记录
                ps:
                    Douma.com   IN  NS  ns1.Douma.com.
                    Douma.com   IN  NS  ns2.Douma.com.

                注意:
                    (1)相邻的两个资源记录的name相同时,后续可以省略
                    (2)对NS记录而言,任何一个ns记录后面的FQDN,都应该在后面有一个A记录

        MX记录
            name:当前区域的名字
            value:当前区域的某邮件服务器(smtp服务器)的主机名
                一个区域内,NS记录可以有多个;但是每个记录的value之前应该有一个数字(0-99),
                表示此服务器的优先级;数字越小,优先级越高。
                例如:
                douma.com.  IN  MX  10  mx1.Douma.com.
                    IN  MX  20  mx2.Douma.com.
                注意:
                    (1)对MX记录而言,任何一个MX记录后面的FQDN,都应该在后面有一个A记录
        A:
            name:某主机的FQDN,例如:www.Douma.com.
            value:主机名对应主机的IP地址
            例如:
                www.Douma.com.  IN  A   1.1.1.1
                www.Douma.com.  IN  A   1.1.1.2

                mx1.douma.com.  IN  A   1.1.1.3
                mx2.douma.com.  IN  A   1.1.1.3
            注意:
                *.douma.com.    IN  A   1.1.1.4
                douma.com.  IN  A   1.1.1.4

                避免用户写错名称时候给错误答案,可以通过泛域名解析至特定地址;

        AAAA:
            name:FQDN
            value:IPV6
        PTR:
            name:IP 有特定格式,把IP地址反过来写,1.2.3.4;要写成4.3.2.1; 
                    有特定后缀: in-addr.arpa. 完整写法为:4.3.2.1.in-addr.arpa.
            value: FQDN
            例如:
                4.3.2.1.in-addr.arpa.   IN  PTR www.Douma.com.
                若1.2.3为网络地址,则可以简写为
                    4   IN  PTR www.Douma.com.

                注意:网络地址以及后缀可以省略,但是主机地址仍然需要反着写;

        CNAME
            name:别名的FQDN
            value:正式名字的FQDN
                例如
                    web.Douma.com.  IN  CNAME   www.Douma.com.

        BIND:
            RR类型: A   PTR   NS   MX    CNAME  SOA  AAAA
            子域授权:每个域的名称服务器都是由其上级名称服务器在解析库进行授权
                类似根域授权tld:
                    .com.   IN  NS  ns1.com.
                    .com.   IN  NS  ns2.com.
                    ns1.com.    IN  A   2.2.2.1
                    ns2.com.    IN  A   2.2.2.2
                Douma.com.在.com的名称服务器上,解析库中添加资源记录
                    Douma.com.  IN  NS  ns1.Douma.com.
                    Douma.com   IN  NS  ns2.Douma.com.
                    Douma.com.  IN  NS  ns3.Douma.com.
                    ns1.Douma.com.  IN  A   3.3.3.1
                    ns2.Douma.com.  IN  A   3.3.3.2
                    ns3.Douma.com.  IN  A   3.3.3.3

                    Glue record :粘合记录
                域名注册:
                    代理商;万网,新网;godaddy
                    注册完成之后,想自己用专用服务器来解析?
                    (1)管理后台,把NS记录指向的服务器名称,和A记录指向的服务器地址;

                BIND安装配置:
                    dns服务,程序包名bind ,程序名named
                    程序包:
                        bind-libs
                        bind-utils(提供了4个测试工具dig nslookup nslookup host)
                        bind

                        bind-chroot /var/named/chroot/

                BIND
                    服务脚本:/etc/rc.d/init.d/named
                    主配置文件: /etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
                    解析库文件:/etc/named/ZONE_NAME
                        注意:
                            (1)一台物理服务器可以同时为多个区域提供解析;
                            (2)必须要有根区域文件;named.ca
                            (3)应该有两个甚至更多实现localhost和本地回环地址的解析库;
                                named.localhost /  named.loopback

                    Rndc: remote name domain controller ,默认与bind安装在同一主机,
                        且只能通过127.0.0.1来连接named进程;提供辅助性的管理功能;953/tcp

                BIND的安装:
                    yum install -y bind
                                    rndc
                    rndc --> rndc (953/tcp)
                    rndc COMMAND
                        reload :重新载入主配置文件和区域解析库文件
                        reload zone 重载区域解析库文件
                        retransfer zone 手动启动区域传送过程,而不管序列是否增加
                        notify zone 重新对区域传送发通知
                        reconfig 重载主配置文件
                        querylog 开启或者关闭查询日志(会直接写入磁盘 磁盘压力大)
                        status 查看状态
                        trace [num]递增调试等级(直接调到多少等级)