本文出自   http://blog.csdn.net/shuangde800

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

域名

 
IP地址往往难以记忆,所以我们一般使用域名进行管理
 
www.google.com
 
域名分为三个部分,用“.”(点)分割。严格的域名最后还有一个".",但一般省略不写。
     -类型     标识此域名的类型(com/net/org/edu/gov等)
     -域名     域名称
     -主机名  该域中的某台主机名称
 
 
www: 主机名
google:域名
com: 类型
 
 

 

DNS

 
  • 每个域名代表一IP,而DNS就是用来在IP与域名之间进行转换的服务
 
www.google.com   <--->  74.125.128.105
 
 
  • DNS(Domain Name System)服务由DNS服务器提供
 
 
 

DNS客户端

 
  • 我们日常使用的支持网络的计算机一般都是作为一个DNS客户端使用,应用程序、服务、进程等等通过操作系统底层的功能发起对dns服务器的查询,对特定域名进行解析
  • Linux中一般使用系统底层提供的gethostbyname()功能进行域名解析
  • 解析可以基于以下几种方式进行:

1) 文件(/etc/hosts、/etc/networks)

下面是/etc/hosts,可以看到这个文件把localhost解析为127.0.0.1以及其它的一些解析
 
在查DNS之前都会先查这个文件,所以黑客可能会通过修改这个文件,让用户进入一些钓鱼网站。
 
下面是/etc/networks文件
 
 
 

2)DNS

几乎所有的域名都是通过DNS域名服务器来解析的。DNS配置文件是在 /etc/resolv.conf文件下,里面配置DNS服务器

3) NIS

这个用得比较少,基本被淘汰掉了

  • 可以通过配置文件 /etc/nsswitch.conf控制查询顺序

其中的host:files   dns .... 这一行是控制顺序的


DNS专用查询命令

  • 命令host可用于进行dns查询:

$ host  www.google.com

  • 命令dig也可进行dns查询,输出较为详细的信息:

$ dig  www.google.com

 
  • 命令host、dig都不会使用/etc/nsswitch.conf的配置,只有会通过/etc/resolv.conf进行dns查询。即会绕过前面那个文件配置。
 
 
 

 

DNS查询

 
DNS是一个树状结构,查询的时候根据域名从右到左查询,域名每一级有独立的一个或多个服务器。
 
例如,www.linuxcast.net.
 
最上面的"."是根域名服务器(root DNS Server),用来保存下一级的com/net...的地址,全球共有13台根域名服务器。这13台根域名服务器中名字分别为“A”至“M”,其中10台设置在美国,另外各有一台设置于英国、瑞典和日本。
 
第二级是顶级域名服务器(Top Level Server),每个顶级域名服务器都是由一台或多台服务器控制的,每个一分别保存相应的以/com/net/org/....为后缀的域名的管理。
 
第三级是授权服务器(Authoritative Server),只负责linuxcast以下的信息。这里可以查找到www, mail, 和ftp主机。
 
  • $  dig  +trace  www.linuxcast.net
      这个命令可以追踪整个域名的查询过程
 
可以发现查询顺序是: . ——》net. ——》linuxcast.net. ——》www.linuxcast.net.
 

 

DNS的查询类型

 
1.  迭代查询(Iterative Query)
 
例如客户端用迭代查询的方式访问www.linuxcast.net:
 
 
1. 首先客户端发送请求到本地DNS服务器(Local DNS Server,即客户端配置的DNS服务器)
2. 如果本地DNS不知道这个域名的话,就会去查询根域名服务器
3. 根服务器返回.net服务器的地址
4. 然后本地DNS在去查询net服务器
5. net服务器返回linuxcast.net的地址
6. 本地DNS再向Linuxcast.net发送请求
7. linuxcast.net返回www主机给本地DNS
8. 本地DNS返回www.linuxcast.net的地址给客户端。
 
 
2. 递归查询(Recursive  Query)
例如客户端用递归查询的方式访问www.linuxcast.net:
 
1. 首先客户端发送请求到本地DNS
2. 如果本地DNS不知道这个地址的话,那么就会向根DNS服务器查询。
3. 然后根DNS服务器不会像迭代查询一样返回net地址,而是它会代替本地dns向net服务器发送请求查询
4. 然后net服务器也不会像迭代查询一样返回linuxcast.net的地址,而是代根DNS服务器向linuxcast.net查询
5. 最后linuxcast.net服务器返回www主机的地址给net
6. net服务器返回www.linucast.net的地址给根DNS服务器
7. 根DNS服务器这时再返回www.linucast.net的地址给本地DNS
8. 最后本地DNS返回目标地址给客户端
 
这种查询方式的缺点:在每一级的服务器上,都会缓存大量的信息,因为它要等待查询返回,可能会占用大量的内存。
 
所以实际应用中,会结合这两种方式使用,即在客户端向本地DNS服务器查询是使用递归查询,而本地DNS服务器和其他级服务器使用的是迭代查询!
 
 

 

资源记录

 
在DNS服务器上,DNS的信息通过一个叫做资源记录(RR,Resource Record)的格式进行保存,RR不仅能够保存域名到IP地址的对应信息,还能够保存很多其它信息。
 
资源记录(RR,Resource Record)常用的属性:
      - NAME(名称)
      - CLASS(类别)
      - TYPE(类型)
      - RDATA(数据)
 
如,
NAME CLASS TYPE RDATA
www IN(Internet) A   192.168.1.1
mail IN A 192.168.1.2
server1 IN CNAME   www
  IN MX  10 mail.linuxcast.net
 
 

资源记录类型

 
DNS的资源记录可以记录很多类型资源,而不仅仅是IP地址,常见的资源记录类型:
 
类型 表示内容
A IPv4地址
AAAA IPv6地址
MX     邮件记录
CNAME 别名
PTR 指针(逆向解析)
SRV 服务资源
 
 
 

 

DNS服务器类型

 
  • 主DNS服务器(Primary DNS Server ,Master)
    一个域的主服务器保存该域的zone配置文件,该域所有的配置、更改都在该服务器上进行
 
  • 从服务器(Second DNS Server,Slave)
    从服务器一般作为冗余负载使用,一个域的从服务器从该域的主服务器上抓取zone配置文件,从服务器不进行信息修改,所有的修改与主服务器同步
 
  • 缓存服务器(Caching only Server)
    DNS缓存服务器不存在任何zone文件,仅仅依靠缓存作为客户端提供服务,通常用于负载均衡及加速访问使用
 
 

ZONE

 
在DNS服务器中,一般一个域通过一个ZONE文件保存该域的相关信息,zone文件的格式是标准化的,一个典型的zone配置文件内容如下:
有标准模板
STTL  ID
@ IN  SOA  @rname.invalid. (
                               0    : serial          (序列号,DNS服务器修改过一次序列号加1,从服务器发现序列号和自己不一样就会自动更新)
                               1D  : refresh       (刷新时间,1D=1天)
                               1H  : retry           (重试, 1H=1小时)
                               1W : expire          
                               3H  ); minimum     
(上面一般直接使用默认的就可以)
           NS @
           MX 10   mail.linuxcast.net
www    IN  A     192.168.1.100
mail     IN  A     192.168.1.200
(上面是数据)
 
 

 

高级查询

 
  • 默认dig命令只能查询我们通过dig命令查询其他类型的资源记录:
      $ dig  -t  mx  linuxcast.net
      $ dig  -x  www.linuxcast.net    进行逆向解析
      $ dig  -t  soa  linuxcast.net

DNS基础及域名系统架构的更多相关文章

  1. 1.DNS基础及域名系统架构

    一.域名: IP地址往往难以记忆,所以我们一般使用域名进行管理 www.LinuxCast.net 1.严格的域名最后还有一个".",但一般省略不写 2.域名分为三个部分,用&qu ...

  2. 【Linux】DNS基础(一)

    DNS基础 DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,域名服务器是进行域名(domain name)和与之相对应的IP地址 ...

  3. DNS基础

    什么是DNS? DNS--Domain name system,域名系统,简单来说就是域名和IP地址间的映射关系.当你在浏览器的地址栏输入网址(或域名,如 www,baidu.com)的时候,在网络中 ...

  4. Angular JS从入门基础 mvc三层架构 常用指令

    Angular JS从入门基础  mvc模型 常用指令 ★ 最近一直在复习AngularJS,它是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心 ...

  5. Kubernetes基础概念及架构概述

    Kubernetes 架构 Kubernetes是一个全新的基于容器技术的分布式架构,虽然Kubernetes只有三年,但它是谷歌十几年以来大规模应用容器技术的经验积累和升华的一个重要发展成果.确切的 ...

  6. DNS 基础

    DNS Domain Name System:域名系统,主要用来将域名解析为IP.DNS以及相关系统存在,主要有两个原因: 可以让人容易记住名字,而不是记住IP: 它允许服务器改变IP,但是采用同样的 ...

  7. 4.翻译:EF基础系列--EF架构

    原文地址:http://www.entityframeworktutorial.net/EntityFramework-Architecture.aspx 下面的图形,展示了EF的总体架构: 让我们来 ...

  8. 被动信息收集1——DNS基础 + DNS解析工具 NSLOOKUP使用

    被动信息收集 特点: 基于公开渠道 与目标不直接接触 避免留下一切痕迹 标准參考--OSINT: 美国军方 北大西洋公约组织 名词解释 DNS--Domain Name System 域名系统 因特网 ...

  9. MyBatis 基础搭建及架构概述

    目录 MyBatis 是什么? MyBatis 项目构建 MyBatis 整体架构 接口层 数据处理层 基础支持层 MyBatis 是什么? MyBatis是第一个支持自定义SQL.存储过程和高级映射 ...

随机推荐

  1. idea的修改文件变颜色

    直接用IntelliJ IDEA 拉SVN 工程 时,如下图所示都不勾选可以成功拉取.

  2. kafka C客户端librdkafka producer源码分析

    from:http://www.cnblogs.com/xhcqwl/p/3905412.html kafka C客户端librdkafka producer源码分析 简介 kafka网站上提供了C语 ...

  3. 完全迁移到red hat来的相关问题解决和配置

    默认从光盘iso镜像安装iso-1 时, yum.repos.d只有 packagekit-media.repo, 要从网上下载一个 CentOS-Base.repo文件放到这里. redhat上下载 ...

  4. NOIP2010 引水入城 题解

    http://www.rqnoj.cn/problem/601 今天发现最小区间覆盖竟然是贪心,不用DP!于是我又找到这题出来撸了一发. 要找到最上面每个城市分别能覆盖最下面哪些城市,如果最下面有城市 ...

  5. ExtJS -- ArrayStore

    ArrayStore : // Store for array var myStore = new Ext.data.ArrayStore({ storeId: "arrayStore&qu ...

  6. PHP 线程安全与非线程安全版本的区别深入解析

    Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍 ...

  7. 大数据BI积累

    http://blog.csdn.net/wyzxg/article/category/535869 设计论文:http://www.doc88.com/p-3877368345851.html 自动 ...

  8. padding/margin/border 理解

  9. 如何给wordpress外部链接自动添加nofollow

    wordpress多作者博客可以丰富网站的内容,但同时也会产生一些无关的链接,例如有些投机的人会考虑在文章中随意添加外部链接,如果你不想给这些外部链接传递权重,你需要给这些外部链接加上 rel=&qu ...

  10. 如何编译Apache Hadoop2.6.0源代码

    如何编译Apache Hadoop2.6.0源代码 1.安装CentOS 我使用的是CentOS6.5,下载地址是http://mirror.neu.edu.cn/centos/6.5/isos/x8 ...