2.4 DNS(域名系统)
由来:
计算机的标识方式有 IP地址 和 主机名 两种。
其中主机名因易于记忆而被人们普遍接受,但主机名几乎不提供计算机在因特网中位置的信息。
而路由器更喜欢定长的,有层次结构的IP地址。
为了折中这两种需求,需要一种能将主机名转换为IP地址的目录服务,也就是域名系统DNS(Domain Name System)的主要任务。
特点:
- 分层的、基于域的命名机制
- 若干分布式的数据库完成名字到IP地址的转换
- 运行在UDP上端口为53的应用服务
- 核心的Internet功能,但以应用层协议实现
- 在网络边缘(端系统,主机的应用层)处理复杂性
功能:
2.4.1 域名
- 定义:
域名 (Domain Name)是因特网的一项核心服务,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,它采用分级结构。
域名由两种不同的字符集组成:ASCII和Unicode。ASCII字符集包括128个字符,如数字、字母和符号。Unicode字符集包括几乎所有国家和地区的文字、符号和符号。
在ASCII字符集中,每一级域名长度不超过63个字符。而在Unicode字符集中,虽然域名长度没有明确的限制,但仍然需要遵守域名系统规范(DNS)的限制。根据DNS规范,每一级域名长度不能超过253个字符。
需要注意的是,虽然每一级域名长度有限制,但整个域名的长度是没有限制的
域名可以用来在数据传输时标识计算机的电子方位,有时也指地理位置
例如:我们常用的门户网站,如搜狐、新浪等,它们都是用大写字母来作域名的。
- 特点
- 1.一个层面命名设备可能会有很多重名,但通过结合主机名和所在的域,可以唯一地标识互联网上的每一台主机
- 2.DNS采用层次树状结构命名方法
- 解析问题
单点故障:如果只有一个DNS服务器,一旦其损坏将影响巨大
通信容量:一个DNS服务器处理所有DNS查询,工作量过大
维护问题:一台DNS服务器需要为所有因特网主机保留记录,使得中央数据库庞大,并且还要因添加新的主机而更新。
远距离的集中式数据库:因为一台DNS服务器无法”邻近“所有用户,传播时将经过低速和拥塞链路导致严重时延。
域名的层级分类
下图中 "叶" 只是一个通用代指,并不是说所有域名都归于一个主机或设备。“根”同理
(DNS根服务器共有13个)
从树根到树叶,上层域有一个指向其子域服务器的指针。
一系列划分域
一系列划分域
一系列划分域
一系列划分域
一系列划分域
根
顶级域1
顶级域2
顶级域3
顶级域...
二级域1
二级域2
二级域3
二级域...
二级域...
二级域...
三级域...
...
叶
顶级域分为两类:
- 通用的(Generic)
- 国家的(Countries)
下面几张图有重复,看看就行。
下图出现的反向域名 arpa 作用是将IP地址逆向解析为域名
以下拓展摘自百度AI:
arpa是逆向域名系统(逆向DNS)的缩写,用于将IP地址解析为域名。
在互联网上,IP地址是唯一标识计算机或设备的地址,而域名则是为了方便人们记忆和访问这些地址而使用的字符串。逆向域名系统的作用就是通过IP地址反向解析出对应的域名。
arpa域名字符集与一般的域名字符集不同,它只包含数字和字母,不包含国家、地区或符号等特殊字符。
arpa域名通常用于以下几种情况:
反向域名解析:通过IP地址反向解析出对应的域名,用于网络管理和安全监控等。
DNS黑名单:将恶意软件或网络攻击者的IP地址加入到arpa域名的黑名单中,以限制其访问网络资源。
邮件服务器:arpa域名用于邮件服务器,以便于接收和发送电子邮件。
临时域名:当一个域名被删除或过期时,其IP地址可能仍然需要被访问,此时可以使用arpa域名作为临时替代品。
需要注意的是,arpa域名的使用需要遵守特定的规范和标准,例如逆向DNS解析协议(DNS Reverse Resolution Protocol)等。
域名的构成
- 命名设备的域名
主机名.第N级域名.(…).第二级域名.顶级域名
从树叶开始,每过一个层级用句点分隔开。 - 命名一个域的域名(对某个域做标识)
从树枝开始到顶级域。
如:ustc.edu.cn (中国科技大学域名)
注:(少数采用)设备也可以直接挂在顶级域名或二级域名之下,不必非要顺着所有域层级来命名。
如:
- mit.edu
- xxx.gov
域名管理
.cn:中国的一个顶级域名
.jp:日本的一个顶级域名
2.4.2 域名服务器
DNS:根名字服务器
互联网共有13个根服务器 (分布在:欧洲,北美(大部分),日本),不同国家域名划分不一定一样。
权威服务器
- 前置
为了解决域名的维护(域名到IP地址转换)和解析问题,划分出区域(zone)的概念:
下图中每个圈就是一个区域。
- 定义
是否是某个域的权威DNS服务器看是否维护中这个区域的域名到IP地址对应关系
权威服务器 :清楚本区域内部域名与IP对应关系
TLD服务器
本地名字服务器(Local Name Server)
地址使用手工配置或动态配置
名字服务器(Name Server)
2.4.3 DNS工作机理方面
1. DNS缓存
为了改善时延性能并减少在互联网上传输的DNS报文数量,DNS广泛采用了缓存技术。
- 原理
在一个请求链中,DNS服务器收到一个DNS应答(如包含某个主机名到IP地址的映射)时,它能将映射缓存在本地存储器中。
由于主机和主机名与IP地址间的映射不是永久的,DNS服务器在一段时间后(通常设置为两天),将丢弃缓存信息。
- 产生的影响
本地服务器也能缓存 TLD 服务器的 IP 地址,因而允许本地DNS绕过查询链中根DNS服务器。事实上,由于缓存的存在,除了少数DNS查询以外,根服务器被绕过了。
2. 资源记录
共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record,RR):提供主机名到IP的映射。
资源记录是一个包含了下列字段的四元组:
(Name,Vaule,Type,TTL),具体见下图:
资源记录可以类比于数据库的记录方法
- TTL(生存时间 time to live):是指某个记录的生存时间,决定了某个资源记录删除的时间。
- 1.TTL为无限大:指权威值
- 2.TTL为有限值: 指缓冲值
下面给出的例子,忽略掉TTL字段。Name和Vaule的值取决于Type:
(结构图)
(原书)
- 资源记录的一个例子:
3. DNS工作过程:
查询
如果本地服务器有缓存,则直接返回缓存信息(主机与IP映射)。如果没有缓存,需要查询具体映射。
查询方法有以下两种:
- 递归查询
- 迭代查询
递归查询
简单来说就是主机任意找一个根服务器,由于通常上一级知道下一级信息
,然后从根服务器开始一级一级往下查找,直到最终查到结果。
迭代查询
上一级不会明确下一级的信息,但会有一个指定方向,相当于"踢皮球"。
4. DNS协议与报文
DNS报文有查询报文和回答报文两种,它们的格式都是相同的。结构如下图:
idenfication即id号
(原书参考)
5. 维护问题:新增域
2.4.4 DNS安全问题
总的来说,DNS比较健壮