# 6.2 DNS系统 ## 一、DNS概述 ### 1.1 什么是DNS **DNS(Domain Name System)**: - 域名系统 - 将域名转换为IP地址 - 分布式数据库系统 ### 1.2 为什么需要DNS **问题**: - IP地址难以记忆 - 需要友好的名字 **解决**: - 使用域名(如:www.example.com) - DNS将域名解析为IP地址 ### 1.3 DNS的特点 - **分布式**:多个DNS服务器协同工作 - **层次化**:树形结构 - **缓存**:提高解析效率 - **可靠**:冗余设计 --- ## 二、域名结构 ### 2.1 域名的层次结构 **树形结构**: ``` 根(.) / | \ com org cn / | \ / | \ google baidu example gov edu ``` ### 2.2 域名的组成 **格式**: ``` 主机名.子域名.二级域名.顶级域名 ``` **例子**: - www.example.com - www:主机名 - example:二级域名 - com:顶级域名 ### 2.3 顶级域名(TLD) **国家顶级域名(ccTLD)**: - .cn:中国 - .us:美国 - .uk:英国 - .jp:日本 **通用顶级域名(gTLD)**: - .com:商业 - .org:组织 - .net:网络 - .edu:教育 - .gov:政府 - .mil:军事 **新通用顶级域名**: - .app - .blog - .shop - .xyz ### 2.4 完全限定域名(FQDN) **FQDN(Fully Qualified Domain Name)**: - 完整的域名 - 以根域(.)结尾 - 如:www.example.com. --- ## 三、DNS服务器 ### 3.1 DNS服务器的类型 **根域名服务器**: - 最高层次的DNS服务器 - 知道所有顶级域名服务器的IP地址 - 全球13组(字母A-M) **顶级域名服务器**: - 管理顶级域名 - 知道所有二级域名服务器的IP地址 - 如:.com服务器、.cn服务器 **权威域名服务器**: - 管理具体的域名 - 知道该域名下所有主机的IP地址 - 如:example.com的服务器 **本地域名服务器**: - 用户直接访问的DNS服务器 - 通常由ISP提供 - 缓存解析结果 ### 3.2 DNS服务器的层次 ``` 用户 │ ▼ 本地DNS服务器 │ ├─ 缓存命中 → 返回结果 │ └─ 缓存未命中 │ ▼ 根DNS服务器 │ ▼ 顶级DNS服务器 │ ▼ 权威DNS服务器 │ ▼ 返回结果 ``` --- ## 四、DNS解析过程 ### 4.1 递归查询 **递归查询**: - 本地DNS服务器代替用户进行查询 - 用户只需等待结果 **过程**: 1. 用户向本地DNS服务器查询 2. 本地DNS服务器向根服务器查询 3. 本地DNS服务器向顶级服务器查询 4. 本地DNS服务器向权威服务器查询 5. 本地DNS服务器返回结果给用户 ### 4.2 迭代查询 **迭代查询**: - 本地DNS服务器自己进行查询 - 每次查询返回下一级服务器的地址 **过程**: 1. 用户向本地DNS服务器查询 2. 本地DNS服务器向根服务器查询 3. 根服务器返回顶级服务器地址 4. 本地DNS服务器向顶级服务器查询 5. 顶级服务器返回权威服务器地址 6. 本地DNS服务器向权威服务器查询 7. 本地DNS服务器返回结果给用户 ### 4.3 递归查询与迭代查询的比较 | 特性 | 递归查询 | 迭代查询 | |-----|---------|---------| | 查询方 | 本地DNS服务器 | 本地DNS服务器 | | 被查询方 | 根/顶级/权威服务器 | 根/顶级/权威服务器 | | 返回结果 | 最终结果或错误 | 下一级服务器地址 | | 负担 | 被查询方负担大 | 查询方负担大 | | 常用 | 用户到本地DNS | 本地DNS到其他服务器 | ### 4.4 DNS解析示例 **查询 www.example.com**: ``` 用户 │ │ 递归查询 www.example.com ▼ 本地DNS服务器 │ │ 迭代查询 www.example.com ▼ 根DNS服务器 │ │ 返回 .com 服务器地址 ▼ .com 顶级DNS服务器 │ │ 返回 example.com 服务器地址 ▼ example.com 权威DNS服务器 │ │ 返回 www.example.com 的IP地址 ▼ 本地DNS服务器 │ │ 返回 www.example.com 的IP地址 ▼ 用户 ``` --- ## 五、DNS报文 ### 5.1 DNS报文格式 ``` +----------------+ | 首部 | 12字节 +----------------+ | 问题区 | +----------------+ | 回答区 | +----------------+ | 授权记录区 | +----------------+ | 附加记录区 | +----------------+ ``` ### 5.2 DNS首部 ``` 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |QR| Opcode |AA|TC|RD|RA| Z | RCODE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | QDCOUNT | ANCOUNT | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NSCOUNT | ARCOUNT | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` **标识(Identification)**: - 16位,用于匹配请求和响应 **标志(Flags)**: - QR:0=查询,1=响应 - Opcode:操作码 - AA:权威回答 - TC:截断 - RD:期望递归 - RA:支持递归 - Z:保留 - RCODE:响应码 **计数**: - QDCOUNT:问题数 - ANCOUNT:回答数 - NSCOUNT:授权记录数 - ARCOUNT:附加记录数 ### 5.3 DNS记录类型 | 类型 | 说明 | 例子 | |-----|------|------| | A | IPv4地址 | www.example.com A 192.168.1.1 | | AAAA | IPv6地址 | www.example.com AAAA 2001:db8::1 | | CNAME | 别名 | www.example.com CNAME example.com | | MX | 邮件服务器 | example.com MX 10 mail.example.com | | NS | 域名服务器 | example.com NS ns1.example.com | | PTR | 反向解析 | 1.1.168.192.in-addr.arpa PTR www.example.com | | SOA | 授权开始 | 包含区域信息 | | TXT | 文本记录 | 用于验证等 | --- ## 六、DNS缓存 ### 6.1 为什么需要缓存 **优点**: - 减少DNS查询次数 - 减少网络流量 - 提高解析速度 - 减轻DNS服务器负担 ### 6.2 缓存的位置 **主机缓存**: - 操作系统缓存 - 浏览器缓存 **本地DNS服务器缓存**: - 缓存查询结果 - 设置TTL ### 6.3 TTL(Time To Live) **TTL**: - 缓存的有效时间 - 由权威服务器设置 - 过期后需要重新查询 **典型值**: - A记录:几分钟到几天 - NS记录:几天到几周 --- ## 七、DNS安全 ### 7.1 DNS安全问题 **DNS欺骗(DNS Spoofing)**: - 攻击者伪造DNS响应 - 将用户导向恶意网站 **DNS劫持**: - 篡改DNS记录 - 重定向流量 **DNS放大攻击**: - 利用DNS响应比请求大的特点 - 进行DDoS攻击 ### 7.2 DNS安全扩展(DNSSEC) **DNSSEC**: - 为DNS提供认证和完整性保护 - 使用数字签名 - 防止DNS欺骗 **过程**: 1. 权威服务器对记录签名 2. 本地DNS服务器验证签名 3. 用户获得可信结果 --- ## 八、考研重点 1. **DNS的概念**: - 什么是DNS - 为什么需要DNS - DNS的特点 2. **域名结构**: - 层次结构 - 域名的组成 - 顶级域名 - FQDN 3. **DNS服务器**: - 根域名服务器 - 顶级域名服务器 - 权威域名服务器 - 本地域名服务器 - 层次关系 4. **DNS解析过程**: - 递归查询 - 迭代查询 - 两者的比较 - 解析示例 5. **DNS报文**: - 报文格式 - 首部字段 - 记录类型 6. **DNS缓存**: - 为什么需要缓存 - 缓存的位置 - TTL 7. **DNS安全**: - DNS安全问题 - DNSSEC --- *下一节:6.3 FTP*