DNS的来由、结构、运作和名称记录详解

如果您为您的机器设定过internet连线那麽您一定接触过DNS了但DNS又是什麽东东呢说穿了DNS是用来帮助记忆网路地址的完全是为了迁就人类的记忆思维而设的。

DNS的全称是Domain Name System当您连上一个网址在URL打上www.ithov.com的时候可以说就是使用了DNS的服务了。但如果您知道这个www.ithov.com的IP地址直接输入209.185.243.135也同样可以到达这个网址。其实电脑使用的只是IP地址而已(最终也是0和1啦)这个www.ithov.com只是让人们容易记忆而设的。因为我们人类对一些比较有意义的文字记忆(如www.ithov.com)比记忆那些毫无头绪的号码(如209.185.243.135)往往容易得多。DNS的作用就是为我们在文字和IP之间担当了翻译而免除了强记号码的痛苦。

假如您的电话有名字记忆功能您只需知道对方的名字就可以拨号给友人了我们可以说这电话也具备如DNS的功能了呢但是我们在网路中使用的DNS系统就是这麽简单吗非也杂得很呢下面就让我们一起去探索一下DNS的奥秘

在早期的IP网路世界里面每台电脑都只用IP地址来表示不久人们就发现这样很难记忆於是一些UNIX的使用者就建立一个HOSTS对应表将IP和主机名字对应起来这样用户只需输入电脑名字就可以代替IP来进行沟通了。如果你安装了Linux系统在/etc下面就可以找到这个hosts档案了在NT的系统里你也可以在\winnt\system32\drivers\etc下面找到它。不过这个HOSTS档是要由管理者手工维护的最大的问题是无法适用於大型网路而且更新也是件非常头痛的事情。这就是DNS大派用场的时候了。

DNS的结构

DNS是一个分层级的分散式名称对应系统有点像电脑的目录树结构在最顶端的是一个“root”然後其下分为好几个基本类别名称如comorgedu等再下面是组织名称如sonytoshibaintel等继而是主机名称如wwwmailftp等。因为当初internet是从美国发起的所以当时并没有国域名称但随着後来internet的蓬勃发展DNS也加进了诸如twhkau等国域名称。所以一个完整的dns名称就好像是这样的www.ithov.com而整个名称对应的就是一个IP地址了。

在开始的时候root下面只有六个组织类别

类别名称 代表意思
edu 教育学术单位
org 组织机构
net 网路通讯单位
com 公司企业
gov 政府机关
mil 军事单位

不过自从组织类别名称开放以後各种各样五花八门的名称也相继现出来了但无论如何取名的规则最好量适合网站性质。除了原来的类别资料由美国本土的NIC(Network Information Center)管理之外其它在国域以下的类别分别由该国的NIC管理。这样的结构看起来就像这样

在结构中各组织的DNS经过申请後由该组织或其委机构管理(通常当您申请册一个domain域名称的时候都要指定两台DNS主机负责该域名的DNS管理)。

DNS的运作

在我们设定IP网路环境的时候通常都要告诉每台主机关於DNS伺服器的地址(我们可以手动的在每一台主机上面设置也可以使用DHCP来设定)。

下面让我们看看DNS是怎样运作的

当被询问到有关本域名之内的主机名称的时候DNS伺服器会直接做出回答
如果所查询的主机名称属於其它域名的话会检查记忆体看看有没有相关资料
如果没有发现则会转向root伺服器查询
然後root伺服器会将该域名之授权(authoritative)伺服器(可能会超过一台)的地址告知
本地伺服器然後会向其中的一台伺服器查询并将这些伺服器名单存到记忆体中以备将来之需(省却再向root查询的步骤)
远方伺服器回应查询
将查询结果回应给客户并同时将结果储存一个备份在自己的快取记忆里面
如果在存放时间尚未过时之前再接到相同的查询则以存放於快取记忆里面的资料来做回应。

从这个过程我们可以看出没有任何一台DNS主机会包含所有域名的DNS资料资料都是分散在全部的DNS伺服器中而NIC只需知道各DNS伺服器地址就可以了。

为了更好地理解一下 DNS 的运作让我们用下图看看查询www.home.netman.com.tw这台主机位址的过程

在这个例子中www.home.netman.com.tw台主机的DNS对应资料是由负责home.netman.com.tw这个域名的DNS伺服器管理的。(在DNS术语中我们称一个域名为“zone”这个zone可以是您从NIC申请回来的域名也可以是从该域名之下延伸出来的“sub-zone”)。在这台DNS伺服器上面必须有一个关於home.netman.com.tw这个zone的档案而这档案里面必须有一笔关於www的记录(任何主机都是以“记录”来表示)。这个记录可以为一个IP地址也可以以别名形式来对应一台主机名称但无论如何所对应的主机名称最终是要被一个IP地址所对应着就是了。

同时DNS还能提供“反查询”(reverse lookup)功能也就是以IP来查询主机名称。网路上面的许多服务如FTP, IRC, WWW等等都需要到这个功能。其实DNS服务本身就必须要使用反查询功能而且在设定上也必须要为每个网路建立起reverse zone。虽然有些人发觉即使没有reverse zone也可以利用到DNS服务但其中弊端却不容易被察觉到在这个(中文)网页http://ns.nctu.edu.tw/Basic/WhenToUse-Rev.html上面您可以看到忽略revers zone所致一些问题。

时间: 2024-09-14 23:09:34

DNS的来由、结构、运作和名称记录详解的相关文章

MySQL多层级结构-区域表使用树详解_Mysql

1.1. 前言 前面我们大概介绍了一下树结构表的基本使用.在我们项目中有好几块有用到多层级的概念.下面我们哪大家都比较熟悉的区域表来做演示.1.2. 表结构和数据 区域表基本结构,可能在你的项目中还有包含其他字段.这边我只展示我们关心的字段: CREATE TABLE `area` ( `area_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '地区ID', `name` varchar(40) NOT NULL DEFAULT 'unkonw' COM

学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程(1)

上节中提到了一些有关递归查询的内容,但说的很少,也很笼统,本节将会从原理和实例两方面入手分析DNS的递归以及迭代查询. 在此之前,我们需要了解一些背景知识,以便于更好的理解今天的主题内容. 在互联网中,一个域名的顺利解析离不开两类域名服务器,只有由这两类域名服务器可以提供"权威性"的域名解析. 第一类就是国际域名管理机构,也就InterNIC,主要负责国际域名的注册和解析,第二类就是国内域名注册管理机构,在中国就是CNNIC了,主要负责国内域名注册和解析,当然,尽管分为国际和国内,但两

C++中声明类的class与声明结构体的struct关键字详解_C 语言

classclass 关键字声明类类型或定义类类型的对象. 语法 [template-spec] class [ms-decl-spec] [tag [: base-list ]] { member-list } [declarators]; [ class ] tag declarators; 参数 template-spec 可选模板说明. ms-decl-spec 可选存储类说明有关更多信息 tag 给定于类的类型名称.在类范围内的标记成为了保留字.标志是可选项.如果省略,定义匿名类. b

基于SQL2005 SQL2008 表结构信息查询升级版的详解(含外键信息)_mssql2005

SELECT 表名=CASE WHEN a.colorder = 1 THEN d.name ELSE '' END, 表说明=CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END , 字段序号=a.colorder , 字段名=a.name , 标识=CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END , 主键=CASE

c语言中位字段与结构联合的组合使用详解_C 语言

举例:=================================================== 复制代码 代码如下: /** INITRM - Initialization of internal ram position register; 0x0000 0010 **/ typedef union {    byte Byte;    struct {       byte RAMHAL :1;       byte :1;       byte :1;       byte

基于结构体与指针的详解_C 语言

结构指针变量:结构指针变量的说明和使用一个指针变量用来指向一个结构变量时结构指针变量中的值是所指向的结构变量的首地址.通过结构指针即可访问该结构变量,这与数组元素的指针和函数指针的情况是相同的.结构指针变量说明的一般形式为: struct 结构名 * 结构指针变量名 例如: struct stu *pstu;  其访问的一般形式为: (*结构指针变量).成员名 : (*pstu).num或为: 结构指针变量->成员名  :pstu->num 应该注意(*pstu)两侧的括号不可少, 因为成员符

CentOS安装ffmpeg简单记录详解

下载地址:http://ffmpeg.mplayerhq.hu/download.html#releases 下载文件:ffmpeg-2.0.1.tar.bz2 编译:./configure –prefix=/usr –enable-gpl –enable-shared –enable-version3 –enable-nonfree –enable-libmp3lame –enable-libvorbis –enable-libxvid –enable-libx264 –enable-libf

阿里云域名caa记录添加详解

本篇写于tiansir.com  原创文章 2017-12-9 CAA记录介绍 CAA,全称Certificate Authority Authorization,即证书颁发机构授权.它为了改善PKI(Public Key Infrastructure:公钥基础设施)生态系统强度.减少证书意外错误发布的风险,通过DNS机制创建CAA资源记录,从而限定了特定域名颁发的证书和CA(证书颁发机构)之间的联系.从此,再也不能是任意CA都可以为任意域名颁发证书了. 关于CAA记录,其实早在4年前便在RFC

如何存取三层式结构的数据库的记录

三层式(3-tier)的结构当中,数据库可能位于另外的一台电脑当中,与网站服务器IIS为不同一台电脑. 那么如何存取三层式结构的数据库的记录呢? 若要存取位于另外的一台电脑当中的数据库,只要通过网路(网际网路或intranet),将安装数据库的电脑,与网站服务器IIS的电脑相连结,然后在网站服务器IIS的电脑上,安装这种数据库的ODBC(或OLE DB)的驱动程式即可.对于SQL Server数据库而言,数据库连结的ASP程式码如下:Set Conn = Server.CreateObject(