DNS 皮毛

这是一篇介绍 DNS(Domain Name System ) 皮毛的文章。

一、什么是 DNS

DNS = Domain Name System

我们平时访问网页,通常都是输入一个网站的域名(eg: https://google.com ),然后游览器会返回相应的网页给我们。

游览器拿到我们输入的域名,然后通过网络,最终找到相应的服务器拿到了我们要的网页,再返回给游览器。

在万维网中,服务器地址通常是用 IP 进行表示的。那么,我们的输入的域名,是怎么变成服务器的 IP 地址呢?

这个转换的过程,就是DNS 要做的。

二、演变

雏形

互联网早期,只有几百台主机。所以当时的 DNS 系统,就是一个简单的 HOSTS.TXT文件,然后坐了两件事:记录和同步。

HOSTS.TXT 里简单的记录了主机域名和 IP 地址的对应关系。这个文件存放在一台主机上,然后分发到整个网络。当大家通过域名访问的时候,都会HOSTS.TXT获取到域名对应的 IP 地址,然后再去访问实际的主机。

如果 HOSTS.TXT 内对应关系发生变化了,更新手段也是很原始,通过电子邮件通知网络的备份,让备份重新拉去 HOSTS.TXT 进行更新。

DNS

后来互联网主机数量局增,维护和更新策略都发生了变化。
现代的 DNS 系统被设计成了自动更新和维护。

三、DNS服务器结构

域名的结构是…d.c.b.a 这个形式。比如www.google.com 这个域名,.com是顶级域名,.google.com.com的下一级子域名,.www.google.com又是.google.com下一层级的子域名,以此类推。

DNS的域名服务器是一个倒树形,根节点是根域名服务器,下边的第一层树,负责各个顶级域名(eg: .com、.org、.net等等),再下层则是上一层的子域名。

四、一个简单的DNS请求过程

比如我需要请求google.com这个页面,在输入url 后,回车。

  1. 首先会查找游览器本身的DNS缓存,存在则直接返回,不存在则进入步骤2;
  2. 去附近的 DNS 缓存服务器查询(是怎么知道这个 DNS 缓存服务器地址呢,这个一般是由运营商配置地址的,存在则直接返回,不存在则进入步骤3;
  3. 根域名服务器查到,一层一层向下查询(分为递归和迭代),直到查到域名所对应的记录为止,然后返回。
  4. 返回途中,DNS缓存更新,游览器拿到 IP 地址进行访问。

五、DNS 记录都记写什么

之前说到从 DNS缓存或者 DNS服务器里查询相应记录,那记录到底都记了些什么呢?

记录是一条一条的,每条记录分成4个字段:Name、Value、Type、TTL 四个字段。

TTL(Time To Live),一个时间字段。用于标记这条记录的存活期,但超过存活期,记录就需要被更新。

Type 是记录的类型,决定了 Name 和 Value 的组成。

Type的常用类型有:

A记录,Address
A 记录就是地址记录,Name 是域名,Value 是 IP 地址。因为有的域名或有多个服务器提供服务,所以会存在一个域名对应多个 IP 地址的情况。

一对多的例子:

Name Value
isalucard.com 192.30.252.154
isalucard.com 185.199.109.153

CNAME 记录
CNAME是别名记录的意思。依然可以存在一个域名对应多个 IP 的 A 记录,那当然也可以为一个 IP 地址设置多个域名。比如我把博客部署在了192.30.252.154这台服务器上,配置了一个默认的域名jinxm.github.io,但是我嫌弃这个域名不好看,于是我就给他增加了一个别名isalucard.com。所以,192.30.252.154这个 IP 就对呀了两个域名。

Name Value
jinxm.github.io 192.30.252.154
isalucard.com jinxm.github.io

NS 记录,Name Server

域名服务器记录,用以记录这个域名由哪个域名服务器来解析,一对多关系。

eg: com 域名的解析服务器

// dig ns com 命令查询
com.            156404  IN  NS  c.gtld-servers.net.
com.            156404  IN  NS  b.gtld-servers.net.
com.            156404  IN  NS  i.gtld-servers.net.
com.            156404  IN  NS  e.gtld-servers.net.
com.            156404  IN  NS  f.gtld-servers.net.
com.            156404  IN  NS  d.gtld-servers.net.
com.            156404  IN  NS  m.gtld-servers.net.
com.            156404  IN  NS  g.gtld-servers.net.
com.            156404  IN  NS  a.gtld-servers.net.
com.            156404  IN  NS  l.gtld-servers.net.
com.            156404  IN  NS  h.gtld-servers.net.
com.            156404  IN  NS  j.gtld-servers.net.
com.            156404  IN  NS  k.gtld-servers.net.

你可能感兴趣的:(DNS 皮毛)