记录我的成长吧~

 推荐连接:

目录:
dns服务基础
bind9安装配置
bind9正反向区域及主从同步
bind的高级应用
 
DNS服务基础

套接字通信的传输控制层:

Sockets:

基于套接字的通信绝大多数是C/S架构:
   Client:发起应用请求的程序;
   Server:响应请求(提供服务)的程序;
        LISTEN: Socket

传输层协议: TCP, UDP, SCTP

TCP: Transmission Control Protocol
    面向连接的协议:双方通信之前需要事先建立虚连接;
UDP:User Datagram Protocol
    无连接的协议:双方无须通信之前需要事先建立虚连接;

 


内核中接收缓冲与发送缓冲

接收缓冲:
    本机有多种服务基于TCP协议的,并接收多种协议(http\ftp)数据请求:在tcp层为了完成这些请求,因为本地处理速度比对方发送报文慢一点,因此内核会再内核内存空间找个位置当作接收报文的缓冲空间(接收缓冲)
发送缓冲:
    网卡只有一块,我们可以认为它的发信通路只有一个,而网卡是电气设备一次只能向外发送一个报文;如果10个程序过来发报文,网卡由于带宽等原因,真正向外发送的速度比从程序那里接收过来的速度要慢一些;为了不让程序排队,本地可以建立发送缓冲;

问题两边可能可用缓冲区大小并不相同:
    站在TCP角度讲,滑动窗口就是告诉对方自己能接收的数据大小;
接收缓冲_接收缓冲


TCP连接会在有限的状态间进行转换:
  在TCP传输连接的建立和释放中的通信双方主机的这些状态称之为“有限状态机”(Finite State Machine,FSM)。

状 态         描述
CLOSED          #呈阻塞、关闭状态,表示主机当前没有活动的传输连接或正在进行传输连接
LISTEN          #呈监听状态,表示服务器正在等待新的传输连接进入
SYN RCVD        #表示主机已收到一个传输连接请求,但尚未确认
SYN SENT        #表示主机已经发出一个传输连接请求,等待对方确认
ESTABLISHED     #传输连接建立,通信双方进入正常数据传输状态
FIN WAIT 1      #(主动关闭)主机已经发送关闭连接请求,等待对方确认
FIN WAIT 2      #(主动关闭)主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
TIMED WAIT      #完成双向传输连接关闭,等待所有分组消失
CLOSING         #双方同时尝试关闭传输连接,等待对方确认
CLOSE WAIT      #(被动关闭)收到对方发来的关闭传输连接请求,并已确认
LAST ACK        #(被动关闭)等待最后一个关闭传输连接确认,并等待所有分组消失   


应用层协议 DNS  

DNS: Domain Name Service, 应用层协议
  C/S架构,DNS协议运行在53/udp,用来解析的、53/tcp端口,用来做区域传送。


FQDN(Full Qualified Domain Name) 完全限定域名,全局唯一  
  FQDN是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全域名中包含的信息可以看出主机在域名树中的位置

名称解析:简单来讲就是名称转换
  早些时候主机只有几十台,主机之间通信时候的名称转换通过主机本地的hosts文件进行名称解析,我们可以把hosts文件当成一个数据库,存放了主机的ip地址和hostname以及它们的别名(alias),但要想基于主机名来进行通信,还需要一个通用的应用层来实现主机名解析,所以就需要在主机的标准库中定义库文件,这就是getipbyhostname()库和gethostnamebyip()库,当主机想要进行网络间通信时都可以调用这两个库,库文件会通过当前的主机名调或者ip为键来查找hosts文件中与之对应的ip地址或者是主机名,从而就达到了通信的目的。但当主机数量越来越多的时候,再使用这种机制就会很慢,而且这个hosts文件也会太过庞大。后来IANA就通过设置一个DNS服务器来统一完成这些机制,从而解决了这些时效性等问题,但hosts文件这种机制并没有被抛弃,库调用会首先查找当前主机本地的hosts文件如果查找不到就去DNS服务器中查找。

名称解析方式之正向解析
DNS服务器中采用了倒置的树结构,首先在DNS服务器中会有有一个根域(类似于文件系统中的根文件系统),而后在根域后又划分出多个顶级域(TLD),
tld:Top Level Domain

域名分层设计:倒置树状结构,上级包含下级,全球只有13个根节点
分布式数据库系统:将一个大的书库分割成多个小的数据库,分布式管理
组织域:.com, .net, .org, .gov, .edu, .mil
国家域:.iq, .tw, .hk, .jp, .cn, ...
在顶级域后个人或组织可以自己申请二级域来使用。

DNS查询类型:

   递归查询:从客户机到自己所指向的DNS服务器
   迭代查询:从分布式DNS系统顶端开始查询

DNS名称解析方式:

   名称 --> IP:正向解析,名称树
   IP --> 名称:反向解析,IP树
        例如一个IP地址:222.211.233.244,其逆向域名表达方式为:244.233.221.222.in-addr.arpa
   注意:二者的名称空间,非为同一个空间,即非为同一棵树;因此,也不是同一个解析库;

DNS服务器类型:

   负责解析至少一个域:主名称服务器; 辅助名称服务器;
   不负责域解析: 缓存名称服务器;

DNS解析

一次完整的查询请求经过的流程:

  首先查找本机HOSTS表,有就直接使用表中定义,无查找网络连接中设置的DNS 服务器由他来解析

Client --> hosts文件 --> DNS Local Cache --> DNS  Server (recursion) -->
    1、自己负责解析的域:直接查询数据库并返回答案;
    2、不是自己负责解析域:Server Cache --> iteration(迭代)
   
解析答案分类:
    肯定答案:存在查询的键;
    否定答案:不存在查询的键,因此,不存在与其查询键对应的值;
   
    权威答案:由直接负责的DNS服务器返回的答案;
    非权威答案:不是由直接负责的DNS服务器返回的答案;比如由本地DNS服务器从缓存返回的答案;

主-辅DNS服务器:

主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;
从DNS服务器:从主DNS服务器那里或其它的从DNS服务器那里“复制”一份解析库;但只能进行读操作;
    “复制”操作的实施方式:
         1、序列号:serial, 也即是数据库的版本号;主服务器数据库内容发生变化时,其版本号递增;最长不要超过10位;
         2、刷新时间间隔:refresh, 从服务器每多久到主服务器检查序列号更新状况;
         3、重试时间间隔:retry, 从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;
         4、过期时长:expire,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务;
         5、否定答案的缓存时长:
        
    但主服务器不会只等待刷新时间到来时去同步从服务器,当主服务器数据更新后但并没有到达刷新时间时,它也会自动“通知”从服务器随时更新数据。
   
主服务器同步方式:
    区域传送:
         全量传送:axfr, 第一次同步时,传送整个数据库;
         增量传送:ixfr, 仅传送变化的数据;



区域(zone)和域(domain)的区别:

bamaface.com域:
    FQDN --> IP:  正向解析库;正向解析区域
    IP --> FQDN:  反向解析库;反向解析区域
    区域是物理概念(解析库),域是逻辑概念;


区域数据库文件:

资源记录:Resource Record, 简称rr;
    记录有类型:A, AAAA, PTR, SOA, NS, CNAME, MX
   
SOA:        Start Of Authority,起始授权记录; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;
NS:         Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
A:          Address, 地址记录,FQDN --> IPv4;
AAAA:       地址记录, FQDN --> IPv6;
CNAME:      Canonical Name,别名记录;
PTR:        Pointer,IP --> FQDN
MX:         Mail eXchanger,邮件交换器; 其有优先级概念,范围为0-99,数字越小优先级越高;

 资源记录的定义格式:

语法:     name       [TTL]      IN     RR_TYPE           value
     name:   1、正向name:FQDN;2、反向name:IP
     TTL:    一条域名解析记录在DNS服务器上缓存时间;可以统一定义,每条定义记录中省略从全局继承;
     IN:     关键字,不能省略;
     RR_TYPE:资源记录的类型;
     value:  值,可以包含多段组成;

SOA:Start Of Authority:

    name: 当前区域的名字;例如”bamaface.com.”,或者“2.3.4.in-addr.arpa.”;点不可省;
    value:有多部分组成
         (1) 当前区域的区域名称(也可以使用主DNS服务器名称);
         (2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
         (3) (主从服务协调属性的定义以及否定答案的TTL) ;也可以写在一行中用空格隔开;
              时间单位:M(分),H(时),D(天),W(天),M(月)
             
    例如:
          bamaface.com.      86400      IN           SOA      bamaface.com.      admin.bamaface.com.  (
                        2017010801     ; serial序列号
                        2H                ; refresh刷新时长
                        10M           ; retry重试时长
                        1W               ; expire过期时长
                        1D               ; negative answer ttl否定答案的TTL
         )    

NS:Name Service

    name: 当前区域的区域名称
    value:当前区域的某DNS服务器的名字,例如ns.bamaface.com.;
         注意:一个区域可以有多个ns记录;
        
    例如:
         bamaface.com.      86400      IN      NS       ns1.bamaface.com.
         bamaface.com.      86400      IN      NS       ns2.bamaface.com.

MX:Mail eXchanger

    name: 当前区域的区域名称
    value:当前区域某邮件交换器的主机名;
         注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;
        
    例如:
         magedu.com.           IN      MX      10       mx1.magedu.com.
         magedu.com.           IN      MX      20       mx2.magedu.com.

A:Address FQDN --> IPv4;

    name:某FQDN,例如www.magedu.com.
    value:某IPv4地址;
   
    例如:
         www.bamaface.com.          IN      A     1.1.1.1  #同一个主机可以有多个记录
         www.bamaface.com.          IN      A     1.1.1.2
         bbs.bamaface.com.         IN      A     1.1.1.1 #同一个主机可以有多个名字

AAAA:Address FQDN --> IPv6;

    name:FQDN
    value: IPv6

PTR:Pointer

    name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.;
    value:FQND
   
    例如:
         4.3.2.1.in-addr.arpa.       IN  PTR     www.bamaface.com.

CNAME:Canonical Name

    name:FQDN格式的别名;
    value:FQDN格式的正式名字;
   
    例如:
         web.bamaface.com.       IN       CNAME  www.bamface.com.
注意:
   (1) TTL可以从全局继承;
   (2) @表示当前区域的名称;
   (3) 相邻的两条记录其name相同时,后面的可省略;
             www.bamaface.com.          IN      A     1.1.1.1 
                                   IN      A     1.1.1.2
             bbs.bamaface.com.         IN      A     1.1.1.1              
   (4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录;

  

 






 

 

 

 

 

转载请注明出处:http://www.cnblogs.com/jasperhsu/p/5117101.html

posted on 2016-01-09 19:47  徐长伟  阅读(296)  评论(0编辑  收藏  举报