DNS(Domain Name System),首先我们学习需要一本大学课本《计算机网络》还有阮一峰老师的博客
打开课本第七章,应用层,可以看到我的笔记写着“选择题”三个字,这就解释了为什么我需要重新学习DNS原理(强颜欢笑(强词夺理
DNS的作用就是寻址,因为每一个网站的IP地址很难记,所以我们开始使用域名,通过域名对应的IP来访问网站。DNS就是干这个的。
那么我们怎么知道域名和IP的对应关系呢?有一个东西叫做DNS服务器。上校园网的时候要配置IP地址,对,就是那个默认不用你填,会动态分配的部分(DHCP)。比如说警察叔叔查水表,他就要去系统里面输入某个人的名字,然后拿到这个人的家庭地址。
那找到地址之后怎么一步步找到那个人呢?
分级查询
DNS服务器一层层的解析,也叫分级查询。
一个网址:www.cs.washington.edu
实际上网址隐含一个根域名,它的全址应该是www.cs.washington.edu.root,简写为www.cs.washington.edu.。
我们这里以忽略根域名为例。
最后一个,.edu是顶级域名,往前是次级域名,以此类推。
网址的层级关系如下:
主机名.(n级域名.)次级域名.顶级域名.根域名
DNS服务器内置了根域名,因为根域名一般不会变。
根域名服务器有很多个,DNS服务器选择最快回应的那一个缓存,以后查询就找它。
每一级域名都有自己的NS(name server)记录,NS记录指向该级域名的域名服务器。这些服务器知道下一级域名的各种记录。
查询过程如下:
1.从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录(IP地址)
2.从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录(IP地址)
3.从"次级域名服务器"查出"主机名"的IP地址
DNS的记录类型
(1) A:地址记录(Address),返回域名指向的IP地址。(还有一个是AAAA,区别在于A是IPv4,AAAA是IPv6)
(2) NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
(3)MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
(4)CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。
(5)PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名。
常用的有A、NS、CNAME。
A和CNAME可以有多个,NS一般至少有两个。
CNAME可以看作是一个网址的别名,比如我们访问某个网址www.some.com,有时候忘记输入www,但是依旧可以访问,这就是因为some.com是www.some.com的CNAME(或者后者是前者的别名,大多数是这种情况,因为我们申请域名的时候一般不含www),我们访问some.com的时候,DNS解析至www.some.com,然后解析到www.some.com的IP地址。
DNS查询示例和建站DNS设置示例
- 查询
使用DIG工具查询
查看http://www.ruanyifeng.com/blog/2016/06/dns.html
记得使用命令dig +trace 命令 -
建站DNS设置
以我自己的网站为例,我在namesilo注册了一个域名meeeeow.com,在vultr购买了VPS,两个网站都提供了DNS解析服务,但是毕竟IP是在VULTR的,自己觉得将DNS服务和IP都放在一起更方便(强烈推荐namesilo,便宜方便不坑,狗爹的中文站点好像有点问题,当时注册不了)
当然了,也有国内的DNS服务,都可以自由选择。
注册了域名和IP后,域名解析的设置是在域名商的设置页面里面配置的。
这里就以namesilo为例,购买域名以后在右上方选择manage my domains,这里显示了个人的域名列表,点击需要操作的域名,进入以下界面
点击标记的地方,可以更换默认的nameserver(这里已经改成了vultr的免费DNS),还可以编辑域名的A和CNAME
hostname是主机名,一般CNAME填www,A填@即为留空,还有一个*表示泛解析