应用层(二):域名系统
1、DNS
1.1、域名系统的基本概念
域名系统是Internet使用的命名系统。将主机的名字叫做域名,原因是Internet使用的命名系统定义了很多的域。主机按照它所属的域来命令,因此就叫做域名。
域名是Internet中主机按照一定的规则,用自然语言表示的名字,与确认的IP地址相对应。
1.2、DNS与其他网络应用的关系
DNS与其他网络应用的关系示意图:
DNS的作用是:将主机域名转换成IP地址,使得用户能够方便的访问各种Internet资源与服务,它是Internet各种应用层协议实现的基础。
访问任何一种网络应用服务器,首先要通过DNS服务器解析Web服务器的IP地址。因此,DNS归于Internet基础设施类的服务与协议。
1.3、DNS需要满足的基本要求
DNS的本质是:提出一种分层次、基于域的命名方案,并且通过一个分布式数据库系统,以及维护与查询机制来实现域名服务功能。DNS需要实现以下三个主要功能:
·域名空间:定义一个包括所有可能出现的主机名字的域名空间;
·域名注册:保证每台主机域名的唯一性;
·域名解析:提供一种有效的域名与IP地址转换机制。
2、DNS域名空间
2.1、域名空间的基本概念
DNS域名空间采用"域"或"子域"的层次结构,DNS必须有一个大型的、分布式域名数据库,用来存储层次型的域名数据。
域名空间的层次结构可表示为树状结构,节点都是根的子孙。域名由一连串可回溯到其祖先的节点名组成。
2.2、域名空间结构
1、Internet被分成多个顶级域(top level domain,TLD),每个顶级域进一步划分为若干个子域。顶级域TLD有两种:通用域、国家或地区域。
2、每个域自己控制如何分配它下面的域,国家级域名下注册1的二级域名结构由各国自己确定。
3、为了创建一个新的域,创建者必须得到该域的上级域管理员的许可。
4、域名机制遵循的是组织的边界,而不是网络的物理边界。
3、域名服务器
域名服务器是一组用来保存域名树结构和对应信息的服务器程序。
3.1、区、域与域名服务器
一个"域"可划分成不重叠的多个"区"(zone)。
每个"区"设置相应的权限域名服务器(authoritative name server),用来保存该区内所有主机的域名与IP地址映射关系数据。"区"是域名服务器管辖的范围。
"区"和"区"的域名服务器都相互连接,构成支持整个"域"的域名服务器体系。
一个域没有划分区的情况,则区就等于域,只要设置一个域名服务器就可以管理整个网络的域名。
一个域划分为两个区。
两个区分别设置具有相应权限域名服务器的结构,一个域名服务器有权管辖的范围称为"区",它是"域"的一个子集。
3.2、域名服务器结构与分类
支持Internet运行的域名服务器按层次来设置,每一个域名服务器都只对域名空间中的一部分进行管辖,由多个层次结构的域名服务器系统覆盖整个域名空间。根据域名服务器所处的位置和所起的作用,域名服务器可分为以下4种类型。
3.2.1、根域名服务器
目前存在的根域名服务器,其专用域root-server.net。
3.2.2、顶级域名服务器
顶级域名服务器负责管理在该顶级域名注册的所有二级域名。
3.2.3、权限域名服务器
权限域名服务器负责经过授权的一个区的域名管理。
3.2.4、本地域名服务器
本地域名服务器(local name server)也称为默认域名服务器。
4、域名解析
4.1、域名解析的基本概念
将域名转换为对应的IP地址的过程称为域名解析(name resolution),完成该功能的软件称为域名解析器(简称解析器)。
每个本地域名服务器配置一个域名软件,客户在进行查询时,首先向域名服务器发出一个DNS请求(DNS request)报文,由于DNS名字信息以分布式数据库的形式分散存储在很多个域名服务器中,每个域名服务器都知晓根服务器的地址,因此无论经过几步查询,最终总会在域名树中找出正确的解析结果,除非域名不存在。
4.2、域名解析算法
域名解析有两种方法:递归解析(recursive resolution) 与 反复解析(iterative resolution)。
主机向本地域名服务器查询过程:
4.2.1、递归解析算法
在递归解析过程中,若本地域名服务器没有需要解析的信息,则本地域名服务器将接管向其他域名服务器请求解析的责任,只将最终结果返回给客户。
如客户访问指定域名的主机,客户解析程序首先向本地域名服务器发出查询请求,若本地域名服务器有所要的主机,name本地域名服务器将直接返回结果。若本地域名服务器查不到,则向它的上层域名服务器提出请求;若上层域名服务器也没有所需要的信息,则它向本地域名服务器返回一个可能解析域名的服务器。
递归解析过程中客户与服务器的交互过程:
4.2.2、反复解析算法
反复解析也称为迭代解析。反复解析是指:本地域名服务器若不能返回最终的解析结果,则它只能返回它认为可以解析的域名服务器的IP地址。
客户端解析程序就向下一个域名服务器发出解析请求,直至最终获得需要的解析结果。
为了减轻客户在反复解析过程中的工作负担,实际在软件编程中,采用在客户向本地域名服务器提出解析请求之后,仍然由本地域名服务器完成反复解析的任务,最后再将最终解析结果返回给客户。
反复解析中客户与域名服务器的交互过程:
5、域名系统性优化
在没有优化的情况下,每次对远程计算机的域名解析,根服务器都会收到一个请求。而且,一个主机可能会反复发出同一台计算机的域名请求。DNS性能优化的主要方法时复制与缓存。
5.1、复制
每个根服务器的许多副本存在整个网络上。当一个新的子网加入时,它在本地DNS服务器中配置一个根服务器表。
本地的DNS服务器可以为用户选择响应最快的根服务器。
5.2、缓存
每个域名服务器都保留一个域名缓存。每当查找一个新的域名时,域名服务器将该绑定的一个副本置于它的缓存中。
主机在启动时从本地域名服务器下载域名数据库,保存一个本机最近使用的域名信息,只有在缓存中找不到域名时才去访问本地域名服务器。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)