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. jmeter__编写脚本学习笔记、备忘

    web持续添加 前言: 1. token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件:也叫关联 2. cookie就是写在客户端的一个txt文件,里面包括你登录信息之 ...

  2. 第一篇:docker 简单入门(一)

    本篇目录 写在最前面的话 docker概念介绍 镜像的概念.容器的概念 docker的安装介绍 写在最前面的话 由于此类文章博客园鉴定为简单文章,所以已经移到csdn[https://blog.csd ...

  3. Linux系统-scp简介&坑

    文件请见这里: https://blog.csdn.net/xingxingzhilong/article/details/82909015

  4. css 14-CSS3属性详解:Web字体

    14-CSS3属性详解:Web字体 #前言 开发人员可以为自已的网页指定特殊的字体(将指定字体提前下载到站点中),无需考虑用户电脑上是否安装了此特殊字体.从此,把特殊字体处理成图片的方式便成为了过去. ...

  5. C4 模型 - 可视化架构设计

    前言 世界上最难的两件事是: 1. 把我的思想放进你的脑袋 2. 把你的钱放进我的口袋 第二点我们不探讨,因为这是众所周知的,不信?过来试试:) 对于第一点,对我们程序员来说,其实也是我个人一直强调的 ...

  6. 【进程/作业】篇章一:Linux进程及其管理(进程的管理基础)

    概述:监控系统各方面的性能,保障各类服务的有序运行,是运维工作的重要组成部分,本篇就介绍一次常用的系统监控命令和相关的参数说明 具体包含以下几部分: 1.进程的管理基础 ,主要是讲一下概念性的东西 2 ...

  7. Spring源码深度解析之Spring MVC

    Spring源码深度解析之Spring MVC Spring框架提供了构建Web应用程序的全功能MVC模块.通过策略接口,Spring框架是高度可配置的,而且支持多种视图技术,例如JavaServer ...

  8. intellij IDEA Mybatis入门案例

    最近打算学习ssm框架  Mybatis 作为入门的第一个持久层框架,学习起来实在费劲.故写此文章作为入门案例. 先打开 IDEA建立一个Maven项目,目录结构如下: 源代码已经上传至GitHub ...

  9. JAVA基础之this关键之理解

    突然觉得有几个知识点需要先复习一下 1.引用和对象并不一定要同时存在,可以只有引用,没有对象  :比如声明String  a;如果非得提供一个比喻,可以用电视遥控器和电视来做比喻,遥控器比喻引用,电视 ...

  10. C语言中一维数组

    (1)输出数组元素 #include<stdio.h> int main() { int index; /*定义循环变量*/ int iArray[6]={0,1,2,3,4,5}; /* ...