计算机网络——域名系统

计算机网络 专栏收录该内容
13 篇文章 1 订阅

在命令行里敲入ping www.baidu.com,下面的提示会显示39.156.66.14这个IP地址(显然,这是一个A类地址)。同样,输入ping www.google.com,同样会显示一个IP地址。这是什么意思呢?

再做一个小测试,在C:\Windows\System32\drivers\etc文件夹下,有一个文件hosts。Jungle用notepad打开这个文件,有如下内容:

127.0.0.1  www.xmind.net

接下来,Jungle在命令行里输入:ping www.xmind.net,结果如下:

如果Jungle修改一下这个文件,改为:

127.0.0.1  www.jungle.net

然后再在命令行里输入ping www.jungle.net,结果如下:

可以看到,类似于最开始ping www.baidu.com一样,每一个网址都对应着一个IP地址(当然了,你也可以直接Ping IP地址)。为什么不能直接使用IP地址呢?为什么每个IP地址都对应一个网址呢?这种对应关系使如何的?

这就是计算机网络里的域名系统(Domain Name System)

一、域名系统

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

引言里提到的一个文件hsosts(路径C:\Windows\System32\drivers\etc文件夹下),文件里列出所有主机和相应的IP地址。只要用户输入一个主机名字,计算机可以很快将其转换成IP地址。

主机名便于人们理解和记忆(比如www.google.com是谷歌网址),但机器处理IP数据报时IP地址是定长32位,如果这时候还用主机名就不合理,因为有的主机名可能很长,所以机器使用的是IP地址。

理论上说,整个因特网上可以只有一个域名服务器,上面的hosts文件里保存因特网里所有主机名和对应的IP地址。但是,因特网里主机数量过于庞大,如果这样操作,那么查询一个IP地址将耗费大量时间。所以,因特网采用的是层次树状结构的命名方法,并使用分布式的域名系统,采用客户-服务器方式。

DNS使大部分名字都在本地进行解析,仅少量解析需要在因特网上通信。域名到IP地址的解析是由分布在因特网上的许多域名服务器共同完成。当某一个应用进程需要把主机名解析为IP地址时:

(1)该应用进程调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报的方式发给本地域名服务器。

(2)本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。

(3)若本地域名服务器不能回答该请求,本地域名服务器就暂时成为DNS的另一个客户,并向其他域名服务器发出查询请求。这种过程一直到找到能够回答该请求的域名服务器为止。

二、域名结构

1.域名命名规则

因特网采用的是层次树状结构的命名方法,连接入因特网的每一个主机或路由器,都有一个唯一的层次结构的名字,即域名

“域”是名字空间中的一个可被管理的划分,域可以被划分为子域,子域还可以再被划分,这样就构成了顶级域、二级域、三级域等。每一个域名都是由标号(label)序列组成,各个标号之间用点隔开:

DNS规定,每一个标号都由英文字母和数字组成,每一个标号不超过63个字符(最好不超过12个字符),也不区分大小写,多个标号组成的完整域名总共不超过255个字符。级别最低的域名写在最左边,级别最高的域名写在最右边。各级域名由上一级的域名机构管理,顶级域名又ICANN管理。域名只是一个逻辑概念,域名中的点和IP地址中点分十进制中的点并无关联。

2.域名分级

顶级域名TLD(Top Level Domain)分为三大类:

  • 国家顶级域名nTLD:cn-中国,us-美国,uk-英国等;
  • 通用顶级域名gTLD:com-公司企业,net-网络服务机构,org-非营利性组织,int-国际组织,edu-美国专用教育机构,gov-美国政府部门,mil-美国军事部门,aero-航空运输企业,asia-亚太地区等等;
  • 基础结构域名:只有一个,arpa,用于反向域名解析。

我国把二级域名分为类别域名和行政区域名:

  • 类别域名:7个,ac-科研机构,com-工、商、金融等企业,edu-中国教育机构,gov-中国政府机构,mil-中国国防机构,net-互联网服务机构,org-非营利性组织
  • 行政区域名:34个,适用于我国各省市、自治区、直辖市。
互联网域名空间

因特网中的域名是惟一的。

三、域名服务器

域名系统的具体实现是由分布在各地的域名服务器来完成。可以让每一级的域名都有一个对应的域名服务器,使服务器的分布和上图(互联网域名空间)对应,但这样做会使得域名服务器的数量太多,降低域名系统运行效率。DNS采用划分区的办法来解决该问题。

1.域名服务器分级

一个服务器所管辖的范围叫做区(zone),一个区中的所有节点必须能够连通,每一个区设置响应的权限域名服务器,用来保存该区中所有主机的域名到IP地址的映射。(DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位,区可能大于域,可能小于域,也可能等于域)。

域名服务器可以划分为四种类型:

  1. 根域名服务器:是最高层次的域名服务器,也是最重要的域名服务器。所有根域名服务器都知道所有的顶级域名服务器的域名和IP地址。如果所有根域名服务器崩溃了,那么整个DNS系统就瘫痪了。因特网上一共有13个不同IP地址的根域名服务器(但并不止13台机器),到2012年5月止,13个根域名服务器一共分布在全球312个地点。世界上大部分DNS域名服务器都能够就近找到一个根域名服务器
  2. 顶级域名服务器:负责管理在该顶级应服务器注册的所有二级域名。
  3. 权限域名服务器:权限域名服务器即是负责一个区的域名服务器,当一个权限域名服务器不能够该出最后的查询回答时,就会告诉发出查询请求的DNS客户,下一步应该找哪一个权限域名服务器。
  4. 本地域名服务器:当一个主机发出DNS请求时,这个查询报文就发送到本地域名服务器。

2.域名查询过程

2.1.主机向本地域名服务器查询——递归查询

本地域名服务器采用递归查询

主机向本地域名服务器查询是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就是以DNS客户的身份,向其他根域名服务器继续发出查询请求报文(替主机继续查询)。

2.2.本地域名服务器向根域名服务器查询——迭代查询

本地域名服务器采用迭代查询

本地域名服务器向根域名服务器查询采用迭代查询。当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器“下一步应该向哪一个域名服务器进行查询”,然后本地域名服务器继续后续的查询。

此外,为了提高DNS查询效率,域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

  • 2
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

冯Jungle

您的支持是对我最大的鼓励

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值