域名与DNS理解
文章目录
- 域名与DNS理解
- 域名
- 域名层级
- 关键规则
- 实际域名分解示例(以百度为例)
- 域名与IP
- NDS
- DNS 记录类型
- DNS 解析流程
- DNS 层级职责说明
- 根DNS(.)
- TLD服务器(如 .com)
- 权威DNS(如 ns1.example.com)
- 本地DNS(递归解析器)
- 特殊情况处理
- DNS缓存
- DNS 缓存的作用
- DNS 缓存的存储位置
- DNS 缓存的生命周期(TTL)
- DNS 缓存的工作流程
- 如何查询DNS缓存?
- 如何清除 DNS 缓存?
- DNS与CDN
- 工作流程
- DNS 与 CDN 的协同
- 对比情况
- 实际应用场景
- 修改本地DNS
- 修改host文件,绕开DNS
- Hosts 文件的作用
- Hosts 文件修改行为
- 典型应用场景
- 与DNS修改的区别
域名与DNS理解
-
域名注册:
用户通过注册商(如阿里云(万网),Cloudflare )购买域名(如 example.com),并配置DNS服务器。
-
DNS 管理:
在DNS服务器上添加解析记录(A/CNAME/MX等),将域名指向主机IP或服务。
域名
域名是用于标识互联网上计算机或服务的字符串(如 www.example.com),用于替代复杂的IP地址(如 192.0.2.1),方便用户记忆和访问。
域名层级
.
├── 根域名 (root)
│
├── 顶级域 (TLD)
│ ├── 通用顶级域 (gTLD) → .com .org .net
│ ├── 国家代码顶级域 (ccTLD) → .cn .us .jp
│ └── 新通用顶级域 → .app .blog .ai
│
├── 二级域 (SLD) → example.com
│
└── 子域 (Subdomain) → www.example.com mail.example.com
层级 | 描述 | 示例 | 详细说明 |
---|---|---|---|
根域(Root) | 域名系统的根部分 | . | 根域是整个域名系统的最上层,它没有具体的名称,通常用一个点(.)表示。 |
顶级域(TLD) | 域名的最高级别部分 | .com, .org, .net | 顶级域名(TLD)是域名的最右侧部分,分为通用顶级域名(gTLD)和国家或地区顶级域名(ccTLD)。 |
.gov, .edu, .jp, .cn | 通用顶级域名(gTLD)如 .com, .org; 国家/地区顶级域名(ccTLD)如 .jp(日本)和 .cn(中国)。 | ||
.app .blog .ai | 新通用顶级域 .app(专为应用程序设计),.blog (面向个人或企业博客内容平台)和.ai(原为安圭拉国家代码域,现广泛用于人工智能领域) | ||
二级域(Second-Level Domain) | 域名的核心部分,通常是组织或网站名称 | example, google | 二级域名是紧接顶级域名后的部分,通常用于标识网站或组织。大多数企业和个人网站的域名是二级域名。 |
子域(Subdomain) | 位于二级域下的子部分,通常用于区分不同服务或区域 | www, mail, blog | 子域用于组织内部或功能的划分,例如“www.example.com”中的 “www” 是子域,用于访问网站。 |
-
顶级域名(TLD)分类:
- 通用顶级域名(gTLD):这些顶级域名不与特定国家或地区挂钩,适用于各种用途。例如,.com 是最常见的通用顶级域名,.org 用于组织,.edu 用于教育机构,.gov 用于政府机构。
- 国家代码顶级域名(ccTLD):这些顶级域名与国家或地区相对应,通常是两位字母的代码。例如,.cn 是中国的 ccTLD,.jp 是日本的 ccTLD。
-
二级域名的作用:
- 标识性:二级域名是域名中最具代表性的部分,它通常指代某个特定的品牌、组织或服务。例如,google.com 中的 google 就是二级域名,代表了该网站的品牌。
- 层次结构:二级域名通常用于组织和分配域名空间,以便于管理和区分不同的业务或服务。它也是网站的“身份”,对用户和搜索引擎具有重要意义。
关键规则
-
域名字符大小写不敏感,JD.COM 与 jd.com结果一样
-
从右到左层级递减:
a.b.c.com → com (TLD) → c (SLD) → b (三级) → a (四级)。 -
长度限制:
- 层级最多可达127级
- 每级最长 63 字符,总长 ≤ 253 字符。
-
允许字符:
字母(a-z)、数字(0-9)、连字符(-,但不在首尾)。
实际域名分解示例(以百度为例)
www.baidu.com.│ │ │ ││ │ │ └── 根域 (通常省略)│ │ └────── 顶级域 (.com)│ └────────── 二级域 (baidu)└───────────── 子域 (www)
域名与IP
-
对比理解
对比项 IP 地址 域名(Domain Name) 定义 互联网设备的唯一数字标识(如 192.0.2.1)。 人类可读的字符串标识(如 example.com)。 作用 用于网络设备间的通信寻址。 替代复杂IP,方便用户记忆和访问。 示例 IPv4: 8.8.8.8(Google DNS) google.com, baidu.com 层级结构 分为网络号和主机号(如 192.168.1.1/24)。 从右到左层级递减(如 .com → example)。 类型 IPv4(32位)和IPv6(128位)。 域名有不同的类别,如顶级域名(TLD)、二级域名等。 解析过程 通过域名解析系统(DNS)将域名转换为IP地址。 通过域名解析系统(DNS)将域名解析为IP地址。 人类友好性 不易记忆,需要通过数字表示。 更易记忆和理解,通常有特定的意义或品牌关联。 变化频率 固定,通常不会随时变化。 可能会发生变化,如域名所有者更换、服务器迁移等。 可配置性 由网络管理员或运营商配置。 可由域名注册商进行注册和管理。 -
域名绑定IP的常见方式
- A记录(IPv4)
将域名指向一个IPv4地址:example.com. A 192.0.2.1
- AAAA记录(IPv6)
将域名指向一个IPv6地址:example.com. AAAA 2001:db8::1
- CNAME记录(别名)
将域名指向另一个域名(最终解析到IP):www.example.com. CNAME example.com.
- A记录(IPv4)
-
如何手动查询域名对应的IP?
- 使用 ping
ping example.com
- 输出:
PING example.com (93.184.216.34): 56 data bytes
- 使用 nslookup
nslookup example.com
- 输出:
Server: 8.8.8.8 Address: 8.8.8.8#53Non-authoritative answer: Name: example.com Address: 93.184.216.34
- 使用 dig(Linux/macOS)
dig example.com +short
- 输出:
93.184.216.34
- 使用 ping
NDS
将域名转换为IP地址(正向解析),或反之(反向解析),类似于互联网的“电话簿”
DNS 记录类型
记录类型 | 作用 | 示例 |
---|---|---|
A | 域名 → IPv4 地址 | example.com → 192.0.2.1 |
AAAA | 域名 → IPv6 地址 | example.com → 2001:db8::1 |
CNAME | 域名别名 → 另一个域名 | www.example.com → example.com |
MX | 邮件服务器地址 | example.com → mail.example.com |
NS | 指定域名的权威 DNS 服务器 | example.com → ns1.cloudflare.com |
DNS 解析流程
以访问 www.example.com 为例:
-
用户发起请求
用户在浏览器输入 www.example.com,操作系统发起DNS查询。 -
查询本地DNS缓存
-
检查顺序:浏览器缓存 → 系统缓存(如hosts文件) → 路由器缓存 → 本地DNS服务器(如ISP提供的8.8.8.8)。
-
若缓存命中:直接返回IP(此时本地DNS会直接返回IP,无需后续步骤)。
-
若缓存未命中:进入递归查询流程。
-
-
完整流程示例(无缓存)
-
用户 → 本地DNS:查 www.example.com
-
本地DNS → 根DNS:.com 的TLD服务器?
-
根DNS返回:a.gtld-servers.net(.com TLD服务器之一)
-
本地DNS → TLD服务器:example.com 的权威DNS?
-
TLD返回:ns1.example.com
-
本地DNS → 权威DNS:www.example.com 的IP?
-
权威DNS返回:192.0.2.1(A记录)
-
本地DNS → 用户:返回 192.0.2.1,并缓存结果。
-
DNS 层级职责说明
根DNS(.)
- 全球13组根服务器,仅返回TLD服务器地址(如 .com 的服务器列表)。
TLD服务器(如 .com)
- 管理顶级域,返回二级域(如 example.com)的权威DNS地址。
权威DNS(如 ns1.example.com)
- 最终确定IP的层级,直接返回域名对应的A记录或CNAME记录。
本地DNS(递归解析器)
- 代理用户完成所有查询,汇总结果后返回IP(并缓存)。
特殊情况处理
-
CNAME 记录
- 若权威DNS返回 www.example.com CNAME example.com,本地DNS需重新查询 example.com 的IP。
-
DNS 缓存时间(TTL)
- 权威DNS返回记录时会指定TTL(如3600秒),本地DNS根据TTL决定缓存有效期。
-
DNS 负载均衡
- 权威DNS可能返回多个IP(如轮询或地理分区),本地DNS随机选择其一。
DNS缓存
DNS 缓存是 域名解析系统(DNS) 的重要组成部分,用于 加速域名解析 并 减少重复查询。它的核心作用是 存储已查询过的域名解析结果,避免每次访问网站时都重新进行完整的 DNS 解析流程。
DNS 缓存的作用
-
提高解析速度:减少 DNS 查询时间,加快网页加载。
-
降低服务器负载:减少对根DNS、TLD服务器和权威DNS的请求压力。
-
提升用户体验:减少因DNS查询导致的延迟。
DNS 缓存的存储位置
DNS 缓存分布在多个层级,按 缓存位置 可分为:
缓存位置 | 说明 | 缓存时间(TTL) |
---|---|---|
浏览器缓存 | Chrome、Firefox 等浏览器会缓存DNS记录(通常几分钟~几小时)。 | 由操作系统或浏览器决定 |
操作系统缓存 | Windows(ipconfig /displaydns)、Linux(systemd-resolve --statistics) | 取决于DNS记录的TTL |
路由器缓存 | 家庭/企业路由器可能缓存DNS查询结果。 | 由路由器设置决定 |
本地DNS服务器 | ISP(如电信、联通)提供的DNS服务器,或公共DNS(如 8.8.8.8)。 | 由权威DNS返回的TTL决定 |
公共DNS缓存 | Google DNS(8.8.8.8)、Cloudflare DNS(1.1.1.1)等。 | 遵循记录的TTL |
DNS 缓存的生命周期(TTL)
-
TTL(Time To Live):DNS记录在缓存中的存活时间(单位:秒),由 权威DNS服务器 设置。
- 例如:example.com 的A记录 TTL=3600(1小时),表示缓存服务器最多保存1小时后需重新查询。
-
常见TTL设置:
-
短TTL(300s~3600s):适用于频繁变更的DNS记录(如CDN、故障转移)。
-
长TTL(86400s~):适用于稳定的服务(如企业官网)。
-
DNS 缓存的工作流程
如何查询DNS缓存?
场景 | 命令/方法 |
---|---|
Windows | ipconfig /displaydns 或 PowerShell 中的 Get-DnsClientCache |
macOS | dscacheutil -cachedump -entries Host |
Linux | systemd-resolve --statistics 或 nscd -g |
浏览器 | Chrome:chrome://net-internals/#dns |
Firefox:about:networking#dns | |
路由器 | 登录管理界面查看DNS缓存(具体位置因品牌而异)。 |
绕过缓存 | 使用 dig example.com @8.8.8.8 +nocache 或 +trace |
- 浏览器 DNS 缓存查询
-
Chrome:访问 chrome://net-internals/#dns
- 显示所有缓存的DNS记录及TTL。
-
Firefox:
- 地址栏输入 about:networking#dns。
-
Edge:
- 无直接界面,需通过 edge://net-export 导出日志分析。
-
如何清除 DNS 缓存?
-
浏览器缓存
-
Chrome/Firefox:访问 chrome://net-internals/#dns → 点击 “Clear host cache”。
-
Edge/Safari:重启浏览器即可。
-
-
操作系统缓存
系统 | 命令或操作步骤 |
---|---|
Windows | 在管理员权限下运行 ipconfig /flushdns 命令。 |
Linux | 如果使用Systemd:sudo systemd-resolve --flush-caches 。 |
或者使用nscd服务:sudo service nscd restart 。 | |
macOS | 执行 sudo killall -HUP mDNSResponder 命令。 |
路由器 | 重启路由器或登录路由器的管理界面清除DNS缓存。 |
DNS与CDN
CDN(Content Delivery Network,内容分发网络) 是一种分布式服务器网络,通过在全球多个节点缓存静态和动态内容,使用户可以从最近的服务器获取数据,从而降低延迟、提高访问速度,并减轻源站负载。
主流CDN服务商
-
国内:阿里云CDN、腾讯云CDN、百度云加速、网宿科技
-
国际:Cloudflare、Akamai、AWS CloudFront、Fastly
工作流程
-
边缘节点:全球分布的缓存服务器
-
缓存策略:TTL控制、热内容预加载
-
动态加速:针对API等非缓存内容优化路由
DNS 与 CDN 的协同
CDN依赖DNS实现流量调度
- 典型交互示例
-
用户访问 www.example.com
-
DNS 返回基于地理位置的 CDN 节点 IP(如上海用户返回 180.101.49.12)
-
用户直接从上海CDN节点获取内容,无需连接美国源站
-
对比情况
特性 | DNS | CDN |
---|---|---|
主要功能 | 域名→IP转换 | 内容就近分发 |
性能影响 | 解析延迟(ms级) | 传输加速(降低RTT) |
记录类型 | A/CNAME/MX等 | 缓存规则、边缘节点列表 |
安全能力 | DNSSEC防篡改 | DDoS防护、WAF集成 |
典型厂商 | Cloudflare DNS, Google DNS | Akamai, Cloudflare, AWS CloudFront |
实际应用场景
- 静态网站加速
- DNS:将 www.example.com CNAME 指向 CDN 域名(如 example.cdn.com)
- CDN:缓存HTML/CSS/JS到边缘节点
- 视频流媒体
- DNS:智能解析到最近的视频CDN节点
- CDN:分段缓存热播视频(HLS/DASH)
- 全球业务
- DNS:返回用户所在大洲的CDN入口(如欧洲用户→法兰克福节点)
- CDN:同步源站数据至多区域节点
修改本地DNS
修改本地DNS设置可以帮助你提升网络访问速度、增强安全性或访问特定内容。
Windows 系统
-
打开网络设置
-
右键点击任务栏的 网络图标 > 选择 “打开网络和Internet设置”。
-
或通过 控制面板 > 网络和共享中心。
-
-
进入适配器选项
- 点击 “更改适配器选项”(Win10/11)或 “管理网络连接”(Win7)。
-
修改DNS
-
右键当前使用的网络(如“以太网”或“Wi-Fi”)> 选择 “属性”。
-
双击 “Internet协议版本4 (TCP/IPv4)”(或IPv6)。
-
选择 “使用以下DNS服务器地址”,输入DNS地址:
-
-
常用公共DNS(任选一组):
-
Google DNS:8.8.8.8 和 8.8.4.4
-
Cloudflare DNS:1.1.1.1 和 1.0.0.1
-
阿里DNS:223.5.5.5 和 223.6.6.6
-
-
勾选 “退出时验证设置” > 点击 “确定”。
-
刷新DNS缓存
- 按 Win + R,输入 cmd 打开命令提示符,执行:
ipconfig /flushdns
修改host文件,绕开DNS
Hosts 文件的作用
-
域名解析优先级最高
-
当访问一个域名时,系统会 先检查Hosts文件,如果存在对应记录,则直接使用该IP,不会请求DNS服务器。
-
若Hosts中无记录,才会通过DNS系统解析。
-
-
核心功能
-
屏蔽特定网站:将恶意或广告域名指向无效IP(如 0.0.0.0)。
-
加速访问:将常用域名直接映射到服务器IP,跳过DNS查询。
-
开发测试:将测试域名指向本地或开发服务器IP(如 127.0.0.1)。
-
绕过DNS污染/封锁:强制将域名解析到正确的IP(如访问被污染的国外网站)。
-
Hosts 文件修改行为
需用管理员/root权限修改(如Windows用记事本“以管理员身份运行”,macOS/Linux用 sudo)
-
文件位置
-
Windows: C:\Windows\System32\drivers\etc\hosts
-
macOS/Linux: /etc/hosts
-
-
修改格式
- 每行一条记录,格式为:
IP地址 域名
- 例如:
127.0.0.1 localhost 0.0.0.0 ads.example.com 104.18.20.36 github.global.ssl.fastly.net # 加速GitHub
-
生效条件
-
保存文件后立即生效,但可能需要:
-
刷新DNS缓存(见上文)。
-
重启浏览器或应用(部分程序会缓存DNS结果)。
-
典型应用场景
- 屏蔽广告/恶意网站
0.0.0.0 ad.doubleclick.net
0.0.0.0 tracking.malware.com
- 开发环境模拟
192.168.1.100 myapp.test
- 解决DNS污染
185.199.108.154 github.com # 强制使用正确IP
与DNS修改的区别
对比项 | Hosts文件 | DNS服务器 |
---|---|---|
生效范围 | 仅当前设备 | 所有使用该DNS的设备 |
优先级 | 高于DNS解析 | 低于Hosts文件 |
灵活性 | 需手动维护 | 自动全局生效 |
适用场景 | 精准控制单个域名 | 全局优化或绕过网络限制 |