dns服务系统由客户端和服务器组成,提供域名到ip地址的解析,或者提供ip地址到域名的逆向解析。

1、DNS域名空间

  每个dns域名由分级的label构成,如www.sina.com.cn,由www、sina、com、cn四个label构成,label不区分大小写,每个label长度限制为63个字符,域名总长度限制不超过253个字符。域名按照从左往右方向解析,越往右级别越高。按照rfc规范,每个域名最右边都有一个点,如严格来讲前面新浪的域名应该写成www.sina.com.cn.,注意最后的一个点,表示根域名,这在定义服务器的zone文件时需要特别注意,避免遗漏最后的点。而在实际使用中,为了方便,最后的点通常不用写。

  这里顺便提下,通常所说的域名和全域名FQDN(也叫完全合格域名)的区别。通常情况下,形如www.sina.com.cn的域名,我们称最左边的www的主机名,主机名右边的sina.com.cn为域名,表示了该主机的域名路径。而主机名加上域名则称为FQDN域名。全域名的好处是可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全域名中包含的信息可以看出主机在域名树中的位置。

域名空间中,所有的域名以点(.)为树根形成了一颗层次化的倒置树,如下:

互联网上能够访问的域名是需要申请注册的。如果你想自己管理域名并能被互联网访问,你首先得花钱向专门的域名提供商申请注册,并提供你的域名服务器ip給上一级域名机构进行授权。当然,自己实验用的域名可以随便用,也不会授权,即使和互联网上的域名重复,也不会对互联网上真正的域名产生影响,互联网也访问不到你的域名。

2、DNS服务器

  dns服务器在软件实现上,用ASN.1表示域名数据结构,用X.500进行编码,将域名和IP地址相互映射形成一个分布式DAP类型数据库,使得查询效率非常高。
在windows操作系统上的DNS服务器部署比较简单,而且出错时会提示,通常windows server带有DNS服务。而在linux系统上部署DNS服务器,比较麻烦些,需要安装、配置、启动和测试排错,这里也主要讨论linux下DNS相关的内容。
 
  dns服务端软件用得最多的就是知名的bind系统,该系统是现今互联网上最常使用的DNS服务器软件。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护,一般部署在大型网络中提供服务。而近几年出现的dnsmasq应用,将dns和dhcp功能集成在一起,小巧灵活,多用于规模较小的公司,或者已成为家用路由器的首选。

  2.1、DNS服务器类型

  通常,dns服务器按角色分为两类:

  一、主从服务器。一个域的DNS服务系统由主Primary DNS Server(Master)和Seconday DNS Server(Slave) 从两台服务器两台服务器组成, 主服务器保存该域的zone配置文件,该域所有的配置、更改只能在主服务器上进行 ,而从服务器一般作为冗余负载使用,一个域的从服务器从该域的主服务器上同步(copy)zone配置文件,从服务器不进行信息修改,所有的修改变化由主服务器同步

  二、cache服务器。也就是Caching only Server DNS缓存服务器,该服务器上不存在任何zone文件,仅仅依靠缓存为客户端提供服务,用来加速查询。

  2.2、DNS服务器资源记录类型

  在DNS服务器上,DNS的各种信息通过一个叫做资源记录(RR,Resource Record)的格式进行保存,RR不仅仅能够保存域名到IP地址的映射信息,还能够保存很多其他信息

资源记录格式为:“NAME  CLASS  TYPE  RDATA",不同的记录有不同的属性,有些属性可以省略,通常我们按照type来称呼记录,如SOA记录、A记录、4A记录等,格式如下:

    www           IN   A       130.255.1.1 

    ftpserver     IN   AAAA     2001::1

    mail1          IN   A       130.255.1.254

    server1    IN   CNAME    www

3、DNS客户端

  通常用户不会直接使用dns客户端,在系统中,dns客户端作为一个系统底层服务供上层应用程序、服务、进程使用发起dns域名查询,这些应用如ping应用、浏览器、邮件服务器等,在一些支持dns的路由器、交换机等嵌入式设备中,dns作为客户端模块为系统或其它模块提供域名查询功能。而诸如nslookup、host、dig命令,则是作为dns专用客户端查询工具,具有很多辅助选项和功能,能够对dns服务器各种功能进行比较全面的测试和故障排错。

  在Linux系统中,客户端域名通常基于文件(/etc/hosts、/etc/networks)和DNS服务器 (/etc/resolv.conf) 进行解析。可以通过配置文件/etc/nsswitch.conf控制查询先后顺序,通常情况下如hosts:files dns

DNS基础概要的更多相关文章

  1. 【Linux】DNS基础(一)

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

  2. threejs 基础概要

    threejs 基础概要 点击查看官方文档 下面是翻译的内容(稍作修改) 先了解一下Three.js应用程序的结构.Three.js应用程序需要创建一堆对象并将它们连接在一起.下图表示一个小three ...

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

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

  4. DNS基础

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

  5. DNS 基础

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

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

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

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

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

  8. 网络安全(一)主动进攻之DNS基础和ettercap实现DNS流量劫持

    alittlemc,个人原创,个人理解和观点.若有错误.不理解请与我联系,谢谢! 介绍了DNS的解析过程. DNS劫持的思路和实践. DNS 域名 以为live.bilibili.com为例子,从后到 ...

  9. python学习笔记--基础概要

    1.python的int类型没有大小限制(或者说只受机器内存限制),str类型用单引号或者双引号都行,只要对称就可以了.(注意固定性) 2.使用[]表示存取字符串等序列的某一项(索引从0开始) 3.类 ...

随机推荐

  1. Python的基本介绍

    我认为Python打破了传统语言的各种细节,让我对编程语音有了全新认识 Python的优势: 可移植性高,解释性更加简单,这两点在编程语言发展到现在已经成为不可或缺的一部分,而很多种编程语言能做到这几 ...

  2. f12 Network的解析

    Chrome开发者工具面板 面板上包含了Elements面板.Console面板.Sources面板.Network面板.Timeline面板.Profiles面板.Application面板.Sec ...

  3. matplotlib的学习16-animation动画

    from matplotlib import pyplot as plt from matplotlib import animation import numpy as np fig, ax = p ...

  4. pandas的学习6-合并concat

    import pandas as pd import numpy as np ''' pandas处理多组数据的时候往往会要用到数据的合并处理,使用 concat是一种基本的合并方式. 而且conca ...

  5. maven 报错 Failed to execute goal on project ...: Could not resolve dependencies for project ...

    昨天在研究 项目 遇到这样一个问题 可以看到 上面有三个 模块 jeecg-boot-base-common .jeecg-boot-module-system .jeecg-boot-modules ...

  6. Linux环境下使用logrotate工具实现nginx日志切割

    一. 前提背景及需求 nginx运行日志默认保存在nginx安装目录下的 /usr/local/nginx/logs 文件夹, 包含access.log和error.log两个文件. (1) acce ...

  7. Stream并行流详解

    1.并行与并发的区别 在说到并行的时候,相信很多人都会想到并发的概念.那么并行和并发两者一字之差,有什么区别呢? 并行:多个任务在同一时间点发生,并由不同的cpu进行处理,不互相抢占资源 并行: 并发 ...

  8. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.6)- 串行NOR Flash下载算法(MCUXpresso IDE篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE开发环境下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行N ...

  9. springboot使用aspectJ

    添加springboot-aop的starter <dependency> <groupId>org.springframework.boot</groupId> ...

  10. ArrayList哪种循环效率更好你真的清楚吗

    ArrayList简介 声明:以下内容都是基于jdk1.8的 ArrayList 是一个数组队列,相当于 动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了 ...