跳至正文

什么是DNS? 🌐

当你输入网站地址时,如何能够访问该网站呢?这都要感谢DNS!我来详细解释DNS到底是什么、为什么需要它,让初学者也能轻松理解!

用日常生活比喻DNS?

让我们把DNS比作电话簿

电话簿的故事 📞

想给朋友打电话时:

没有电话簿:
"得打010-1234-5678..."
→ 号码难记 😓

使用电话簿:
搜索"张三"
→ 电话簿给出010-1234-5678
→ 自动拨通电话! ✅

DNS也一样!

访问网站:

没有DNS:
"得访问192.168.1.1..."
→ 数字IP不可能记住 😓

使用DNS:
输入"google.com"
→ DNS给出172.217.175.46
→ 自动连接网站! ✅

DNS的定义

DNS (Domain Name System)

  • 将域名转换为IP地址的系统
  • 互联网的"电话簿"
  • 将人类易读的地址转换为计算机理解的数字
google.com → 172.217.175.46
baidu.com → 220.181.38.148

为什么需要DNS?

问题:IP地址难以记忆

❌ 192.168.1.1
❌ 172.217.175.46
❌ 223.130.195.95

→ 只有数字无法知道是什么网站
→ 不可能记住

解决:使用域名

✅ google.com
✅ baidu.com
✅ github.com

→ 有意义且易于记忆
→ 可以使用品牌名称

DNS工作过程

1. 在浏览器中输入地址

用户:输入"google.com"

2. 开始DNS查询

浏览器 → DNS服务器: "告诉我google.com的IP地址"

3. DNS服务器层级结构

1. Root DNS(根)

2. TLD DNS(.com、.net等)

3. Authoritative DNS(拥有实际IP)

4. 返回IP地址

4. 用IP地址连接

DNS服务器 → 浏览器: "是172.217.175.46"
浏览器 → 172.217.175.46: 连接请求
网站加载! ✅

DNS查询详细过程

1. 检查缓存
浏览器缓存 → 操作系统缓存 → 路由器缓存
└─ 如果有就直接使用 ⚡

2. Recursive DNS(运营商DNS)
└─ 向ISP的DNS服务器查询

3. Root DNS服务器
└─ 告诉".com去这里"

4. TLD DNS服务器(.com)
└─ 告诉"google.com去这里"

5. Authoritative DNS
└─ "google.com的IP是172.217.175.46"

6. 缓存结果
└─ 为以后保存

DNS记录类型

A记录(Address)

域名 → IPv4地址

example.com → 192.168.1.1

AAAA记录

域名 → IPv6地址

example.com → 2001:0db8:85a3::8a2e:0370:7334

CNAME记录(Canonical Name)

别名 → 其他域名

www.example.com → example.com
blog.example.com → example.com

MX记录(Mail Exchange)

指定邮件服务器

example.com → mail.example.com(优先级10)

TXT记录

存储文本信息
主要用于所有权验证、SPF、DKIM等

example.com → "v=spf1 include:_spf.google.com ~all"

NS记录(Name Server)

指定域名服务器

example.com → ns1.example.com

DNS缓存

缓存层级

1. 浏览器缓存
└─ 最快(1ms)

2. 操作系统缓存
└─ 非常快(5ms)

3. 路由器缓存
└─ 快(10ms)

4. ISP DNS缓存
└─ 正常(50ms)

5. 实际DNS查询
└─ 慢(200ms+)

TTL(Time To Live)

为每个DNS记录设置有效期

TTL: 3600(1小时)
→ 1小时内使用缓存
→ 1小时后重新查询

优点:

  • 快速响应
  • 减少DNS服务器负载

缺点:

  • IP变更时不能立即反映

DNS服务器类型

1. Public DNS(公共DNS)

Google DNS:

主DNS: 8.8.8.8
备用DNS: 8.8.4.4

→ 快速且可靠

Cloudflare DNS:

主DNS: 1.1.1.1
备用DNS: 1.0.0.1

→ 最快速度
→ 注重隐私

Quad9:

9.9.9.9

→ 注重安全(阻止恶意网站)

2. ISP DNS(运营商DNS)

由中国电信、中国联通、中国移动等提供
→ 自动设置
→ 经常较慢

DNS安全

DNS欺骗(DNS Spoofing)

攻击:

黑客操纵DNS响应
google.com → 黑客服务器IP

用户访问假网站
→ 信息窃取风险 🚨

防御:

DNSSEC(DNS Security Extensions)
→ DNS响应的加密和验证

DNS over HTTPS(DoH)

通过HTTPS加密DNS查询
→ 运营商或黑客无法看到查询内容
→ 隐私保护 🔒

DNS over TLS(DoT)

通过TLS加密DNS查询
→ 与DoH类似但使用不同协议

更改DNS设置

Windows

1. 控制面板 → 网络和Internet
2. 网络连接 → 属性
3. Internet协议版本4(TCP/IPv4)
4. 选择"使用下面的DNS服务器地址"
5. 首选: 8.8.8.8
备用: 8.8.4.4

Mac

1. 系统偏好设置 → 网络
2. 高级 → DNS标签
3. 用+按钮添加DNS服务器
8.8.8.8
8.8.4.4

路由器

1. 访问路由器管理页面(通常是192.168.0.1)
2. 网络设置
3. DNS服务器设置
主DNS: 8.8.8.8
备用DNS: 8.8.4.4

DNS故障排除

症状:网站打不开

1. 清除DNS缓存

Windows:

ipconfig /flushdns

Mac:

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

Linux:

sudo systemd-resolve --flush-caches

2. 更改DNS服务器

改为Google DNS(8.8.8.8)
→ 绕过ISP DNS问题

3. 用nslookup确认

nslookup google.com

→ 确认DNS查询是否正常

实际使用示例

示例1:访问网站

1. 在浏览器输入"baidu.com"
2. DNS查询: baidu.com → 220.181.38.148
3. 向220.181.38.148发送HTTP请求
4. 百度页面加载! ✅

示例2:子域名

blog.example.com
mail.example.com
api.example.com

可以有不同的IP地址
→ 可在不同服务器上托管

示例3:CDN

example.com → CDN服务器IP

DNS根据用户位置
返回最近的CDN服务器IP
→ 快速加载 ⚡

域名购买和DNS设置

1. 购买域名

在阿里云、腾讯云、Namecheap、GoDaddy等购买
例: mywebsite.com(每年50-200元)

2. 设置域名服务器

更改为托管商的域名服务器
例: 使用Cloudflare时
ns1.cloudflare.com
ns2.cloudflare.com

3. 添加DNS记录

添加A记录:
mywebsite.com → 服务器IP地址

添加CNAME:
www → mywebsite.com

常见问题(FAQ)

Q1:DNS查询需要多长时间?

A:

  • 缓存命中: 1-10ms(非常快)
  • 缓存未命中: 50-200ms(正常)
  • 慢的情况: 500ms+(ISP DNS问题)

Q2:为什么要更改DNS?

A: 有几个原因:

  • 速度提升(Google DNS比ISP DNS快)
  • 稳定性(绕过ISP DNS故障)
  • 安全性(阻止恶意网站)
  • 隐私(使用DoH、DoT)

Q3:DNS缓存会自动删除吗?

A: 会! TTL时间过后会自动删除。

  • 浏览器: 几分钟
  • 操作系统: 几小时
  • ISP: 1-2天

Q4:域名更改后为什么不能立即生效?

A: 因为DNS传播时间

  • 向全球DNS服务器传播的时间
  • 通常24-48小时
  • TTL设置短可以更快

Q5:有免费域名吗?

A: 有限地有:

  • .tk、.ml、.ga(Freenom)- 免费
  • GitHub Pages: username.github.io
  • Vercel: project.vercel.app

DNS性能优化

1. DNS预取(Prefetching)

<link rel="dns-prefetch" href="//cdn.example.com">
<link rel="dns-prefetch" href="//api.example.com">

→ 页面加载前预先查询DNS

2. 使用快速DNS

Google DNS(8.8.8.8)
Cloudflare(1.1.1.1)
→ 比ISP DNS快

3. TTL优化

频繁变化的记录: TTL短(300秒)
固定记录: TTL长(86400秒)

下一步 🚀

如果你理解了DNS:

  1. 了解URL结构 - 域名是URL的一部分
  2. 理解HTTP请求/响应 - DNS后的HTTP通信
  3. HTTPS和SSL/TLS是什么? - 安全通信
  4. IP Lookup - 确认域名的IP

总结

DNS是互联网的电话簿! 📞

要记住的要点:

  • DNS = 域名 → IP地址转换
  • google.com → 172.217.175.46
  • 通过缓存提高速度
  • 推荐Public DNS(8.8.8.8)
  • 用DNSSEC、DoH增强安全性

多亏了DNS,我们可以用有意义的名称而不是数字来访问网站! 🌐