企业资料通讯Week5 (4) |DNS (网域名称系统)[一]

甚麽是 DNS?

想知道更深:鸟哥的 Linux 私房菜|第十九章、主机名称控制者: DNS 服务器
Domain Name System (网域名称系统,port 53), 可以将人类看的懂的网域名称EX:www.amazon.com ,转成机器看得懂的IP位址 EX:192.0.2.44。

https://ithelp.ithome.com.tw/upload/images/20211029/20135414QMWZTwSC4p.png

注: map 是映射,也是资料库的意思
hostname = domainname

DNS架构与工作

DNS(Domain Name System) 是域名和IP位址相互对映的一个阶层式的资料库。DNS 系统的工作原理和电话簿很像,
https://ithelp.ithome.com.tw/upload/images/20211030/201354144yY6pz3MMM.png

Q:为何要分那麽多台?单一台就好啦

A: IPv4 可以存2^16个,但IP位址,但如果单一个Database系统要存那麽多真的很没效率,既然一台没效率,那就分很多台分散吧!

负责解析域名

不过想想前面学过的,IP 转 Domain 理想中应该是网路七层的第三层router做的事情啊!但是router不仅要负责网路的连接、送封包还要选路径,那我们就让resolve(解析)的工作交给DNS吧!

  • Load Distribution: 一个IP 可以有多个domainname,一个domainname 也可以有多个IP。举个例子,同样是雅虎的domainname,在台湾与在日本可能会查到不同的IP,所以才会显示不一样的网站,用这个特性来达到 Load Balance(像是分散流量)。

阶层式架构

https://ithelp.ithome.com.tw/upload/images/20211029/20135414swPH0noRSu.png

  • DNS 解析 domainname 是倒过来解的,愈後面愈高层级 =>EX:www.facebook.com 的 "com" 是顶级(TLD[top-level domains]);facebook 是次级。
    注:台湾常见的是 Country code top level domain EX:.tw
    可以查:List of Internet top-level domains

是从最高层级往下问到最低层级负责的DNS。
13台Root name server (当然,全世界散布着至少1000台这些Root name server的复制品)已经写死在我们作业系统中了,刚开始会先挑其中一台问。

DNS查询方式

名词解释:

  • authoritative DNS servers:

An authoritative name server provides actual answer to your DNS queries such as – mail server IP address or web site IP address (A resource record). (就是为你解答完整IP位址的 DNS servers)

  • local DNS server:
    有点像是 proxy (代理)的角色,它有自己的cache(也会过期),严格来说并不属於阶层式DNS 的一部分,client 在一开始会先问它。
    注:如果一开始问local DNS server就查到IP的话,此时它也扮演 authoritative DNS server 的角色。

DNS分为Client和Server,Client一开始先发出一个Request 封包 问Local DNS server 某个Domain Name的真正IP地址(图片的例子是: gaia.cs.umass.edu),而Local的DNS server先会查自己的资料库。如果自己的资料库没有,则会往root DNS server寻问。
Root name server

而之後的查询有分两种方式,分别是Iterative (迭代)与Recursive (递回):

  • Iterative (迭代):
    像在玩RPG:「我不知道这个的答案,但是我知道某某或许知道,你可以问它」,也就是告诉你另一台可能知道答案的DNS之IP。

因为每个上一层的 DNS 服务器所记录的资讯,其实只有其下一层的主机名称而已!

https://ithelp.ithome.com.tw/upload/images/20211030/201354141iKuGX8jzr.png
1)接续上面local DNS server 资料库没有的情况,local DNS server 往 13台root DNS server中随机一台 问。
2)root DNS 给它线索,要local DNS server去找负责 .edu 的 Top-Level Domain(TLD) server
3)找到 TLD server,TLD server 告诉 local DNS server 去找负责 umass.edu 的次级DNS server
4)local DNS server继续又问又找的,直到找到最终完全解开该IP 位址之谜的 DNS server(authoritative DNS server),得到了答案,这才回传给 client。
最累的是 local DNS server (帮QQ)
local DNS server 会用cache记一段时间

  • Recursive (递回):
    https://ithelp.ithome.com.tw/upload/images/20211030/201354143ONyKm3HoP.png
    1)接续上面local DNS server 资料库没有的情况,local DNS server 往 13台root DNS server中随机一台 问。
    2)local DNS server 等待答案传上来(或是找不到)

注:

  • 因为local DNS 有catche功能,会把之前问过的人的位址暂时记住,因此Iterative 方法的local DNS 虽然第一次很忙,但是之後问一样的时候效率就很高了。
  • 因为很多TLD很常拜访,所以已经写入在local DNS中,反而是root DNS 少被问。

DNS Records

参见:cloudflare|DNS record

前面说DNS 有maping 功能,那麽它是怎麽记住这些纪录呢?
这里就要提到 Resource Record(RR)!

DNS records are used to map each website dns configuration so the DNS server knows which IP address is associated with each record.

RR 的内内容大致上有这些:
(name, value, type, ttl)
名词解释:

  • name 是指 Domainname
  • value 要看type 种类而定
  • type 是指RR的类型
  • TTL 是 Time-to-live(单位是秒),指出过的多久需要更新一次。
    不同阶层的DNS 的TTL也不一样,authoritive DNS 最久(因为就是负责该完整IP)

补充: 还有 IN 这样的 Fieldclass(目前使用的也只有IN这种,会省略)

下图是更明确的格式定义
https://ithelp.ithome.com.tw/upload/images/20211031/20135414anadMFOtdN.png
它说 TTL 与 Fieldclass 是可以没有的

Resource Record(RR) 种类

DNS RR 有分很多种,课本只有教4种。网路上都可以查到,如图:
https://ithelp.ithome.com.tw/upload/images/20211031/201354140E9hMRQphA.png
截自:赏月斋|DNS资源纪录(Resource Record)介绍

这里就课本来介绍几个
https://ithelp.ithome.com.tw/upload/images/20211031/20135414GnTGAGCAMG.png

  • A :主要用来对应主机名称与IP位址,它的value 是IPV4 32bit的IP。
    EX:

domain  / [ttl]  /  class    /   rr  /  ipv4
    joe                 IN      A      192.168.254.3 
    

或是这种


domain   /   rr    /    ipv4      /  ttl
    @	        A	   192.0.2.1	  14400
    
  • NS :它的 value 会是 authoritative DNS 的 domainname

  • CNAME :不给IP,给别名。也就是canonical-name,它的value 是该domainname的别名,拿下面的图来解释
    https://ithelp.ithome.com.tw/upload/images/20211031/20135414j0thGtVISZ.png
    bar.example.com.会对应到它的别名,foo.example.com.,
    并在foo.example.com重新启动检查,然後返回 192.0.2.23。
    使用CNAME的好处:若服务器IP位址改变,则只需修改该域名的A记录即可。

  • MX : 它的value 会是email server "@"後面的那一串
    EX:
    https://ithelp.ithome.com.tw/upload/images/20211031/20135414kw4wVs9S6l.png

注:图中的 "preference" 是指优先偏好,数字愈小优先权愈高,0最优先。

所以可能会有这种情况:
nccu.edu.tw, 1.2.3.4, A 指的是 web server
nccu.edu.tw, 1.2.3.5, MX 指的是 mail server
两个指的是不同的server

下一篇文章:阿沁的DNS(2)

参考资料:
域名系统
什麽是 DNS?
List of Internet top-level domains
Root name server
鸟哥的 Linux 私房菜|第十九章、主机名称控制者: DNS 服务器
cloudflare|DNS record
NIXCP|What is a DNS record? DNS Record Types Explained
DNS记录类型列表|WIKI


<<:  JS 44 - 输入网址就能使用的 RSS 阅读器

>>:  课堂笔记 - 深度学习 Deep Learning (18)

#25 Click! Serve! Plus

今天我们来为我们昨天做的「Click! Serve!」增加一些「设定」。 增加 pkg 设定 昨天我...

DAY 14 - 哥布林 (1)

大家好~ 我是五岁~ 我今天要来挑战没画过的哥布林~ ᕕ(ᐛ)ᕗ 首先 先去浏览了一下哥布林通常长怎...

Day24-Go Json处理

前言 上两篇中我们在介绍 Go 网路的操作中,有稍微提到 json 格式,那这篇将介绍有关何为 js...

JAVA 语言

https://wolkesau.medium.com/java-语言-8e8158d75b5d J...

实施入侵检测系统以应对安全事件和基於生物识别的存取控制-纵深防御(Defense-in-depth)

纵深防御是一种“整合人员、技术和运营能力的资讯安全战略,以在组织的多个层次和维度之间建立可变的屏障”...