1、DNS的作用
如下所示,因特网中的某台主机要访问某台 Web
服务器
只需在用户主机中运行某个游览器软件,在其地址栏中输入要访问的 Web
服务器的域名,并按下回车键即可访问到 Web 服务器所提供的内容
我们在用户主机中使用 ping
命令测试 Web
服务器的连通性
-
ping
的是服务器的域名但
ping
命令实际上ping
的是Web
服务器的IP
地址
也就是说即使不适用域名也可以通过 IP
地址来寻址目的主机
但域名与 IP
地址相比,便于记忆
- 因此,对于大多数网络应用,一般使用域名来访问目的主机,而不是直接使用
IP
地址访问
简单来说,当我们在游览器地址栏中输入某个 Web
服务器的域名时
用户主机会首先在自己的 DNS 高速缓存
中查找该域名所对应的 IP
地址
如果没有找到,则会向网络中的某台 DNS
服务器查询
DNS
服务器中有域名和 IP
地址映射关系的数据库
当 DNS
服务器收到 DNS
查询报文后,在其数据库中进行查询,之后将查询结果发送给用户主机
现在用户主机的游览器可以通过 IP
地址对其进行访问了
尽管理论上是可以的,但在实践中这种做法并不可取
- 因为因特网的规模很大,这样的域名服务器肯定会因为超负荷而无法正常工作,而且一旦域名服务器出现故障,整个因特网就会瘫痪。
早在
1983
1983
1983 年,因特网就开始采用
层次结构的命名树
\color{blue}层次结构的命名树
层次结构的命名树作为主机的名字(即域名),并使用
分布式的域名系统
\color{blue}分布式的域名系统
分布式的域名系统 DNS
。
DNS
使
大多数域名都在本地解析
\color{blue}大多数域名都在本地解析
大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。
由于 DNS
是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统的正常运行。
2、因特网采用层次树状结构的域名结构
因特网采用 层次树状结构的域名结构 \color{red}层次树状结构的域名结构 层次树状结构的域名结构
域名的结构由若干个分量组成,各分量之间用 “点” 隔开,分别代表不同级别的域名。
-
每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母。
-
级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
完 -
整的域名不超过 255 255 255 个字符。
域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构 ICANN
进行管理。
例如:
-
cn
是顶级域名,表示中国 -
edu
是在其下注册的二级域名,表示教育机构 -
hnust
是在edu
下注册的三级域名,表示湖南科技大学 -
nic
是该校自行管理的四级域名,表示网络信息中心
2.1、顶级域名 TCL(Top Level Domain) (三类)
顶级域名 TLD
(Top Level Domain)分为以下三类:
①国家顶级域名 nTLD
- 采用
ISO 3166
的规定。如cn
表示中国,us
表示美国,uk
表示英国、等等。
②通用顶级域名 gTLD
- 最常见的通用顶级域名有七个,
- 即:
com
(公司企业)、net
(网络服务机构)、org
(非营利性组织)、int
(国际组织)、edu
(美国教育结构)、gov
(美国政府部门)、mil
(美国军事部门)。
③反向域 arpa
- 用于反向域名解析,即
IP
地址反向解析为域名。
2.2、二级域名
在 国家顶级域名下注册的二级域名均由该国家自行确定 \color{red}国家顶级域名下注册的二级域名均由该国家自行确定 国家顶级域名下注册的二级域名均由该国家自行确定。
例如,顶级域名为 jp
的日本,将其教育和企业机构的二级域名定为 ac
和 co
,而不用 edu
和 com
。
我国 \color{red}我国 我国则将 二级域名 \color{red}二级域名 二级域名划分为以下 两类 \color{red}两类 两类:
类别域名
- 共七个:
ac
(科研机构)、com
(工、商、金融等企业)、edu
(教育机构)、gov
(政府部门)、net
(提供网络服务的机构)、mil
(军事机构)和org
(非营利性组织)。
行政区域名
-
共 34 34 34 个,适用于我国的各省、自治区、直辖市。
例如:
bj
为北京市、sh
为上海市、js
为江苏省,等等。
需要注意
:名称相同的域名其等级未必相同
- 例如:
com
是通用顶级域名,但我国顶级域名cn
下也有一个名称为com
的二级域名
2.3、因特网的域名空间
3、域名服务器(四种类型)
域名和 IP
地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS
使用
分布在各地的域名服务器
\color{red}分布在各地的域名服务器
分布在各地的域名服务器来实现域名到 IP
地址的转换。
域名服务器可以划分为以下四种不同的类型:
①根域名服务器
- 根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其
IP
地址。 - 因特网上共有
13
13
13 个不同
IP
地址的根域名服务器。 - 尽管我们将这 13 13 13 个根域名服务器中的每一个都视为单个的服务器,但“ 每台服务器” 实际上是由许多分布在世界各地的计算机构成的 服务器群集 \color{red}服务器群集 服务器群集。
- 当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个
DNS
客户最近的一个根域名服务器。这就加快了DNS
的查询过程,同时也更合理地利用了因特网的资源。 - 根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的 IP 地址。 \color{red}根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的\texttt{IP}地址。 根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
②顶级域名服务器
- 这些域名服务器负责 管理在该顶级域名服务器注册的所有二级域名 \color{red}管理在该顶级域名服务器注册的所有二级域名 管理在该顶级域名服务器注册的所有二级域名。
- 当收到
DNS
查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP
地址)。
③权限域名服务器
- 这些域名服务器负责
管理某个区的域名
\color{red}管理某个区的域名
管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与
IP
地址的映射关系。 - 另外,权限域名服务器还知道其下级域名服务器的地址。
④本地域名服务器
- 本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出
DNS
请求报文时,这个报文就首先被送往该主机的本地域名服务器。 - 本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中 \color{red}本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中 本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。
- 每一个因特网服务提供者
ISP
,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为 默认域名服务器 \color{red}默认域名服务器 默认域名服务器。 - 本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。
- 本地域名服务器的
IP
地址需要直接配置在需要域名解析的主机中。
4、域名解析的过程
4.1、递归查询
主机首先向其本地域名服务器进行递归查询
- 本地域名查询收到递归查询的委托后,也采用递归查询的方式向某个根域名的服务器查询
…
当查询到域名所对应的 IP
地址后,查询结果会在之前受委托的各域名服务器之间传递
- 最终传回给用户主机
4.2、迭代查询
主机首先向其本地域名服务器进行递归查询
本地域名服务器采用迭代查询
- 它先向根域名服务器查询
根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器的 IP
地址
本地域名服务器向顶级域名服务器进行迭代查询
…
5、高速缓存
为了提高 DNS
的查询效率,并减轻根域名服务器的负荷和减少因特网上的 DNS
查询报文数量,在域名服务器中广泛地使用了
高速缓存
\color{red}高速缓存
高速缓存。
- 高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
若不久前已经有用户查询过域名为
y.abc.com
\texttt{y.abc.com}
y.abc.com 的 IP
地址
- 则本地域名服务器的告诉缓存中应该存有该域名对应的
IP
地址
当主机向本地域名服务器递归查询该域名时
-
本地域名服务器就没有必要再想某个根域名服务器进行迭代查询了
而是直接把高速缓存中存放的上次查询结果(即:该域名的
IP
地址)告诉用户主机
由于域名到 IP
地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,
- 域名服务器 应为每项内容设置计时器并删除超过合理时间的项 \color{red}应为每项内容设置计时器并删除超过合理时间的项 应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。
不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。
-
许多用户主机在启动时从本地域名服务器下载域名和
IP
地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。 -
同理,主机也需要保持高速缓存中内容的正确性。
6、习题
答案:A