应用层-第四节:域名系统DNS
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用层-第四节:域名系统DNS相关的知识,希望对你有一定的参考价值。
- 获取pdf:密码7281
- 专栏目录首页:【专栏必读】王道考研408计算机网络+湖科大教书匠计算机网络+网络编程万字笔记、题目题型总结、注意事项、目录导航和思维导图
- 王道考研408计算机组成原理万字笔记
- 王道考研408数据结构+计算机算法设计与分析万字笔记
- 王道考研408操作系统+Linux系统编程万字笔记
文章目录
本节对应视频如下
一:DNS概述
DNS(域名解析系统):相对于冗长、难以记忆的IP地址,人们更喜欢使用具有特定含义的字符串来标识主机(例如www.baidu.com
),但最终通信时仍然需要IP地址,所以DNS可以实现将网址(域名)转换为其对应的IP地址
如下图,当我们在浏览器地址栏中输入某个Web服务器的域名时,用户主机首先会在自己的DNS高速缓存中查找该域名对应的IP地址,如果没有找到则会向网络中的某台DNS服务器查询,DNS服务器中有域名和IP地址映射关系的数据库。当DNS服务器收到DNS查询报文后,在其数据库中查询,之后将查询结果发送给用户主机。现在,用户主机中的浏览器就可以通过Web服务器的IP地址对其进行访问了
二:层次域名结构
因特网是否可以只使用一台DNS服务器呢?这种做法并不可取。因为因特网的规模很大,这样的域名服务器肯定会因为超负荷而无法正常工作,而且一旦域名服务器出现故障,整个因特网就会瘫痪。早在1983年,因特网就开始采用层次结构的命名树作为主机的名字(即域名),并使用分布式的域名系统DNS。DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。由于DNS是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统的正常运行
(1)概述
层次域名:域名的结构由若干个分量组成,各分量之间用.
隔开,分别代表不同级别的域名
- 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母
- 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
- 完整的域名不超过255个字符
域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理
域名的层级关系采用树状结构
- 根:
- 顶级域名
- 二级域名
- 三级域名
- …
例如下图
.cn
:是顶级域名,表示中国.edu
:是在顶级域名下注册的二级域名,表示教育机构.hnust
:是在二进域名下注册的三级域名,表示湖南科技大学.nic
:湖南科技大学网络信息中心
(2)顶级域名分类
顶级域名TLD分类:
- 国家顶级域名nTLD: 采用ISO3166规定;如
.cn
:中国.us
:美国.uk
:英国
- 通用顶级域名gTLD: 常见的有七个
.com
:公司企业.net
:网络服务机构.org
:非营利性组织.int
:国际组织.edu
:美国教育机构.gov
:美国政府部门.mil
:美国军事部门
- 反向域arpa: 用于方向域名解析,也即IP地址方向解析为域名
在国家顶级域名下注册的二级域名均有该国家自信确定,例如我国将二级域名划分为如下两类
- 类别域名:共7个
.ac
:科研机构.com
:工、商、金融等企业.edu
:教育机构.gov
:政府部门.net
:提供网络服务的结构.mil
:军事机构.org
:非营利性组织
- 行政区域名:共34个,适用于我国各省、自治区、直辖市
.bj
:北京市.sh
:上海市.js
:江苏省- …
(3)因特网命名空间举例
这种按等级管理的命名方法便于维护名字的唯一性, 并且也容易设计出一种高效的域名查询机制。需要注意的是,域名只是个逻辑概念,并不代表计算机所在的物理地点
三:域名服务器
(1)概述
域名服务器:域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。域名服务器可以分为如下四种不同的类型
- 根域名服务器
- 顶级域名服务器
- 权限域名服务器
- 本地域名服务器
(2)分类
根域名服务器:根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址。根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。因特网上有13个根域名服务器,尽管我们将这13个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。需要注意的是,根域名服务器用来管辖顶级域(如.com),通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询
顶级域名服务器:这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)
权限域名服务器:每台主机都必须在授权域名服务器处登记。为了更加可靠地工作,一台主机最好至少有两个授权域名服务器。实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转换为该主机的IP地址
本地域名服务器:本地域名服务器对域名系统非常重要。每个因特网服务提供者(ISP), 或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。事实上,我们在Windows系统中配置“本地连接”时,就需要填写DNS地址,这个地址就是本地DNS(域名服务器)的地址
四:域名解析过程
域名解析:把域名映射成为IP地址或把IP地址映射成域名的过程。当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。域名解析有以下两种方式:
- 递归查询:
- 迭代查询:
(1)递归查询
如下图,假设该主机想知道域名y.abc.com
的IP地址
- 主机首先向其本地域名服务器进行递归查询
- 本地域名服务器收到递归查询委托后,也采用递归查询的方式向某个根域名服务器查询
- 根域名服务器收到递归查询委托后,也采用递归查询的方式向某个顶级域名服务器查询
- 顶级域名服务器收到递归查询委托后,也采用递归查询的方式向某个权限域名服务器查询
- 当查询到域名所对应的IP地址后,查询结果会在之前受委托的各域名服务器之间传递,最终传回用户主机
(2)迭代查询
由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询。如下图,假设该主机想知道域名y.abc.com
的IP地址
- 主机首先向其本地域名服务器进行递归查询
- 本地域名服务器向根域名服务器采用迭代查询
- 先向某个根域名服务器查询
- 根域名服务器告诉本地域名服务器下次应该查询的顶级域名服务器IP地址
- 本地域名服务器向顶级域名服务器采用迭代查询
- 先向某个顶级域名服务器查询
- 顶级域名服务器告诉本地域名服务器下次应该查询的权限域名服务器IP地址
- 本地域名服务器向权限域名服务器采用迭代查询
- 先向某个权限域名服务器查询
- 顶级域名服务器告诉本地域名服务器所查询域名的IP地址
- 本地域名服务器最后把查询结果告诉主机
为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。当一个DNS服务器接收到DNS查询结果时,它能将该DNS信息缓存在高速缓存中。这样,当另一个相同的域名查询到达该DNS服务器时,该服务器就能够直接提供所要求的IP地址,而不需要再去向其他DNS服务器询问。因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息
(3)注意
由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性
以上是关于应用层-第四节:域名系统DNS的主要内容,如果未能解决你的问题,请参考以下文章
第十四节课:第13章,部署DNS域名解析服务(bind服务)
计算机网络 王道考研2021 第六章:应用层 -- 域名系统 DNS域名解析