DNS域名系统

DNS(Domain Name System)

DNS是一整套从域名映射到IP的系统

DNS背景

TCP/IP中使用IP地址和端口号来确定网络上的⼀台主机的⼀个程序. 但是IP地址不方便记忆.

于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系.


hosts 文件与 DNS 系统的演进梳理

  1. 早期方案:hosts 文件
  • 管理方式 :由互联网信息中心(SRI-NIC)统一维护一个全局 hosts 文件,记录主机名 ↔ IP 地址的映射。
  • 更新流程
    • 新设备接入或 IP 变更 → 必须到信息中心申请修改这个全局文件。
    • 所有联网计算机都要定期下载最新版 hosts 文件,才能正确解析主机名。
  • 痛点
    • 维护成本极高,网络规模扩大后完全不可行。
    • 更新延迟大,容易出现解析不一致。
  1. 进化方案:DNS 系统
    为了解决 hosts 文件的痛点,诞生了 DNS(Domain Name System,域名系统)
  • 核心思想:分布式数据库 + 分层查询,不再依赖单一全局文件。
  • 工作模式
    1. 各组织/机构维护自己的域名与 IP 映射数据库。
    2. 新设备接入时,只需在所属机构的数据库中注册信息。
    3. 用户输入域名时,系统自动向 DNS 服务器发起查询,由 DNS 服务器检索并返回对应的 IP 地址。
  • 优势
    • 分布式管理,扩展性极强,适配互联网爆炸式增长。
    • 自动查询,无需用户手动更新文件。
  1. 遗留与现状
  • 现代操作系统仍保留 hosts 文件 ,作为域名解析的本地优先入口
  • 解析顺序:
    1. 先查询本地 hosts 文件(优先级最高)。
    2. 若未找到,再向 DNS 服务器发起查询。

域名简介

主域名是用来识别主机名称和主机所属的组织机构的⼀种分层结构的名称.

域名使用 . 连接

• com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等.

• baidu: 二级域名, 公司名.

• www: 只是⼀种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议.

域名解析过程


  • 根服务器(Root) :域名树的最顶端,用 . 表示(通常省略不写),负责指向顶级域服务器。
  • 顶级域(TLD,Top-Level Domain)
    • 通用顶级域:.com.net.org.edu
    • 国家/地区顶级域:.cn(中国)、.uk(英国)、.jp(日本)等
  • 二级域名 :在顶级域下注册的域名,比如 baidu.comtaobao.com,由企业或个人管理,是我们日常最常接触的层级。
  • 三级/四级域名 :二级域名下的子域名,比如 www.baidu.comimage.baidu.comws.pic.baidu.com,由域名所有者自行分配管理。

使用dig工具分析DNS过程

bash 复制代码
syb@VM-8-5-ubuntu:~$ dig www.baidu.com

; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13033
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.baidu.com.                 IN      A

;; ANSWER SECTION:
www.baidu.com.          1178    IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       112     IN      A       183.2.172.177
www.a.shifen.com.       112     IN      A       183.2.172.17

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sat Mar 14 18:52:48 CST 2026
;; MSG SIZE  rcvd: 101
  1. 版本与全局配置(基础信息)
bash 复制代码
; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> www.baidu.com
;; global options: +cmd
  • DiG 9.18.39:你使用的 dig 工具版本(Ubuntu 系统自带)。
  • +cmd:默认启用的参数,显示命令执行的基础信息(无特殊含义)。
  1. 响应头部(核心状态)
bash 复制代码
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13033
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
  • 关键字段
    • status: NOERROR:✅ 查询成功(如果是 NXDOMAIN 表示域名不存在)。
    • flags: qr rd ra
      • qr:这是响应包(不是请求包)。
      • rd:启用了递归查询(本地 DNS 会帮你查到底)。
      • ra:DNS 服务器支持递归查询。
    • QUERY: 1:你发起了 1 个查询请求。
    • ANSWER: 3:DNS 服务器返回了 3 条解析记录。
  1. EDNS 扩展(网络配置)
bash 复制代码
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
  • EDNS:DNS 扩展协议,这里表示使用 EDNS0 版本,UDP 最大传输大小为 65494 字节(优化大报文传输)。
  1. 查询段(你要查什么)
bash 复制代码
;; QUESTION SECTION:
;www.baidu.com.                 IN      A
  • 你要查询的内容:
    • www.baidu.com.:目标域名(末尾的 . 是根域,通常省略)。
    • IN:查询类(Internet 互联网,固定值)。
    • A:查询类型(A 记录,即 IPv4 地址)。
  1. 应答段(核心解析结果)
bash 复制代码
;; ANSWER SECTION:
www.baidu.com.          1178    IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       112     IN      A       183.2.172.177
www.a.shifen.com.       112     IN      A       183.2.172.17

这是最关键的部分,拆解每条记录:

域名 TTL 类型 解析结果 含义
www.baidu.com. 1178秒 CNAME www.a.shifen.com. www.baidu.com 是别名,真实指向 www.a.shifen.com
www.a.shifen.com. 112秒 A 183.2.172.177 真实 IP 地址1
www.a.shifen.com. 112秒 A 183.2.172.17 真实 IP 地址2
  • TTL(生存时间):解析结果的缓存时长(比如 1178 秒后本地缓存失效,需重新查询)。
  • CNAME 作用 :百度通过别名映射实现负载均衡/故障切换,修改 www.a.shifen.com 的 IP 就能无缝切换,无需改动 www.baidu.com
  1. 统计信息(性能/网络)
bash 复制代码
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sat Mar 14 18:52:48 CST 2026
;; MSG SIZE  rcvd: 101
  • Query time: 0 msec:查询耗时 0 毫秒(本地 DNS 缓存命中,速度极快)。
  • SERVER: 127.0.0.53#53:使用本地 DNS 服务器(Ubuntu 系统默认的 systemd-resolved)。
  • MSG SIZE rcvd: 101:接收的响应报文大小 101 字节。

关于DNS缓存:在Windows系统中,可以使用 ipconfig /displaydns 命令来查看系统级别的DNS缓存

相关推荐
Tsuki_tl6 分钟前
UDP传输协议
网络·网络协议·udp·传输层·udp校验和·tcp与udp区别·面向数据报
Sagittarius_A*6 分钟前
Open HTTP Redirect 开放重定向漏洞:URL 跳转校验缺陷与绕过技术
网络·安全·web安全·http·dvwa·burp suite
信仰87421 分钟前
HCIA-华为数通基础理论与实践08
网络·笔记·华为
代码的小搬运工3 小时前
网络请求(NSURL、NSURLRequest、NSURLSessionDataTask、协议回调与 JSON 数据的基本流向)
网络·数据库·json
蓝胖的四次元口袋9 小时前
服务器网络与系统基础-面试题
服务器·网络
Cx330❀9 小时前
【MySQL基础】一文吃透“表的约束”:从 Null/Default 到主外键的终极安全法则
linux·服务器·数据库·c++·mysql·安全
程序员JerrySUN9 小时前
Jetson 刷机深度解析:flash.sh vs l4t_initrd_flash.sh(含安全与磁盘加密对比)
linux·网络·arm开发·安全·系统安全
aduzhe10 小时前
关于lib文件格式(keil/unix)
服务器·unix
视觉AI10 小时前
VS Code Remote-SSH 连接Jetson踩坑完整解决记录(网段不通+主机密钥变更双重故障)
运维·网络·人工智能·windows·ssh·边缘计算
银河麒麟操作系统10 小时前
闸机高效稳跑,通勤提速升级!银河麒麟赋能北京轨交新基建
运维·服务器·安全·交通物流