今天复习了一下DNS的相关知识,水一篇文章记录一下。

参考文章

github-DNS
写给前端工程师的DNS基础知识
DNS解析
DNS递归查询与迭代查询

DNS

为了识别一个实体,TCP/IP协议通过IP地址来唯一确定一台主机到因特网的连接。但是,由于IP地址非常难记,人们更愿意用名字而不是数字来识别。因此互联网需要一种能够将名字映射为数字的目录系统。

域名系统(Domain Name System,DNS)便是这样的一个系统,为客户端提供IP地址查询的服务。我们访问网站输入网站域名,通过DNS客户端像DNS服务器发送查询请求,DNS服务器就解析我们的域名为相应的IP地址。

DNS使用UDP协议,使用客户端-服务器模型

层次域名空间

因特网使用层次结构的域名命名方法,如下图:

一个域名可以划分为多个层次,如顶级域、二级域、三级域等,不同域名中用点隔开。

顶级域名分为:

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

(2)通用顶级域名gTLD:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。

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

域名服务器

根域名服务器

根域名服务器全球共有13台,每一台都覆盖了整个域名空间,它并不负责查找域名,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。每个服务器都是冗余服务器的集群,以提供安全性和可靠性。

顶级域名服务器

顶级域名服务器负责管理在该顶级域名服务器注册的所有二级域名(.com)。收到DNS请求时,可能直接返回查询结果,也可能返回下一步查找的服务器地址。

授权域名服务器

每台主机都必须在授权域名服务器处登记,然后服务器为其授权提供IP地址。(这里不太确定,是否意思就是提供购买域名的服务的服务器

本地域名服务器

因特网服务提供者(ISP),或一所大学都可以拥有一个本地域名服务器,在发送DNS请求时,请求首先会被发送到本地域名服务器。

域名解析过程

总体过程

1.查询 www.baidu.com

2.访问客户端 DNS 缓存:浏览器缓存 -> 系统缓存(host) -> 路由器缓存

3.访问 ISP DNS 服务器(ISP,互联网服务提供商,有联通电信移动等。如果你是电信网络,则进入电信的 DNS 缓存服务器,以下简称本地),如果本地服务器有,则4.直接返回;如果没有,让本地 DNS 服务器去逐个咨询查找。

5.本地去咨询 DNS 根服务器,DNS 根服务器发现是 .com 区域 管理的,告诉本地去咨询它。

6.本地去咨询 .com 顶级域服务器,.com 域服务器告诉本地去咨询 baidu.com 主区域 的服务器。

7.本地去咨询 baidu.com 主域名服务器,baidu.com 域服务器查找到对应的 IP 地址,返回给本地。

8.本地 DNS 云服务器通知用户对方 IP 地址,同时缓存这个 IP 地址,下次就直接访问了。

递归查询与迭代查询

递归查询:主机向本地域名服务器的查询一般都是采用递归查询。
迭代查询:本地域名服务器向根域名服务器的查询的迭代查询。

评论