我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

目录

0. 简介

为了保证网站的正常访问,域名解析协议(DNS)其实在幕后做了很多努力,本文将深入讲解DNS协议的原理,了解我们每天接触的网站究竟是如何运作的。

1. 什么是DNS协议

在学习DNS协议之前我们先来区分一下域名和IP地址两个概念:

不知道大家有没有搞混域名和网址这两个概念,可以这样理解:网址里面有一个域名,比如:网址就是域名。

由于 IP 地址不方便记忆,无法体现地址组织的名称和性质,人们设计了域名,并通过域名解析协议(DNS)将域名和 IP 地址相互映射,使人们可以更方便地访问互联网,而不必记住机器能直接读取的 IP 地址字符串。将域名映射到 IP 地址称为正向解析,将 IP 地址映射到域名称为反向解析。

DNS协议可以使用UDP或者TCP进行传输,使用的端口号为53。不过大多数情况下DNS都是采用UDP进行传输。

2. 域名详细信息

❓ 谁来决定和管理域名?它们不可能是随机的,对吧?

全球域名的最高管理机构是一个叫ICANN(Names and Names)的组织,总部设在美国加州,负责管理全球域名系统的运作。

2

域名其实是具有一定的层级结构的,从上到下依次为:根域名、顶级域名(TLD)、二级域名、(三级域名)

3

① 顶级域名

我们先说一下顶级域名(TLD),也就是最高级别的域名,简单来说就是URL的最后一部分,比如一个URL的顶级域名是.com。ICANN的主要任务之一就是确定哪些字符串可以作为顶级域名。截止2015年7月,顶级域名共有1058个,大致可以分为两类:

当然,ICANN不会自己管理这些顶级域名,因为根本就不可能全部管理。想想看,顶级域名有1000多个,每个顶级域名下又有很多批发商,如果一个一个去管理,太麻烦了。ICANN的政策是每个顶级域名都会找一个托管人,所有与域名有关的事情都由托管人来处理。ICANN只和托管人联系,这样管理起来就轻松多了。比如.cn国家顶级域名的托管人就是中国互联网络信息中心(CNNIC),.cn域名的各种政策都是由CNNIC来制定的。

② 二级域名

二级域名(Level,SLD)在通用顶级域名或国家顶级域名下,具有不同含义:

三级域名是 形式的域名,可以看作是二级域名的子域名。特点是域名包含两个 .。对于域名拥有者/用户来说,三级域名是二级域名的附属物,不需要单独付费。三级域名甚至不能称为域名,而一般被称为域名下的“二级目录”。

③ 根域名

❓ 那么根域在哪里?根域不是层次结构中的顶层吗?为什么我在域名中看不到它?

由于ICANN管理所有顶级域名,所以它是最高级别的域名节点,称为根域名。有时写成,即末尾多了一个点。这个点就是根域名。

4

理论上,所有域名查询都要先查询根域名,因为只有根域名才能告诉你哪个服务器管理着某个顶级域名。事实上也确实如此,ICANN 维护着一个列表(根域名列表),记录着顶级域名和对应的托管商。

5

比如我要访问 abc.xyz,首先要查询根域名列表,它会告诉我 .xyz 这个域名是由一家公司托管的。根域名列表还记录了 . 由 托管,.apple 由 Apple 托管,等等。

由于根域名列表很少发生变化,大多数DNS服务提供商都提供了它的缓存,因此对根域名的查询并不是那么频繁。

3.域名服务器详解

域名服务器是指管理域名的主机和相应的软件,它可以分层管理域名的相关信息,域名服务器负责的层级称为区域,域名的每一层都有一个域名服务器:

下面这张图很直观:

除了以上三类DNS服务器外,还有一类不在DNS层次结构中,但又非常重要的DNS服务器,即本地域名服务器。下面我们就来讲解一下这四种服务器是用来做什么的。

① 根域名服务器

上面提到,ICANN 维护着一个根域名列表,里面包含了顶级域名以及对应的托管商。其实根域名列表的正式名称是 DNS 根区,存储 DNS 根区文件的服务器就叫 DNS 根域名服务器。根域名服务器里面存储了所有顶级域名服务器的地址。

由于早期的DNS查询结果是一个512字节的UDP数据包,里面最多可以包含13个服务器地址,因此规定全球共有13台根域名服务器,编号从到,其中美国有10台,荷兰、瑞典、日本各一台。

前面我们说过,理论上所有的域名查询都要先去查询根域名,所以一般来说所有的域名服务器都会注册一个根域名服务器IP地址的缓存,以便在有需要的时候向其发送请求。

② 顶级域名服务器

按照根域名服务器管理顶级域名的逻辑,顶级域名服务器显然是用来管理该顶级域名下注册的所有二级域名,并记录这些二级域名的IP地址的。

③ 权威域名服务器

按照上面的逻辑,权威域名服务器应该管理二级域名下注册的所有三级/四级域名,但事实并非如此。如果一个二级域名或一个三级/四级域名对应一个域名服务器,那么域名服务器的数量就会很多。我们需要使用划分区域的方法来解决这个问题。那么权威域名服务器就是负责管理一个“区域”的域名服务器。

❓ 什么是区?区是如何划分的?

区域和域名其实是不一样的,区域的划分方式有很多种,以百度为例,我们假设有三个三级域名: 、 、 。我们可以这样划分,把他们放到权威域名服务器,把他们放到权威域名服务器。而且权威域名服务器和权威域名服务器地位是一样的,具体的划分方式由百度根据域名数量、访问量等情况来决定。

画一张图直观的理解一下:

④ 本地域名服务器

除了以上三类DNS服务器外,还有一类DNS服务器不在DNS层级中,但非常重要,那就是本地域名服务器(又称权威域名服务器)。本地域名服务器是计算机解析时的默认域名服务器,即计算机中设置的首选DNS服务器和备选DNS服务器。常见的本地DNS服务商有电信、联通、、阿里巴巴等。

8

每个互联网服务提供商或大学,甚至大学里的每个系,都可以有一个本地域名服务器。当主机发送DNS查询请求时,查询请求消息被发送到该主机的本地域名服务器。本地域名服务器管理本地域名的解析和映射,并可以向上级域名服务器进行查询。

那么本地域名服务器如何将查询请求转发给上级域名服务器呢?

4.DNS查询方法

DNS查询具体有两种方法:

迭代是指如果请求的接收者不知道请求的内容,则接收者会充当请求者,发出相关请求,直至获得所需的内容,然后将内容返回给原始请求者。

简单来说,递归查询是指,如果A请求B,那么B作为请求的接受者,必须给A想要的答案;而迭代查询是指,如果接收者B没有请求者A所需的确切内容,那么接收者B会告诉请求者A如何获取内容,但不会自己提出请求。

一般来说,域名服务器之间的查询都是采用迭代查询的方式,避免对根域名服务器造成过大的压力,下面两个图可以很好的理解。

1)递归查询:

9

2)迭代查询:

10

5.域名缓存

以上就是域名服务器之间的DNS查询请求流程,然而现实中无数的网民都希望随时上网,每次都访问本地域名服务器获取IP地址显然是不现实的,解决办法就是使用缓存来保存域名与IP地址的映射关系。

在计算机本地缓存 DNS 记录有两种方式:浏览器缓存和操作系统缓存。

6. 完成域名解析流程

OK,结合我们上面说的域名服务器与域名缓存之间的DNS查询请求过程,就是一个完整的DNS协议域名解析过程,这里我们正向解析为例(域名解析成IP地址):

4) 本地域名服务器将获取到的IP地址返回给操作系统,并缓存该IP地址。 5) 操作系统将IP地址返回给浏览器,并缓存该IP地址。 6) 至此,浏览器获取到该域名对应的IP地址,并缓存该IP地址。

配合下图直观的理解:

二维码
扫一扫在手机端查看

本文链接:https://by928.com/4499.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线