DNS基础
什么是DNS?
DNS--Domain name system,域名系统,简单来说就是域名和IP地址间的映射关系。当你在浏览器的地址栏输入网址(或域名,如 www,baidu.com)的时候,在网络中计算机和别的计算机通信是基于IP地址才能找到对方并通信,所以计算机要访问你输入的域名就必须找到这个域名所对应的IP地址是什么,而这个工作就是DNS干的事情,网络上有这样的服务器专门用来建立或维护域名和IP地址的对应关系,这样的服务器就是DNS服务器。
DNS由来历史
- 20世纪60年代末期,美国国防部高级研究计划局(DARPA)开始计划建立一个计算机网络用于内部资源共享,叫ARPAnet。
- 20世纪70年代,ARPAnet只是一个只有几百台计算机节点的网络,计算机之间依靠HOSTS.TXT文件来解析各主机之间的关系。HOSTS.TXT由SRI的网络信息中心(Network Information Center,NIC)来负责维护,由一台单独的主机来负责分发。
- 20世纪80年代初期TCP/IP协议被广范应用于ARPAnet,此时局域网(LAN)的出现使得更多的计算机可以连接在一起,接入网络的计算机也发展到了成千上万台,这种基于TCP/IP协议的本地和区域网络就发展成了Internet主干网络。
- 1988年DARPA终止了ARPAnet试验计划,并拆除了ARPAnet,由美国国家科学基金会投资新建了NSFNET。
- 1995年NSFNET发展成为Internet主干网络。
- 当网络中的主机节点越来越多的时候,HOSTS.TXT逐渐暴露出弊端,主机包含以下几个方面:
- 当时的网络带宽有限,随着节点数的激增HOSTS.TXT也变得越来越大,分发HOSTS.TXT文件带来的网络流量和处理器负载变得让人难以忍受。
- HOSTS.TXT还不能防止有人使用重复主机名的映射关系,如果有相同的主机名称解析将会破坏其它的解析。
- 当HOSTS.TXT传达到网络末稍节点时有可能有的节点信息已发生变化或又新增了一台主机,不能保证一致性。
当HOSTS.TXT不能满足当时的需求的情况下,1984年南加州信息科学研究院的Paul Mockapetris负责设计新的系统来取代HOSTS.TXT,并发布了RFC882和RFC883,用于描述DNS,后来被RFC1034和RFC1035取代,也就是现在DNS的规范,这些规范被其它的RFC所扩充,扩充部分包括:潜在的安全问题,实现问题,管理缺陷,名称服务器的动态更新机制以及保证区域数据的安全性。
DNS的软件实现
- BIND
Paul Mockapetris亲自创建了第一个DNS系统叫JEEVES,在此之后被实现的是BIND(Berkeley Internet Name Domain),它是由Kevin Dunlap为BSD unix系统所编写,现在由Internet Systems consortium负责维护。BIND也是迄今为止普及最广的DNS实现。 - DJBDNS(Dan J Bernstein's DNS implementation)
- MaraDNS
- Name Server Daemon(Name Server Daemon)
- PowerDNS
Dnsmasq
DNS结构概述
- DNS是一个C/S架构的分布式的数据库,由client端发起查询,server端负责应答,将结果返回给client端。DNS采用的是树形(倒立)结构,类似于linux的文件系统,其结构如图所示:

- 处于最顶层的节点叫根域名,以.(点)号表示,全球总共13台根服务器。
- 每个节点及其所对应的子节点形成一颗树,每一个子树都是DNS系统中的一部分,每一颗子树代表着一个Domain(域),每个域又可以再划分为若干个额外的域(称作子域),但是树的深度最多可达127层,实际上根本用不到这么多层。
一个完整的域名表示应该是从树的自下而上的,如:www.163.com.和 mail.163.com.平时我们输入网址并没有输入最后一个.其实是浏览器帮我们自动补上了。每个域名的长度最多有63个字符(不包括.号)
DNS中术语名称
- 域名
树中每个节点都有一个不超过63个字符的域名,任何一个完整域名FQDN(Fully qualified Domain Name)应该是从当前节点至根域以点号分隔来表示,如:www.163.com.DNS中要求在同一个父节点下的子节点不能同名,保证唯一性,但不同父节点下的子节点可以同名 - 域
域分为父域与子域,每个域代表着一颗子树,一个域可能有多颗子树,也就是说一个域可以有多个子域,域是有层级关系的,从域名就可以看出来,如,163域就是com的子域,com域就是根域的子域。 - 授权
域名系统设计的主要目的就是要能实现分散管理,就好比项目经理把一个项目分解成若干个小任务分配给外个员工去做。在域中通常由父域将任务委派给子域完成,父域仅仅保留指向子域数据来源的指针,告诉客户端,你要的信息我已经让谁去处理了,你直接找他吧。 - 名称服务器(nameserver)
存储域命名空间信息的程序叫作名称服务器,名称服务器通常只拥有域命名空间一部分的完整信息,这部分完整信息称作区域(zone),区域的内容可以从文件或另一台名称服务器加载而来,加载过后,这台服务器便可宣称对该区域具有权威。名称服务器又分主从(master,slave),一般slave的区域数据文件从master加载,当master宕机后,slave便可接替master继续工作。 - 区域数据文件,master名称服务器从本机加载的数据文件称为区域数据文件,slave一般配置为从master传送过来的区域数据文件作为备份。数据文件包含了描述区域的资源记录,资源记录描述了区域内所有的主机,并标记了子域的授权情况。
- 资源记录
与域名相关的数据都包含在资源记录中,DNS的资源记录主要有以下几种:- SOA(start of authority 起始授权机构)记录,指名该区域的权威,1个区域文件有且只能有1个SOA记录。
- NS记录,列出该区域的名称服务器
- A记录,名称到IP的映射
- PTR记录,IP到名称的映射
- CNAME记录,别名记录
- MX记录,邮件交换器
- 解析器(resolver)
就是访问名称服务器的客户端程序。当运行在主机上的程序需要从域命名空间中获取信息时就会用到解析器,解析器几乎完全依赖于名称服务器,收集查询指令,向名称服务器发送查询并等待应答,如果没有应答就再次发送。主要任务有以下几个:- 查询名称服务器
- 解释查询信息(可能是资源记录或是错误信息)
- 将信息返回给查询它的程序
递归和迭代
看图就知道

DNS基础的更多相关文章
- 【Linux】DNS基础(一)
DNS基础 DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,域名服务器是进行域名(domain name)和与之相对应的IP地址 ...
- DNS基础及域名系统架构
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
- DNS 基础
DNS Domain Name System:域名系统,主要用来将域名解析为IP.DNS以及相关系统存在,主要有两个原因: 可以让人容易记住名字,而不是记住IP: 它允许服务器改变IP,但是采用同样的 ...
- 1.DNS基础及域名系统架构
一.域名: IP地址往往难以记忆,所以我们一般使用域名进行管理 www.LinuxCast.net 1.严格的域名最后还有一个".",但一般省略不写 2.域名分为三个部分,用&qu ...
- 被动信息收集1——DNS基础 + DNS解析工具 NSLOOKUP使用
被动信息收集 特点: 基于公开渠道 与目标不直接接触 避免留下一切痕迹 标准參考--OSINT: 美国军方 北大西洋公约组织 名词解释 DNS--Domain Name System 域名系统 因特网 ...
- DNS基础概要
dns服务系统由客户端和服务器组成,提供域名到ip地址的解析,或者提供ip地址到域名的逆向解析. 1.DNS域名空间 每个dns域名由分级的label构成,如www.sina.com.cn,由www. ...
- 网络安全(一)主动进攻之DNS基础和ettercap实现DNS流量劫持
alittlemc,个人原创,个人理解和观点.若有错误.不理解请与我联系,谢谢! 介绍了DNS的解析过程. DNS劫持的思路和实践. DNS 域名 以为live.bilibili.com为例子,从后到 ...
- 【RL-TCPnet网络教程】第27章 DNS域名系统基础知识
第27章 DNS域名系统基础知识 本章节为大家讲解DNS(Domain Name System,域名系统),通过前面章节对TCP和UDP的学习,需要大家对DNS也有个基础的认识. (本章的知 ...
- DNS服务基础原理介绍
FQDN 全称域名 localhost(主机名或者是别名).localdomain(域名) FQDN=主机名.域名 根域 . 顶级域名 .com .n ...
随机推荐
- synchronized同步方法《二》
1.synchronized方法和锁对象 (1).验证线程锁的是对象 代码如下: 1.1创建一个MyObject类: package edu.ymm.about_thread4; public cla ...
- WingIDE 常用快捷键
Ctrl+N 新建文件 Ctrl+O 打开文件夹 Ctrl+W 关闭当前文件 Ctrl+S 保存文件 Ctrl+shif+S ...
- SQL Server 2008 分区函数和分区表详解
[摘要]本文详细介绍SQL Server 2008 分区函数和分区表,包括查询某个分区.归档数据.添加分区.删除分区等内容. 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门 ...
- 安卓下设置系统字体大小影响H5页面布局
问题描述: 调整好的h5页面,放在安卓app内嵌页面后布局正常,后来用户调整系统里面字体大小,后内嵌H5布局乱掉 问题分析: 因为用户调整了系统字体的大小,修改了根节点和body节点的font-siz ...
- form标签的 enctype属性
1.enctype的定义: enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码. 默认地,表单数据会编码为 "application/x-www-form-urlencod ...
- 全面了解TCP/IP到HTTP
一.OSI参考模型 OSI(Open System Interconnect),即开放式系统互联.一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型.该体系结构标准定 ...
- 2、使用Angular-CLI初始化Angular项目(踩过的深坑!!!)
1.step1:建一个放项目的文件夹,打开cmd,或vs code的终端,找到文件夹根目录 2.step2:初始化脚手架 初始化命令: ng new 项目名称 --skip-install 注意:-- ...
- 微服务-开发框架之springboot by 大雄daysn
目录 一.关于springboot 二.springboot的实践 2.1发布一个rest的api 2.2端点 2.3健康检查 2.4远程监控 一.关于springboot 由来:spring1.0- ...
- IIS SSL证书 指定的登录会话不存在,可能已被终止 HRESULT:0x80070520
指定的登录会话不存在,可能已被终止 HRESULT:0x80070520 IIS导入证书时,选择”允许导出此证书” 服务器证书名称,在mmc控制台中个人证书中命名
- js运行机制
情况一 script标签里面的运行顺序是同步的 遇到settimeout的时候就会变异步,最后执行 执行顺序为1342 情况二 只输出a 情况三 输出4444 异步队列插入的时间和执行时间 for循环 ...