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. oranges 笔记第六章

    OS 第六次实验随笔 第六章6.1-6.3相关的问题 进程状态保存与恢复 哪些状态 何时保存 保存在哪 如何恢复 特权级变换 用户进程到内核 内核回到用户进程 再次理解TSS .堆栈 从外环进入内环( ...

  2. Spring Cloud Ribbon之URL重构(三)

    接着前面的说,前两篇中分析了解析和动态服务列表的获取,这两步完成后那接下来要做的事就是重组解析后的URL路径和发起通信了,这一步完成应该是在前面分析的RibbonLoadBalancerClient. ...

  3. Linux相关-回顾-文件和目录(98.1.1)

    @ 目录 1.linux下的文件系统 2.用户目录 3.Linux 主要目录速查表 关于作者 1.linux下的文件系统 在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录): ...

  4. 10 个 GitHub 上超火的 CSS 奇技淫巧项目,找到写 CSS 的灵感!

    大家好,我是你们的 超级猫,一个不喜欢吃鱼.又不喜欢喵 的超级猫 ~ 如果 CSS 是女孩子,肯定如上图那样吧

  5. JDK、JRE、JVM,是什么关系?

    作者:小傅哥 博客:https://bugstack.cn Github:https://github.com/fuzhengwei/CodeGuide/wiki 沉淀.分享.成长,让自己和他人都能有 ...

  6. 关于git中的merge和rebase

    变基-git官网说明 变基 改变提交的基于分支 和merge不同 合并显示合并记录 变基合并更新后一起提交 不显示合并记录 变基 合并的结果是一致的

  7. springcloud组件gateway断言(Predicate)

    Spring Cloud Gateway是SpringCloud的全新子项目,该项目基于Spring5.x.SpringBoot2.x技术版本进行编写,意在提供简单方便.可扩展的统一API路由管理方式 ...

  8. [转载]Mybatis Generator最完整配置详解

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

  9. 使用Modbus4J进行RTU模式串口通信

    Modus协议是由MODICON(现为施耐德电气公司的一个品牌)在1979年开发的,是全球第一个真正用于工业现场的总线协议,应用非常广泛,可谓大名鼎鼎. 理论性的东西就不多介绍了,推荐一本书<M ...

  10. three.js 中使用多线程以及性能测试

    今天郭先生说一下WebWorker以及WebWorker在three.js中的应用.我们都知道Javascript是单线程的,比如执行js代码的同时UI渲染就会停止,对于多核CPU的点脑,这一点让人难 ...