一、概述
本篇文章基于《计算机网络》和《计算机网络:自顶向下方法》,为笔者的读书笔记,主要内容如下所示:
- DNS提供的服务
- 互联网的域名结构
- DNS服务器的分布
- DNS的工作原理
- DNS记录 & 往DNS插入记录
二、DNS提供的服务
域名系统 DNS(Domain Name System) 提供的服务很简单,就是将便于人们使用的机器名字转换为IP地址。
我们都知道用户与互联网上的某台主机通信时必须知道对方的 IP 地址。相比于难以记忆的IP地址,用户更容易记住的是有具体含义的主机名字,例如我们访问百度的页面通常会选择输入www.baidu.com
而不是183.232.231.172
;但对于路由器来说,它更喜欢的则是定长的、有层次结构的 IP 地址。所以为了折衷这些不同的偏好,我们需要一种能进行主机名到 IP 地址转化的服务,域名系统 DNS 应运而生。
和 HTTP、FTP 和 SMTP 协议一样,DNS 协议是应用层协议,它同样是采用客户-服务端模式运行在通信的端系统之间。DNS 协议运行在 UDP 之上,采用的端口号是 53。在 Windows/Linux 的命令行窗口下,我们可以输入 dslookup 命令来查询域名对应的IP地址,如下所示:
这里我们以查询百度搜索域名的 IP 地址为例,可以看到返回的结果中显示 www.baidu.com
这个域名下对应两个 IP 地址,分别是183.232.231.172
和183.232.231.174
。
三、互联网的域名结构
互联网采用的是层次树状结构的命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。域还可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。下面通过一个例子来说明:
上图是新浪邮件服务器的域名,从语法上将,每一个域名都由标号(label)序列组成,各个标号之间用点隔开。其中标号 com 是顶级域名,标号 sina 是二级域名,标号 mail 是三级域名。DNS 对标号有如下规定:
- 级别最高的顶级域名写在最右边,级别最低的域名卸载最左边;
- 域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符;
- 英文字母不区分大小写,也就是说 mail 和 MAIL 在域名中是等效的;
- DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思;
- 各级域名由上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理,这种方式可以确保每一个域名在整个互联网范围内都是唯一的。
需要注意的是,域名中的点和IP地址中的点并无任何关系,域名只是一个便于人们使用和记忆的字符串,和IP地址存在映射关系。至于域名中的点所对应的顶级域名、二级域名等,和下面将要介绍的 DNS 的分布式和层次性设计有着很大的关系。
四、DNS服务器的分布
从理论上来说,整个互联网可以只使用一个 DNS 服务器,该服务器包含所有的映射,客户直接将所有查询发往一个 DNS 服务器,同时该 DNS 服务器直接对所有的查询客户做出响应。但是它并不适用于当今庞大的互联网,这种设计含有以下缺陷:
-
单点故障。如果该 DNS 服务器崩溃,整个互联网随之瘫痪。
- 通信