DNS概念入门介绍

DNS请求中,经常涉及到的概念有很多,例如A记录,CNAME,TTL,NS,递归服务器,递归查询等;我们先通过熟悉DNS的一次请求过程,再来逐一介绍这些概念;

一、DNS查询过程

递归查询过程.png

首先client对一个网址发起请求,这时候需要DNS服务,把网址转换为相对应的IP地址,DNS服务首先需要知道自己的DNS服务器是谁,这个一般都是系统里面的配置,比如 windows,mac电脑网络设置中都会有DNS服务器,如果不手动修改,DNS地址一般都为本地局域网的DNS服务器;linux系统,DNS服务器在 /etc/resolv.conf 文件中设置;
假如client现在查询 www.baidu.com
步骤一,client向递归服务器发起DNS查询
步骤二,递归服务器收到请求之后,开启发起DNS的递归查询;递归查询的过程如 图中2,3,4;在介绍递归查询之前,先看一下域名的组成结构:
例如 www.baidu.com. ,

client ————》 local DNS
local DNS ————》.根记录
local DNS ————》.com记录
local DNS ————》域名NS记录
local DNS ————》返回A记录
下面通过抓包看一下具体的过程:

递归查询抓包.png

图中包72 递归服务器向 根服务器查询 www.baidu.com
根服务器查询.png

包141 根服务器返回 com.的地址

根服务器相应.png

递归服务器向com.发起www.baidu.com查询
com查询

com.返回 百度ns 的地址
com响应

递归服务器向百度NS发起请求
baiduNS查询

百度NS发回最终www.baidu.com的cname解析
baiduNS响应

因为www.baidu.com是 cname到其他域名,下图又进行了一次对shifen.com的查询,查询过程和以上的过程一样
shifen.com查询过程

最后 递归服务器取到了www.baidu.com的解析,把解析返回给client;

二、涉及到的概念

A记录,A记录是域名对应的IP地址,例如我们想把服务器对外提供服务,把域名映射到我们的服务器地址上就可以;
CNAME,是域名的别名,比如www.baidu.com的 CNAME是www.a.shifen.com.;一般大流量的域名都是有CNAME记录的,在实际的场景中,CNAME记录方便做调度,比如CDN场景中,CDN厂商只提供给我们CNAME,具体CNAME后端服务的IP地址他们就可以控制了;
TTL:DNS服务器对域名的缓存时间,直接的感受

TTL

如果client发起了一次域名查询,递归服务器发现这个域名的TTL还没有过期,就不用重新发起查询了,可以直接把上次查询的结果直接返回给client;假如递归服务器发现www.baidu.com这条记录的TTL请求过期了,但是 baidu.com的NS的TT了没有过期,就可以省去前面 2,3步骤,直接向baidu.com发起查询。例如:
NS直接发起请求

NS 就是实验过程中提到的baidu.com这个地址,他是www.baidu.com记录的上游。baidu.com里面有 xxx.baidu.com所有的地址,这个服务器一般是企业自己的服务器,向权威机构注册,就是向 com.注册告诉他所有查询 带有 baidu.com后缀的请求都发给他;
递归服务器:就是上面所说的代替client去查询DNS请求的服务器;

以上就是DNS相关的一些基础概念,可以用dig, nslookup这些命令查询一些常见的域名,看看他们 TTL,NS 的返回结果;

你可能感兴趣的:(DNS概念入门介绍)