OC网络学习02:DNS探索
DNS 是什么?
DNS
,就是 Domain Name System
的缩写,翻译过来就是 域名系统
。是互联网上作为 域名和IP地址相互映射的一个分布式数据库
。DNS
能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 IP
数串。通过 域名
,最终得到该域名对应的IP地址的过程叫做 域名解析
(或主机名解析)。
举例:如果你要访问域名 www.bboyzj.cn
,首先要通过 DNS
查出它的 IP
地址是 113.31.107.233
。
查询过程
虽然只需要返回一个 IP
地址,但是 DNS
查询过程非常复杂,分成多个步骤
- 查询
IP
地址
终端执行:
1 | mac@bogon ~ % dig www.bboyzj.cn |
- 第一部分:查询 参数和统计
1 | ; <<>> DiG 9.10.6 <<>> www.bboyzj.cn |
- 第二部分:查询内容
1 | ;; OPT PSEUDOSECTION: |
查询域名 www.bboyzj.cn
的 A
记录,A
是 address
的缩写
- 第三部分:DNS服务器的答复
1 | ;; ANSWER SECTION: |
注:
A
:地址记录(Address),返回域名指向的IP地址
。CNAME
: 记录主要用于域名内部的跳转
。NS
:域名服务器记录
(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
上面的结果表示:
www.bboyzj.cn
内部跳转指向 bboyzj.github.io
,也就是说,用户查询 www.bboyzj.cn
的时候,实际上返回的是 bboyzj.github.io
的 IP
地址。即www.bboyzj.cn
的 CNAME
记录指向 bboyzj.github.io
的 IP
地址。这样的好处是,变更服务器 IP
地址的时候,只需要修改 bboyzj.github.io
这个域名就可以了,用户的 www.bboyzj.cn
域名不用修改
bboyzj.github.io
有四个 A
记录,即四个IP地址,3355
是 TTL
值(Time to live 的缩写),表示 缓存时间
,即 3355秒
之内不用重新查询。
- 第四部分:DNS服务器的一些传输信息
1 | ;; Query time: 65 msec |
本机的 DNS
服务器是 113.31.107.233
,查询端口号是 53
(DNS服务器默认端口),以及回应长度是 136
字节。
- 如果不想看到这么多内容,可以是用
+short
参数
1 | mac@bogon ~ % dig +short www.bboyzj.cn |
只返回 www.bboyzj.cn
对应的 四个
IP地址(即 A
记录)
域名的层次
DNS
服务器怎么知道每个域名的 IP
地址的呢?
答:分级查询
- 根域名(.root)
举例:bboyzj.github.io
显示为 bboyzj.github.io.
,这不是疏忽,而是所有域名的尾部,实际上都有一个 根域名
,实际上的域名是 bboyzj.github.io.root
,简写成 bboyzj.github.io.
。因为,根域名 .root
对于所有域名都是一样的,可以省略
- 顶级域名(一级)
根域名的下一级是 顶级域名(top-level domain,缩写 TLD)
,比如 .com/.net/.cn
- 次级域名(二级)
顶级域名的下一级叫 次级域名(second-level domain,缩写 SLD)
,比如 www.bboyzj.cn
中的 .bboyzj
- 主机(三级)
次级域名的下一级叫 主机(host)
,比如: www.bboyzj.cn
中的 www
,又称 三级域名
- 总结
域名的层级结构:主机名.次级域名.顶级域名.根域名
1 | host.sld.tld.root |
分级查询
分级查询
就是从 根域名
依次查询每一级的 NS
记录,知道查到最终的 IP
地址。需要明确的是 NS记录
是 域名服务器记录
(Name Server),返回保存下一级域名信息的服务器地址。大致过程如下:
根域名服务器
查到顶级域名服务器
的NS记录
和A记录
顶级域名服务器
查到次级域名服务器
的NS记录
和A记录
次级域名服务器
查到主机名
的IP
地址
从上面看到没有提及 根域名服务器
的 NS记录
和 A记录
,因为 根域名服务器
的 NS记录
和 A记录
地址一般是 不会变化的
,内置在DNS服务器中
目前,世界上一共有十三组根域名服务器,从 A.ROOT-SERVERS.NET
到 M.ROOT-SERVERS.NET
dig
命令+trace
参数显示DNS
的整个分级查询过程
1 | mac@MacdeMacBook-Pro ~ % dig +trace www.bboyzj.cn |
上面的命令列出了 根域名服务
器的所有 NS记录
,即 所有根域名服务器
1 | ; <<>> DiG 9.10.6 <<>> +trace www.bboyzj.cn |
然后,服务器跳转到 bboyzj.github.io
1 | www.bboyzj.cn. 1 IN CNAME bboyzj.github.io. |
最后,bboyzj.github.io
有4条A记录,即这四个IP地址都可以访问到网站。
1 | www.bboyzj.cn. 1 IN CNAME bboyzj.github.io. |
其他 DNS 工具
除了dig,还有一些其他小工具也可以使用。
- host 命令
host命令可以看作dig命令的简化版本,返回当前请求域名的各种记录。
1 | mac@bogon ~ % host bboyzj.cn |
- nslookup 命令
nslookup命令用于互动式地查询域名记录。
- Post title:OC网络学习02:DNS探索
- Post author:张建
- Create time:2023-04-06 11:22:53
- Post link:https://redefine.ohevan.com/2023/04/06/OC网络/OC网络学习02:DNS原理/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.