分享
 
 
 

IP基础--5.DNS协定

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

http://www.study-area.net/menu1.htm

DNS的来由

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

DNS的全称是Domain Name System当您连上一个网址在URL打上www.hotmail.com的时候可以说就是使用了DNS的服务了。但如果您知道这个www.hotmail.com的IP地址直接输入209.185.243.135也同样可以到达这个网址。其实电脑使用的只是IP地址而已(最终也是0和1啦)这个www.hotmail.com只是让人们容易记忆而设的。因为我们人类对一些比较有意义的文字记忆(如www.hotmail.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.xyz.com.tw而整个名称对应的就是一个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所致一些问题。

DNS的名称记录

事实上DNS不仅仅是用来解释地址用的而且还可以回答更多关於网路和主机的其它信息其中很重要的一个功能就是可以供邮件系统进行路由。这些资料通常会以不同的“记录”名称出现在DNS的资料档案中。

下面让我们参考一个Linux的DNS档案看看这些记录是如何表示的

;

; Zone file for siyongc.domain

;

; Then full zone file

;

$TTL 86400

@ IN SOA redhat52.siyongc.domain. netman.siyongc.domain. (

1999092801 ; serial

8H ; refresh

2H ; retry

1W ; expire

1D ) ; minimun

;

IN TXT "A test domain, created by Netman"

IN NS redhat52

IN NS debian.home.

IN MX 10 redhat52.siyongc.domain.

IN MX 20 debian.home.

;

localhost IN A 127.0.0.1

gw IN A 192.168.0.17

IN HINFO "Redhat" "MASQ"

IN TXT "The masquerade gateway to internet"

redhat52 IN A 192.168.0.17

IN MX 10 redhat52

IN MX 20 debian.home.

IN HINFO "Dell PII 266" "Linux RedHat"

www IN CNAME redhat52

mail IN CNAME redhat52

ftp IN CNAME redhat52

news IN CNAME redhat52

smtp IN CNAME redhat52

pii266 IN A 192.168.0.15

IN MX 10 redhat52.siyongc.domain.

IN MX 20 debian.home.

slware36 IN A 192.168.0.18

IN MX 10 redhat52.siyongc.domain.

IN MX 20 debian.home.

rhroute IN A 192.168.0.4

IN MX 10 redhat52.siyongc.domain.

IN MX 20 debian.home.

我们姑且不理会开头那几行的意思那是给DNS系统本身使用的(我将会在“学习Linux”文章里面再详细讨论)这里我们只是看看几个记录名称而已

类别名称 代表意思

TXT 只是一些说明文字可以用来说明主机/网路环境设定

NS 名称伺服器也就是该zone指定的DNS伺服器名称

MX 邮件伺服器负责经由DNS查询进行邮件传递的邮件伺服器。这样的好处是如果您要更换邮件伺服器的话只需修改DNS记录就可以了而对方的邮件伺服器则无需理会您要使用的究竟是哪一台电脑来负责邮件交换。同时您也可以指定多台邮件伺服器来分担邮件交换工作在MX後面的号数用来指定伺服器的使用顺序数字越低越优先。

A 用来对应主机名称和其IP地址这个记录最常用而且也是最重要的记录之一

HINFO 和TXT差不多是回答“Host Information”查询用的

CNAME 是一个“别名”记录可以给A记录使用另外一个(或多个)名称让外面查询。CNAME可以对应一个A记录但不鼓励对应另一个CNAME记录。

AAAA 和A记录一样只不过对应的是IP v6 格式

分担DNS工作

Primary(master) DNS伺服器是架设在某一个网域下被主要授权并控制所有名称记录的主控制伺服器管辖着所有该网域的记录资料这些记录资料只有primary(master)可以修改。

但如果在一个比较大型的网路中DNS伺服器就会变得很繁忙了所以您可以设定多个DNS来分担master的工作但您或许不愿意到每一个DNS伺服器去更新资料吧而且就算您愿意这样做也容易出现错误或资料不同步的情形。这样您可以设定其它的伺服器为secondary (slave) DNS来master上面的记录资料这样其它的电脑可以被指定到不同的DNS做查询既可以分担master的工作而且资料也可以自动进行同步工作。您可以设定DNS资料同步的时间间隔在dns档案中的Refresh设定就是了。同时您还会看到Serial当slave的上面的serial数字少於它资料就会被否则会被忽略。

验DNS工作

当您建立好一个DNS伺服器之後除了可以直接使用命令 ping (这个会在後面章节说明)直接ping一下上面的记录之外最好还是使用“nslookup”这个命令进行检测或除错(Windows9x系统并不包含此命令)。下面让我们在Linux中验一下当您输入nslookup之後您会看到您机器目前指定的DNS伺服器的回应

Default Server: redhat52.siyongc.domain

Address: 192.168.0.17

然後您输入欲查询的主机或IP地址您会看到从DNS回来的结果

> pii266.siyongc.domain

Server: redhat52.siyongc

Address: 192.168.0.17

Name: pii266.siyongc.domain

Address: 192.168.0.15

> www.hinet.net

Server: redhat52.siyongc.domain

Address: 192.168.0.17

Non-authoritative answer:

Name: w3c2.hinet.net

Address: 168.95.1.84

Aliases: www.hinet.net

这是一个标准模式下面的查询我们可以看到不是这台DNS伺服器管理的查询而且已经在 cache 里面了会附加一个“Non-authoritative answer:”的回应信息。但如果我们先将查询模式设为any之後再输入同样的主机名称

> set q=any

> pii266.siyongc.domain

Server: redhat52.siyongc.domain

Address: 192.168.0.17

pii266.siyongc.domain preference = 20, mail exchanger = debian.home

pii266.siyongc.domain preference = 10, mail exchanger = redhat52.siyongc.domain

pii266.siyongc.domain internet address = 192.168.0.15

siyongc.domain nameserver = debian.home

siyongc.domain nameserver = redhat52.siyongc.domain

debian.home internet address = 192.168.0.2

redhat52.siyongc.domain internet address = 192.168.0.17

您就可以看到更多的资料了例如MXNS和它们的IP地址等信息。假如您使用“除错模式”的话看到的资料还将更多

> set debug

> www.hinet.net

Server: redhat52.siyongc.domain

Address: 192.168.0.17

;; res_nmkquery(QUERY, www.hinet.net, IN, ANY)

------------

Got answer:

HEADER:

opcode = QUERY, id = 3102, rcode = NOERROR

header flags: response, want recursion, recursion avail.

questions = 1, answers = 1, authority records = 3, additional = 3

QUESTIONS:

www.hinet.net, type = ANY, class = IN

ANSWERS:

-> www.hinet.net

canonical name = w3c2.hinet.net

ttl = 76134 (21h8m54s)

AUTHORITY RECORDS:

-> hinet.net

nameserver = HNTP1.hinet.net

ttl = 162533 (1d21h8m53s)

-> hinet.net

nameserver = HNTP3.hinet.net

ttl = 162533 (1d21h8m53s)

-> hinet[1] [url=http://www.chinamx.com.cn/Article/os/Linux/200605/20060530123217_28188_2.html][2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有