TCP/IP模型中应用层协议之DNS系统

Posted 提升自己,才有选择的能力和勇气

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP/IP模型中应用层协议之DNS系统相关的知识,希望对你有一定的参考价值。

1、概述

域名系统 DNS 是因特网使用的命名系统,用来把便于人们使用的机器名字(即域名)转换为 ip 地址。

用户与因特网上某个主机通信时,必须要知道对方的 ip 地址,然而用户很难记住长达32位二进制主机地址,即使是点分十进制 IP 地址也并不太容易记忆。在应用层中为了便于用户记忆各种网络应用, 更多的是使用主机名字(即网站名:服务器名+域名)。

因特网的域名系统DNS被设计成为一个联机分布式数据库系统,并采用客户--服务器方式。DNS 使大多数名字都在本地进行解析,仅少量解析需要在因特网上通信, 因此DNS系统的效率很高。由于DNS是分布式系统, 即使单个计算机出了故障, 也不会妨碍整个DNS系统的正常运行。域名到 IP 地址的解析是由分布在因特网上的许多域名服务器程序(可简称为域名服务器)共同完成的。

域名到IP地址的解析过程: 当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序, 并成为DNS的一个客户, 把待解析的域名放在DNS请求报文中, 以UDP用户数据报方式发给本地域名服务器(使用UDP是为了减少开销)。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的田地址后即可进行通信。若本地域名服务器不能回答该请求, 则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求(且接下来都是本地域名服务器代替主机进行查询)。这种过程直至找到能够回答该请求的域名服务器为止。

2、域名结构

比如:https://www.baidu.com/,访问是基于https协议的,后面的www.baidu.com为域名。

因特网的域名采用了层次树状结构的命名方法,任何一个连接在因特网上的主机或路由器, 都有一个唯一的层次结构的名字, 即域名。

级别最低的域名写在最左边,而级别最高的顶级域名则写在最右边。

顶级域名可往下划分子域,即二级域名,再往下划分就是三级域名、四级域名等等。凡是在顶级域名下注册的单位都获得了一个二级域名,在某个二级域名下注册的单位就可以获得一个三级域名。一旦某个单位拥有了一个域名,它就可以自己决定是否要进一步划分其下属的子域,并且不必由其上级机构批准。

2.1、顶级域名的类别

(1)国家顶级域名nTLD: 如:cn 表示中国, us 表示美国, uk 表示英国等等。国家顶级域名又常记为ccTLD (cc 表示国家代码country-code)

(2)通用顶级域名gTLD: 最先确定的通用顶级域名有7个, 即:com (公司企业), net (网络服务机构), org(非赢利性组织), int (国际组织), edu(美国专用的教育机构), gov (美国的政府部门), mil 表示(美国的军事部门)。

(3)基础结构域名: 这种顶级域名只有一个, 即arpa, 用于反向域名解析, 因此又称为反向域名。

在国家顶级域名下注册的二级域名均由该国家自行确定。例如, 顶级域名为 jp 的日本, 将其教育和企业机构的二级域名定为 ac 和co, 而不用edu 和com。

我国把二级域名划分为“ 类别域名” 和“ 行政区域名” 两大类。“ 类别域名” 共7 个,分别为: ac(科研机构); com(工、商、金融等企业); edu(中国的教育机构); gov (中国的政府机构); mil (中国的国防机构); net (提供互联网络服务的机构); org (非营利性的组织)。“ 行政区域名” 共34 个, 适用于我国的各省、自治区、直辖市。例如: bj(北京市),js (江苏省)等等。现在我国允许直接在cn 的顶级域名下注册二级域名。这给我国的因特网用户提供了很大的方便。例如, 某公司abc 以前要注册为abc.com.cn,是个三级域名。但现在可以注册为abc.cn, 变成了二级域名。

 

2.3、域名服务器

实现域名系统的是使用分布在各地的域名服务器,DNS采用划分区的办法来分布域名服务器。

一个服务器所负责管辖的范围叫做区,各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。区可能等于或小于域, 但一定不可能大于域。每一个域名服务器都能够进行部分域名到IP地址的解析。当某个DNS服务器不能进行域名到IP地址的转换时,它就设法找因特网上别的域名服务器进行解析。

 

因特网上的DNS域名服务器也是按照层次安排的。每一个域名服务器都只对域名体系中的一部分进行管辖。根据域名服务器所起的作用, 可以把域名服务器划分为以下四种不同的类型:

(1)根域名服务器: 根域名服务器是最高层次的域名服务器, 也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。根域名服务器是最重要的域名服务器, 因为不管是哪一个本地域名服务器, 若要对因特网上任何一个域名进行解析(即转换为 ip 地址),只要自己无法解析,就首先要求助于根域名服务器。假定所有的根域名服务器都瘫痪了,那么整个的DNS系统就无法工作。在因特网上共有13个不同IP地址的根域名服务器。目前根域名服务器的分布仍然是很不合理的,会导致在北美和亚洲地区上网速度差别明显。在许多情况下,根域名服务器并不直接把待查询的域名直接转换成 ip 地址( 根域名服务器也没有存放这种信息〉,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。

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

(3)权限域名服务器: 这就是负责一个区的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时, 就会告诉发出查询请求的DNS 客户, 下一步应当找哪一个权限域名服务器。

(4) 本地域名服务器: 本地域名服务器并不属于上图6-3 所示的域名服务器层次结构,但它对域名系统非常重要。当一个主机发出DNS 查询请求时,这个查询请求报文就发送给本地域名服务器,由此可看出本地域名服务器的重要性。每一个因特网服务提供者ISP,或-个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。当PC 使用Windows XP 操作系统时,打开“ 控制面板”---“ 网络和共享中心”---点击已连接的网络的标记---“详细信息”,就能看到DNS服务器的ip地址,这里的DNS 服务器指的就是本地域名服务器。本地域名服务器离用户较近,一般不超过几个路由器的距离。当所要查询的主机也属于同一个本地ISP 时,该本地域名服务器立即就能将所查询的主机名转换为它的IP 地址,而不需要再去询问其他的域名服务器。

主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询域名的 ip 地址, 那么本地域名服务器就以 DNS 客户的身份, 向根域名服务器继续发出查询请求报文(即替该主机继续查询,且接下来都是本地域名服务器替代主机进行查询直到本地域名服务器查询到ip地址或者是报错),而不是让该主机自己进行下一步的查询。因此,递归查询返回的查询结果或者是本地域名服务器查询到的 ip 地址,或者是报错,表示无法查询到所需的 ip 地址。

以上是关于TCP/IP模型中应用层协议之DNS系统的主要内容,如果未能解决你的问题,请参考以下文章

网络面试-0x17如何立即诶OSI模型和TCP/IP协议

干货网络基础之TCP/IP协议五层模型

HTTP基础之 TCP/ IP 协议族

计算机网络,TCP/IP四层模型常见协议

TCP/ IP参考模型是啥?

linux服务器之dns