从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

  • 计算机网络

    • 计算机网络微课堂

      • 课程概述
      • 1-1 计算机网络在信息时代的作用
      • 1-2 因特网概述
      • 1-3 三种交换方式
      • 1-4 计算机网络的定义和分类
      • 1-5 计算机网络的性能指标
      • 1-6 计算机体系结构
      • 2-1 物理层的基本概念
      • 2-2 物理层下面的传输媒体
      • 2-3 传输方式
      • 2-4 编码与调制
      • 2-5 信道的极限容量
      • 3-1 概述
      • 3-2 封装成帧
      • 3-3 差错检测
      • 3-4 可靠传输
      • 3-5 点对点协议 PPP
      • 3-6 媒体接入控制的基本概念
      • 3-7 MAC 地址
      • 3-7 IP 地址
      • 3-7 ARP 协议
      • 3-8 集线器与交换机的区别
      • 3-9 以太网交换机自学习和转发帧的流程
      • 3-10 以太网交换机的生成树协议 STP
      • 3-11 虚拟局域网 VLAN
      • 4-1 网络层概述
      • 4-2 网络层提供的两种服务
      • 4-3 IPv4 地址
      • 4-4 IP 数据报的发送和转发过程
      • 4-5 静态路由配置及其可能产生的路由环路问题
      • 4-6 路由选择
      • 4-7 IPv4 数据报的首部格式
      • 4-8 网际控制报文协议 ICMP
      • 4-9 虚拟专用网 VPN 与网络地址转换 NAT
      • 5-1 运输层概述
      • 5-2 运输层端口号、复用与分用的概念
      • 5-3 UDP 和 TCP 的对比
      • 5-4 TCP 的流量控制
      • 5-5 TCP 的拥塞控制
      • 5.6 TCP 超时重传时间的选择
      • 5-7 TCP 可靠传输的实现
      • 5-8 TCP 的运输连接管理
      • 5-9 TCP 报文段的首部格式
      • 6-1 应用层概述
      • 6-2 客户—服务器方式和对等方式
      • 6-3 动态主机配置协议 DHCP
      • 6-4 域名系统 DNS
      • 6-5 文件传送协议 FTP
      • 6-6 电子邮件
      • 6-7 万维网 WWW
    • 计算机网络微课堂-实验手册

    • 从零开始学计算机网络

  • 数据库

  • 编程工具

  • 装机

  • 计算机基础
  • 计算机网络
  • 计算机网络微课堂
2023-11-16

6-4 域名系统 DNS

# 640.6-4 域名系统DNS

本节课我们介绍域名系统 DNS。

我们首先来举例说明域名系统的作用。如图所示因特网中的某台主机要访问某台 WEB 服务器,我们只需在用户主机中运行某个浏览器软件,在其地址栏中输入要访问的 WEB 服务器的域名,并按下回车键即可访问到外部服务器所提供的内容,这是大家最常用的一种网络应用。

接下来我们在用户主机中使用 ping 命令来测试一下用户主机与外部服务器的连通性。可以看到我们拼的是 WEB 服务器的域名,但 ping 命令实际上拼的是 WEB 服务器的 IP 地址,这与我们之前课程中所介绍的 TCP/IP 体系,采用 IP 地址进行选址的知识是一致的。也就是说即使不使用域名,也可以通过 IP 地址来寻址目的主机,但域名与 IP 地址相比便于人们记忆。因此对于大多数网络应用,我们一般使用域名来访问目的主机,而不是直接使用 IP 地址来访问。

对于本例简单来说,当我们在浏览器地址栏中输入某个 WEB 服务器的域名时,用户主机会首先在自己的 DNS 高速缓存中查找该域名所对应的 IP 地址,如果没有找到,则会向网络中的某台 DNS 服务器查询,DNS 服务器中有域名和 IP 地址映射关系的数据库。当 DNS 服务器收到 DNS 查询报文号,在其数据库中进行查询,之后将查询结果发送给用户主机。

现在用户主机中的浏览器可以通过外部服务器的 IP 地址对其进行访问了。请同学们思考一下,因特网是否可以只使用一台 DNS 服务器,尽管理论上是可行的,但在实践中这种做法并不可取,因为因特网的规模很大,这样的域名服务器肯定会因为超负荷而无法正常工作,而且一旦域名服务器出现故障,整个因特网就会瘫痪。

早在 1983 年,因特网就开始采用层次结构的命名树,作为主机的名字,也就是我们所谓的域名,并使用分布式的域名系统。域名系统使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。由于域名系统是分布式系统,即使单个域名服务器出现了故障,也不会妨碍整个系统的正常运行。

接下来我们就来看看因特网域名系统所采用的层次树状结构的域名结构,域名的结构由若干个分量组成,各分量之间用点隔开,分别代表不同级别的域名。如图所示,每一级的域名都由英文字母和数字组成,不超过 63 个字符,不区分大小写字母,级别最低的域名写在最左边,而级别最高的顶级域名写在最右边,完整的域名不超过 255 个字符,域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思,各级域名尤其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构进行管理。

这是我校网络信息中心的域名,https://nic.hnust.edu.cn/

CN 是顶级域名,表示中国,EDU 是在其下注册的二级域名,表示教育机构,HNUST 是在 EDU 下注册的三级域名,表示湖南科技大学,NSC 是由我校自行管理的 4 级域名,表示网络信息中心


顶级域名(Top Level Domain)分为以下 3 类:

  • 一类是国家顶级域名 nTLD,采用 ISO 3166 的规定,如 CN 表示中国,US 表示美国,UK 表示英国
  • 另一类是通用顶级域名 gLTD,最常见的通用顶级域名有 7 个,即 COM 表示公司企业,NET 表示网络服务机构,ORG 表示非营利性组织,INT 表示国际组织,EDU 表示美国教育机构,GOV 表示美国政府部门 MIL 表示美国军事部门
  • 还有一类是要反向域用于反向域名解析 arpa,即 IP 地址反向解析为域名

在国家顶级域名下注册的二级域名均由该国自行确定。例如顶级域名为 JP 的日本,将企业教育和企业机构的二级域名定为 AC 和 CO,而不用 EDU 和 COM。

我国则将二级域名划分为以下两类:

  • 一类是类别域名,共 7 个。AC 表示科研机构,COM 表示工商金融等企业,EDU 表示教育机构,GOV 表示政府部门 NET 表示提供网络服务的机构,MIL 表示军事机构,ORG 表示非营利性组织
  • 另一类是行政区域名,共 34 个,适用于我国的各省、自治区、直辖市,例如 BJ 为北京市,SH 为上海市,JS 为江苏省等等。需要注意的是名称相同的域名且等级未必相同。例如 COM 是通用顶级域名,但我国顶级域名 CN 下,也有一个名称为 COM 的二级域名

接下来我们举例说明因特网的域名空间,它实际上是一颗倒着生长的树,在最上面的是根,但没有对应的域名,根下面一级的节点就是顶级域名,顶级域名可往下划分出二级域名,例如这是表示公司企业的顶级域名 com 下面划分有 CCTV、IBM、TI 等二级域名,分别表示中央电视台、IBM 公司、TI 公司,

这是表示中国的顶级域名 CN 下面划分的二级域名。图中所示的域名分别表示上海、北京教育机构政府部门的。二级域名再往下划分就是三级域名。例如这是表示中央电视台的二级域名 CCTV 下划分的三级域名 MAIL 表示邮件系统,这是表示我国教育机构的二级域名 EDU 下划分的三级域名,图中所示的域名分别表示清华大学、湖南科技大学、复旦大学、北京大学。

三级域名再往下划分,就是 4 级域名,例如这是表示湖南科技大学的 3 级域名,HNUST 下划分的一些 4 级域名,分别表示湖南科技大学的网络信息中心、图书馆、邮件系统、教务处,上述这种按等级管理的命名方法,便于维护域名的唯一性,并且也容易设计出一种高效的域名查询机制。需要注意的是域名只是个逻辑概念,并不代表计算机所在的物理地点。

​​


域名和 IP 地址的映射关系,必须保存在域名服务器中,供所有其他应用查询显然不能将所有信息都储存在一台域名服务器中,DNS 使用分布在各地的域名服务器,来实现域名到 IP 地址的转换。域名服务器可以划分为以下 4 种不同类型:

一类是根域名服务器跟域名服务器是最高层次的域名服务器,每个根域名服务器都知道所有的顶级域名服务器的域名及其 IP 地址,因特网上共有 13 个不同 IP 地址的根域名服务器,尽管我们将这 13 个根域名服务器中的每一个都视为单个的服务器,但每台服务器实际上是由许多分布在世界各地的计算机构成的服务器群集。

当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个 DNS 客户最近的一个根域名服务器,这就要加快了 DNS 的查询过程,同时也更合理的利用了因特网的资源。

根域名服务器,通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的 IP 地址。

另一类是顶级域名服务器,这些域名服务器负责管理,在该顶级域名服务器注册的所有二级域名,当收到 DNS 查询请求时,就给出相应的回答,可能是最后的结果,也可能是下一级权限域名服务器的 IP 地址。

还有一类是权限域名服务器,这些域名服务器负责管理某个区的域名,每一个主机的域名都必须在某个权限域名服务器处注册登记,因此权限域名服务器知道其管辖的域名与 IP 地址的映射关系。另外权限域名服务器还知道其下级域名服务器的地址。

最后一类是本地域名服务器,本地域名服务器不属于上述的域名服务器的等级结构,当一个主机发出 DNS 请求报文时,这个报文就首先被送往该主机的本地域名服务器,本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。每一个因特网服务提供者,一个大学,甚至一个大学里面的学院,都可以拥有一个本地域名服务器,他有时也称为默认域名服务器,本地域名服务器离用户较近,一般不会超过几个路由器的距离,也有可能就在同一个局域网中,本地域名服务器的 IP 地址需要直接配置在需要域名解析的主机中。

​​


接下来我们介绍域名解析的过程包含以下两种查询方式,一种是递归查询,另一种是迭代查询。

首先来看递归查询。假设图中的主机,想知道域名 Y.ABC.COM 的 IP 地址,主机首先向其本地域名服务器进行递归查询,

本地域名服务器收到递归查询的委托后,也采用递归查询的方式,向某个根域名服务器查询,根域名服务器收到递归查询的委托后,也采用定规查询的方式,向某个顶级域名服务器查询,顶级域名服务器收到递归查询的委托后,也采用递归查询的方式,向某个权限域名服务器查询,当查询到域名所对应的 IP 地址后,查询结果会在之前受委托的各域名服务器之间传递,最终传回给用户主机。

再来看迭代查询,主机首先向其本地域名服务器进行递归查询,本地域名服务器采用迭代查询,他先向某个根域名服务器查询,根域名服务器、告诉本地域名服务器,下一次应查询的顶级域名服务器的 IP 地址,本地域名服务器向顶级域名服务器进行迭代查询,顶级域名服务器告诉本地域名服务器,下一次应查询的权限域名服务器的 IP 地址,本地域名服务器向权限域名服务器进行迭代查询,权限域名服务器告诉本地域名服务器所查询的域名的 IP 地址,本地域名服务器,最后把查询结果告诉主机。

由于递归查询,对于被查询的域名服务器负担太大,通常采用以下模式,从请求主机到本地域名服务器的查询,采用递归查询方式,而其余的查询是迭代查询方式。

​​


为了提高 DNS 的查询效率,并减轻根域名服务器的负担,和减少因特网上的 DNS 查询报文数量,在域名服务器中广泛的使用了高速缓存,高速缓存用来存放最近查询过的域名,以及从何处获得域名映射信息的记录,如图所示,如果不久前已经有用户查询过域名为 Y.ABC.COM 的 IP 地址,则本地域名服务器的高速缓存中,应该存有该域名对应的 IP 地址。当主机向本地域名服务器递归查询该域名时,本地域名服务器就没有必要再向某个根域名服务器进行迭代查询了,而是直接把高速缓存中存放的上次查询结果,即该域名的 IP 地址告诉用户主机。

​​

需要注意的是,由于域名到 IP 地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器因为每项内容设置计时器,并删除超过合理时间的项,例如每个项目只存放两天。

不但在本地域名服务器中需要高速缓存,在用户主机中也很需要,许多用户主机在启动时,从本地域名服务器下载域名和 IP 地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。

同理,主机也需要保持高速缓存中内容的正确性。


最后我们来做两个相关的练习题,这是计算机专业考研全国统考计算机网络部分 2010 年的题 40,答案是选项 A。

我们来一起分析一下本题考察的内容,就是我们刚刚才介绍过的,采用递归查询方式进行域名解析的过程,这是主机给其本地域名服务器发送的一条 DNS 查询。由于题目给定本地域名服务器无缓存,因此本地域名服务器收到主机的委托查询后,会向某个根域名服务器发送一条 DNS 查询。

​​

再来看 2016 年的题 40,答案是选项 C。若主机 H4 的 DNS 高速缓存中,有该域名的 DNS 信息时,不需要查询任何域名服务器,这样 H4 无需向图中的默认域名服务器发出 DNS 查询,该域名服务器也无需发出 DNS 查询,题目给定采用迭代查询方式进行域名解析,在最坏的情况下,需要途中的本地域名服务器依次向以下域名服务器发出共 4 次 DNS 查询:根域名服务器,顶级域名服务器.COM,权限域名服务器 XYZ.COM,权限域名服务器 ABC.XYZ.COM。

​​

本节课到这里就结束了。我们将本节课的内容小结如下,需要注意的是 DNS 报文,是由运输层的 UDP 协议进行封装,运输层端口号为 53,至于 DNS 报文的格式就不再赘述了。

另外 DNS 污染等安全问题也超出了本系列课程的教学大纲,有兴趣的同学可自行查阅相关资料。

​​ ‍

上次更新: 2025/6/3 09:31:54
6-3 动态主机配置协议 DHCP
6-5 文件传送协议 FTP

← 6-3 动态主机配置协议 DHCP 6-5 文件传送协议 FTP→

最近更新
01
学点统计学:轻松识破一本正经的胡说八道
06-05
02
2025 年 5 月记
05-31
03
《贫穷的本质》很棒,但可能不适合你
05-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式