DNS
定义
DNS(Domain Name System),域名管理系统
作用非常简单,就是根据域名查出IP地址。
占用 53 端口号,同时使用TCP和UDP协议。
查询过程
dig 命令
bash
$ dig admin.zdzhangdi.cn
# 查询参数和统计
; <<>> DiG 9.10.6 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56117
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
# 查询内容
;; QUESTION SECTION:
;baidu.com. IN A # 结尾的“.”,即为根域名
# DNS服务器的答复
;; ANSWER SECTION:
baidu.com. 239 IN A 110.242.68.66
baidu.com. 239 IN A 39.156.66.10
;; Query time: 34 msec
;; SERVER: 192.168.x.x#53(192.168.x.x) # 本地DNS服务器和端口
;; WHEN: Mon Mar 04 09:28:19 CST 2024
;; MSG SIZE rcvd: 52
bash
$ dig +short baidu.com
110.242.68.66
39.156.66.10
bash
# 显示DNS的整个分级查询过程
$ dig +trace baidu.com
; <<>> DiG 9.10.6 <<>> +trace baidu.com
;; global options: +cmd
. 60909 IN NS e.root-servers.net.
. 60909 IN NS h.root-servers.net.
. 60909 IN NS b.root-servers.net.
. 60909 IN NS c.root-servers.net.
. 60909 IN NS a.root-servers.net.
. 60909 IN NS k.root-servers.net.
. 60909 IN NS j.root-servers.net.
. 60909 IN NS i.root-servers.net.
. 60909 IN NS m.root-servers.net.
. 60909 IN NS l.root-servers.net.
. 60909 IN NS f.root-servers.net.
. 60909 IN NS g.root-servers.net.
. 60909 IN NS d.root-servers.net.
;; Received 228 bytes from 192.168.3.1#53(192.168.3.1) in 2 ms
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 86400 IN DS 19718 13 2 8ACBB0CD28F41250A80A491389424D341522D946B0DA0C0291F2D3D7 71D7805A
com. 86400 IN RRSIG DS 8 1 86400 20240405170000 20240323160000 30903 . bhEdRzh9jUCDTbUE5ymyA1DdDajqx94Llx96BmX/4ZzO4eGuMOUepMi2 lhITP+jbv6bnWVfwuZ6fuxVBnWW4G5v1anGZGi8OSvs+AYj8ZfPqQ5M/ W9+3VLZcxxGfTOjZ6fPjbOuDMLPoMX0PyfXEc9oFzVI883eTSl3x8kpl IngWOWilBEM4a0sBlWrWDON+l/to8RVQfA5Hr9VyL/nzcCdAYt7xYfs0 vmpCes/HnTPro5/QpGBYp1EV6qIKMMcFB+ER7mOYnqguctKOWojDUqdg rzao2vAyOFYKMaYBjJ8g50CglrY2WK/LVpB4Xs/ORm3FH0rL3y1V8ov5 Z8cC+g==
;; Received 1169 bytes from 170.247.170.2#53(b.root-servers.net) in 129 ms
baidu.com. 172800 IN NS ns2.baidu.com.
baidu.com. 172800 IN NS ns3.baidu.com.
baidu.com. 172800 IN NS ns4.baidu.com.
baidu.com. 172800 IN NS ns1.baidu.com.
baidu.com. 172800 IN NS ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q2D6NI4I7EQH8NA30NS61O48UL8G5 NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 13 2 86400 20240329042457 20240322031457 4534 com. kl0onLpKNQYiCdaXwCuzQH/SmK+FB/81W0dxZY0fW79L65evDIyi4QiE AoNhJ7IzNQylPNcTQnNYsErIIOv+cQ==
HPVV1UNKTCF9TD77I2AUR73709T975GH.com. 86400 IN NSEC3 1 1 0 - HPVVP23QUO0FP9R0A04URSICJPESKO9J NS DS RRSIG
HPVV1UNKTCF9TD77I2AUR73709T975GH.com. 86400 IN RRSIG NSEC3 13 2 86400 20240328051810 20240321040810 4534 com. xJ0z6BbK/o1+tJO2Tsad2BFdnC29EmCa/ZX7/+NfdBk0Na7C+qKMhdIA UZ1qgz408hZ2azyMcoJpcK575DKSGw==
;; Received 653 bytes from 192.5.6.30#53(a.gtld-servers.net) in 61 ms
baidu.com. 600 IN A 39.156.66.10
baidu.com. 600 IN A 110.242.68.66
baidu.com. 86400 IN NS ns2.baidu.com.
baidu.com. 86400 IN NS ns7.baidu.com.
baidu.com. 86400 IN NS ns4.baidu.com.
baidu.com. 86400 IN NS dns.baidu.com.
baidu.com. 86400 IN NS ns3.baidu.com.
;; Received 328 bytes from 110.242.68.134#53(ns1.baidu.com) in 15 ms
域名结构
admin.zdzhangdi.cn
- 根域名
域名结尾的 ".",通常省略不写 - 顶级域名
TLD(Top-level domain)- 通用顶级域名,gTLD,如 .com、.net
- 国别顶级域名,ccTLD,如 .cn、 .us
- 二级域名
SLD(Second-level domain)
自己注册的域名,如 zdzhagndi、baidu - 子域名
(Subdomain)
是域名拥有者自行设置的,不用得到许可,如 www、admin
主要过程
本地DNS服务器 指用户客户端(手机、电脑等)连接Internet网络使用的DNS,默认使用的DNS是宽带运营商自动分配的DNS服务器,用户也可以将该DNS修改为公共DNS服务器,例如,114.114.114.114、8.8.8.8。
- 查询 浏览器缓存
- 查询 系统缓存 + hosts解析
- 查询 路由器缓存
- 查询 本地DNS服务器 缓存
- 本地DNS服务器 询问 根域名服务器,返回顶级域名服务器地址
- 本地DNS服务器 询问 顶级域名服务器,返回权威域名服务器的地址
- 本地DNS服务器 询问 权威域名(主域名)服务器,返回域名的IP地址
- 本地DNS服务器 保存结果至缓存
- 本地DNS服务器 返回结果给浏览器
递归与迭代
- 递归查询指的是查询请求发出后,域名服务器代为向下一级域名服务器发出请求,最后向用户返回查询的最终结果。使用递归查询,用户只需要发出 一次 查询请求。
- 迭代查询指的是查询请求后,域名服务器返回单次查询的结果。下一级的查询由用户自己请求。使用迭代查询,用户需要发出 多次 的查询请求。
一般我们向本地 DNS 服务器发送请求的方式就是递归查询,因为我们只需要发出一次请求,然后本地 DNS 服务器返回给我们最终的请求结果。
而本地 DNS 服务器向其他域名服务器请求的过程是迭代查询的过程,因为每一次域名服务器只返回单次查询的结果,下一级的查询由本地 DNS 服务器自己进行。
缓存
Chrome
bash
# chrom dns
chrome://net-internals/#dns
# 导出log
chrome://net-export/
# 查看log
https://netlog-viewer.appspot.com/#import
TTL
TTL(Time to live),指解析记录在本地DNS服务器中的缓存时间。
假设 TTL 设定为10分钟,当各地的 DNS 服务器接收到域名的解析请求时,会向权威服务器发出请求获取到解析记录,并在本地服务器保存10分钟,在10分钟内,解析请求将从本地缓存中读取,缓存失效后才会重新获取记录值。
- 浏览器DNS缓存的时间跟DNS服务器返回的TTL值无关, 它的缓存时间取决于浏览器自身设置。
- 系统缓存会参考DNS服务器响应的TTL值,但是不完全等于TTL值。
dns-prefetch
- 使用 dns-prefetch - MDN
记录类型
记录类型 | 使用说明 |
---|---|
A 记录 | 将域名指向一个 IP 地址。 |
CNAME 记录 | 将域名指向另一个域名,再由另一个域名提供 IP 地址。 |
NS 记录 | 将子域名交给其他 DNS 服务商解析。 |
AAAA 记录 | 将域名指向一个 IPv6 地址。 |
TXT 记录 | 对域名进行标识和说明,绝大多数的 TXT 记录是用来做 SPF 记录(反垃圾邮件)。 |
MX 记录 | 设置邮箱,让邮箱能收到邮件。 |
隐、显性 URL 记录 | 将一个域名指向另外一个已经存在的站点。 |
SRV 记录 | 用来标识某台服务器使用了某个服务,常见于微软系统的目录管理。 |
SVCB 记录 | 用来说明服务的 IP 地址,ECH 公钥以及其他建立连接所需的信息,通过一次 DNS 查询来加速通信连接过程。 |
HTTPS 记录 | HTTPS 记录是一类特殊的 SVCB 记录,说明 HTTPS 建联所需的信息。 |
参考
- 各记录类型说明及规则 - 腾讯云
其他命令
host
可以看作 dig
命令的简化版本,返回当前请求域名的各种记录
bash
$ host juejin.cn
juejin.cn is an alias for juejin.cn.w.cdngslb.com.
juejin.cn.w.cdngslb.com is an alias for juejin.cn.queniusz.com.
juejin.cn.queniusz.com has address 150.139.156.194
juejin.cn.queniusz.com has address 42.236.86.223
juejin.cn.queniusz.com has address 150.139.156.195
juejin.cn.queniusz.com has address 150.139.156.197
juejin.cn.queniusz.com has address 150.139.156.193
juejin.cn.queniusz.com has address 42.236.86.219
juejin.cn.queniusz.com has address 42.236.86.221
juejin.cn.queniusz.com has address 42.236.86.222
juejin.cn.queniusz.com has address 42.236.86.218
juejin.cn.queniusz.com has address 42.236.86.220
juejin.cn.queniusz.com has address 150.139.156.192
juejin.cn.queniusz.com has address 150.139.156.196
$ host baidu.com
baidu.com has address 110.242.68.66
baidu.com has address 39.156.66.10
baidu.com mail is handled by 20 jpmx.baidu.com.
baidu.com mail is handled by 20 mx50.baidu.com.
baidu.com mail is handled by 15 mx.n.shifen.com.
baidu.com mail is handled by 10 mx.maillb.baidu.com.
baidu.com mail is handled by 20 usmx01.baidu.com.
baidu.com mail is handled by 20 mx1.baidu.com.
nslookup
用于互动式地查询域名记录
bash
$ nslookup
> baidu.com # 输入要查询域名
Server: 192.168.3.1
Address: 192.168.3.1#53
Non-authoritative answer:
Name: baidu.com
Address: 39.156.66.10
Name: baidu.com
Address: 110.242.68.66
> exit # 退出
whois
查看域名的注册情况
bash
$ whois juejin.cn
## 结果:
% IANA WHOIS server
% for more information on IANA, visit http://www.iana.org
% This query returned 1 object
refer: whois.cnnic.cn
domain: CN
organisation: China Internet Network Information Center (CNNIC)
address: No. 4, South 4th Street
address: Zhong Guan Cun
address: Beijing 100190
address: China
contact: administrative
name: Yu Zeng
organisation: China Internet Network Information Center (CNNIC)
address: No. 4, South 4th Street
address: Zhong Guan Cun
address: Beijing 100190
address: China
phone: +8610-58813686
fax-no: +8610-58813632
e-mail: ceo@cnnic.cn
contact: technical
name: Anlei Hu
organisation: China Internet Network Information Center (CNNIC)
address: No. 4, South 4th Street
address: Zhong Guan Cun
address: Beijing 100190
address: China
phone: +8610-58813202
fax-no: +8610-58812666
e-mail: tech@cnnic.cn
nserver: A.DNS.CN 2001:dc7:0:0:0:0:0:1 203.119.25.1
nserver: B.DNS.CN 2001:dc7:1:0:0:0:0:1 203.119.26.1
nserver: C.DNS.CN 2001:dc7:2:0:0:0:0:1 203.119.27.1
nserver: D.DNS.CN 2001:dc7:1000:0:0:0:0:1 203.119.28.1
nserver: E.DNS.CN 2001:dc7:3:0:0:0:0:1 203.119.29.1
nserver: NS.CERNET.NET 202.112.0.44
ds-rdata: 57724 8 2 5d0423633eb24a499be78aa22d1c0c9ba36218ff49fd95a4cdf1a4ad97c67044
whois: whois.cnnic.cn
status: ACTIVE
remarks: Registration information: http://www.cnnic.cn/
created: 1990-11-28
changed: 2023-09-21
source: IANA
# whois.cnnic.cn
Domain Name: juejin.cn
ROID: 20061028s10001s89615648-cn
Domain Status: clientTransferProhibited
Registrant: 该域名已采取WHOIS隐私保护服务
Sponsoring Registrar: 厦门易名科技股份有限公司
Name Server: vip3.alidns.com
Name Server: vip4.alidns.com
Registration Time: 2006-10-28 09:45:33
Expiration Time: 2024-10-28 09:45:33
DNSSEC: unsigned
参考
- DNS 查询原理详解 - 阮一峰 2022
- DNS 原理入门 - 阮一峰 2016
- localhost 与 127.0.0.1 在本地开发中到底有什么区别? - 微信公众号