本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。
前言
之前也曾经在专栏中写过关于应用层的内容,但那时是初学,仅仅是囫囵吞枣地过一遍,再加上是以“自顶向下”的思路,由于很多细节涉及到了更底层的知识,所以没能理解透。
现在又“自底向上”系统学了一遍。一路走来,重新回到应用层,又有了新的体悟。
废话不多说,正文开始————
DNS概述
- 关键字: 域名 ip地址 UDP
- 过程概念图:
首先向local server查询;如果查询不到,就通过递归/迭代的方式向上查找(直到root server);
为提升效率,在返回路径中会为沿途结点添加该查询结果,到下次其他人查询相同内容时就不需要再向上找了。
关于域名空间
- (截止该书出版)根服务器只有13台,但有超过250个顶级域,每个域都覆盖了多台主机。
- 域名结构是一个树状结构,命名分为通用(generic)和国家(country)两种
以下是一个例子:
www.tsinghua.edu.cn
从左到右对应了world wide web;学校名;教育;中国
即树的自顶向下对应于字符串的从右往左。
- 域名不区分大小写
- 当想新建域名的时候,必须向所在的上一层申请(成为它的子结点)
DNS中的DRR(Domain Resource Records)
这相当于是一个数据库,其中每条记录是一个五元组。
(注:我看了一下自顶向下方法以及我之前根据它写的笔记,发现上面写的是四元组,我也不懂哪个才是权威,先持保留意见吧)
五元组表示如下:
其中的type值得展开说说
类型 | 作用/含义 |
---|---|
SOA | start of authority |
A | 主机的ipv4地址 |
AAAA | 主机的ipv6地址 |
MX | 指定为目标域接收邮件的主机名 |
NS | 为域(或其子域)指定一个命名服务器,该主机会有域数据库的副本 |
CNAME | 当指向域名不完全正确的时候,可将其修正过来 |
PTR | pointer,ip->name,反向查询 |
SPF | sender policy frame work,记录该域中的何种类型的机器会发送邮件 |
SRV | 比MX更新的服务,仅用于邮件服务 |
TXT | 文本 |
对以上表格有几点说明:
- 关于CNAME:原书中的c是指canonical(典型的),但是我看书中所给的单行元组代码示例,确实是将有偏差的地址修正过来并体现在了value中。这个看个人怎么理解吧,我认为它的作用相当于起别名。
- 关于SPF:对于原文出现的machanism我也不是很清楚它在代指什么,只好直译了。
这里有一个很有意思的应用就是甄别垃圾邮件。我认为它的大致意思是:如果接收方检查该标志位,发现发送方的域一直都只有某一类型的机器在发送邮件,说明很有可能是专门发垃圾邮件,不干别的事。
- 关于SRV:我拿它和MX比较,说明它和MX有可比之处(功能一样)。