1.域名系统概述
域名系统概述:互联网使用的命名系统,用来将便于人们使用的机器名字转换为IP地址。
域名系统的使用情况:
- 直接使用:许多应用层软件经常直接使用域名系统;
- 间接使用:计算机用户虽然是通过间接的方式使用域名系统,但是域名系统却为互联网的各种网络应用提供了核心服务。
域名系统的作用:由于互联网用户在于某台主机通信时,很难记住主机的IP地址,因此需要使用能够便于记忆的主机名字;而计算机进行处理时,则更容易处理定长的IP地址,所以两者需要进行相互转换。域名系统能够将互联网上的主机名字转换为IP地址。
hosts文件:该文件中存储了所有主机名字和相应的IP地址。只要用户输入一台主机名字,计算机就可以很快地把这台主机名字转换为对应的二进制IP地址。
分布式域名系统:
- 单个域名服务器不可取:从理论上讲,整个互联网可以只使用一个域名服务器,让其装入互联网中所有的主机名和其对应的IP地址,但是这种做法不可取:首先互联网规模很大,这样的域名服务器会因为过载而无法工作;其次如果该服务器故障,整个互联网就会瘫痪。
- 分布式域名系统概述:互联网的域名系统被设计为一个联机分布式数据库系统,并采用客户服务器方式。DNS使得大部分名字都在本地进行解析(也就是转换),只有少量的转换需要在互联网上通信,因此效率很高。同时,分布式的设计使得单个计算机出故障时,也不会妨碍整个DNS的正常运行。
域名的解析:
- 域名服务器程序:域名到IP地址的转换是由分布在互联网上的很多域名服务器程序共同完成的。
- 域名服务器:域名服务器程序在专设的节点上运行,这个节点对应的机器称为域名服务器。
- 解析过程:
- 当一个应用进程需要把主机名解析为IP地址时,就调用解析程序,并成为DNS的第一个用户。
- 该进程把待解析的域名放在DNS请求报文中,以UDP用户数据报的形式发送给本地域名服务器(使用UDP是为了减小开销);
- 本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得了目的主机的IP地址后即可进行通信。
- 如果本地服务器不能回答该请求,则此域名服务器成为DNS中的另一个客户,并向其他域名服务器发出查询请求,直到找到能够回答该请求的域名服务器为止。
2.互联网的域名结构
域名的概念:
- 域名的命名方法:域名采用层次树状结构的命名方法。采用这种方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,也就是域名。
- 域名的语法:每一个域名都由标号序列组成,而各个标号之间使用点进行隔开。
- 对标号的要求:DNS规定,标号都由英文字母和数字组成,每一个标号不超过63个字符,同时标号不区分大小写字母。同时,标号中除了连字符“-”外不能使用其他的标点符号。 由多个标号组成的域名总共不超过255个字符。
- 没有要求的部分:不规定一个域名要包含多少个下级域名,也不规定每一级的域名表示什么意思。
- 顶级域名、二级域名和三级域名:域名中,越靠后的标号级别越高。例如,
mail.cctv.com
中的顶级域名是com,二级域名是cctv,三级域名是mail。 - 域名的管理:各级域名由上一级的域名管理机构管理,而最高的顶级域名则由ICANN管理。
顶级域名(TLD):截止到2020年6月,共有全球顶级域名1584个。
- 顶级域名的早先分类:分为国家顶级域名(nTLD)、通用顶级域名(gTLD)和基础结构域名三类。
- 国家顶级域名(nTLD):如cn表示中国,us表示美国,uk表示英国等等。
- 通用顶级域名(gTLD):最早确定的通用顶级域名有7个,分别是:com(公司企业)、net(网络服务机构)、org(非营利性组织)、int(国际组织)、edu(美国专用的教育机构)、gov(美国政府部门)、mil(美国军事部门)。
- 基础结构域名:只有一个,就是arpa,用于反向域名解析,因此也被称为反向域名。
- 新顶级域名: 2011年ICANN会议批准通过。任何公司或机构都可以向ICANN申请新的顶级域名,使得企业域名具有显著的、强烈的标志特征,但是需要缴纳高额的费用。
我国二级域名的划分:我国把二级域名划分为类别域名和行政区域名两大类。
- 类别域名:共有7个:ac表示科研机构;com表示企业;edu表示教育机构;gov表示政府机构;mil表示国防机构;net表示提供互联网的机构;org表示非盈利组织。
- 行政区域名:共有34个,与我国的行政区相对应。
域名树:域名树是表示互联网域名系统的最清楚的方法。
- 域名树实际上是一棵倒过来的树,在最上面的是根,没有对应的名字。
- 根下面一级的节点就是最高一级的顶级域名;再往下就是二级域名。
- 域名树的树叶就是单台计算机的名字,就不能继续往下划分子域了。
3.域名服务器
域名服务器的地位:分布在各地的域名服务器是具体实现域名系统的方法。
DNS分区:
- 分区的原因:从理论上说,可以让每一级的域名都有一个对应的域名服务器,但是这样 会使得域名服务器的数量太多,域名系统的运行效率降低,所以需要采用DNS分区。
- 分区的概念:
- 一台域名服务器所负责管辖的范围就叫做区。各个单位根据具体情况来划分自己管辖的区,但是在一个区内的所有结点都是能保持连通的。
- 每一个区设置相应的权限域名服务器,来保存该区中所有主机的IP地址的映射。
- 总之,DNS服务器的管辖范围不是以域作为单位,而是以区作为单位的。
域名服务器的分类:互联网中的DNS域名服务器也是按照层次安排的。每一个域名服务器只对域名体系中的一部分进行管辖,因此可以分为下面四种类型:
-
根域名服务器:
- 根域名服务器是是最高层次的域名服务器,也是最重要的域名服务器。
- 所有的根域名服务器都知道所有顶级域名服务器的域名和IP地址。
- 不管是哪一个本地域名服务器,如果对于一个域名无法解析时,都需要求助于根域名服务器。如果所有的根域名服务器都瘫痪了,那么整个互联网中的DNS系统就无法工作。
- 根域名服务器只使用13个不同的IP地址的域名,但是根域名服务器并非仅由13台机器组成。实际上,互联网中是由13个系统构成这13组根域名服务器的。每一套装置都在很多地点安装根域名服务器(也称为镜像根服务器),但都使用同一个域名。为了提供更可靠的服务,在每一个地点的根域名服务器往往由多台机器组成,位置严格保密。
- 负责运营根域名服务器的公司大多在美国,但是所有的根域名服务器分布在全世界。
- 世界上大部分DNS域名服务器,都就近找到一个根域名服务器来查询IP地址。这样加快了DNS的查询过程,同时更加合理地利用了互联网的资源。目前,根域名服务器在全球的分布仍然很不均衡,这就使得根域名服务器较少的地方的上网速率较慢。
- 在很多情况下,根域名服务器并不是直接把待查询的域名直接转换为IP地址,而是告诉本地域名服务器下一步应该找哪一个顶级域名服务器进行查询。
-
顶级域名服务器:这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
-
权限域名服务器:
- 这就是负责一个区的域名服务器。
- 当一个权限域名服务器不能给出最后的查询回答时,就会告诉发出查询请求的DNS用户,下一步应该找哪一个权限域名服务器。
-
本地域名服务器:
- 当一台主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
- 每一个互联网服务提供者,或者一个大学,甚至大学里面的一个系,都有一个本地域名服务器。
- 本地域名服务器离用户较近,一般不超过几个路由器的距离。当所要查询的主机也属于同一个本地ISP时,该本地域名服务器就能将查询到的主机名转换为其IP地址直接返回。
主域名服务器和辅助域名服务器:
- 为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器中保存。其中一个是主域名服务器,其他的是辅助域名服务器。
- 当主域名服务器发生故障时,辅助域名服务器可以保证DNS的查询工作不会中断。
- 主域名服务器会定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行,从而保证了数据的一致性。
递归查询和迭代查询:
- 递归查询:
- 主机向本地域名服务器的查询一般采用递归查询。
- 如果主机所询问的本地域名服务器不知道被查询的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发送查询请求报文,而不是让该主机自己进行下一步的查询。
- 迭代查询:
- 本地域名服务器向根域名服务器的查询通常采用迭代查询。
- 当根域名服务器收到本地域名服务器发出的查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器,下一步应该向哪一个域名服务器进行查询。然后让本地域名服务器进行后续的查询。
- 根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询;顶级域名服务器在收到本地域名服务器的查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应该找哪一个权限域名服务器进行查询。
DNS高速缓存:
- 高速缓存的作用:提高DNS查询效率,减轻根服务器的负荷和减少互联网上的DNS查询报文数量。
- 高速缓存的原理:
- 高速缓存中存放了最近查询过的域名以及从何处获得域名映射信息的记录。
- 在进行一次DNS查询时,如果不久前有用户进行过相同的DNS查询,那么本地域名服务器就不必重新进行查询,而是把上一次的查询结果告诉用户。
- 如果当前本地域名服务器中没有待查询的IP地址,但是有顶级域名服务器的IP地址,那么本地域名服务器就可以直接向顶级域名服务器发送查询请求报文,绕开了根域名服务器,从而降低了其工作负担。
- 合理性保证: 为了确保高速缓存的内容正确,域名服务器需要为每项内容设置计时器并处理超过合理时间的项目。
- 主机的域名高速缓存:
- 许多主机在启动时会从本地域名服务器下载名字和地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并只在从缓存中找不到名字时才使用域名服务器。
- 维护本地域名服务器数据库的主机需要定期检查域名服务器以获取新的映射信息,而且主机必须从缓存中删除无用的项。