『计算机网络』域名系统(DNS)

本文介绍了DNS系统,它采用C/S架构,运行在UDP上,使用53号端口,用于将主机名转换为IP地址。从概念上分为层次域名空间、域名服务器和解析器。阐述了域名服务器的层次结构,还详细说明了递归查询、迭代查询两种解析过程,以及高速缓存的作用和更新要求。

域名系统是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名转换为便于及其处理的 IP 地址。相对于 IP 地址,人们更喜欢使用具有特定含义的字符串来标识因特网上的计算机。值得注意的是,DNS 系统采用 C/S 架构,其协议运行在 UDP 之上,使用 53 号端口。

从概念上可将DNS 分为三部分:层次域名空间、域名服务器和解析器

1. 层次域名空间

在这里插入图片描述

2. 域名服务器

DNS服务器有很多台,根据层次结构分为三层,根域名服务器,顶级域名服务器,权限域名服务器

本地域名服务器不算层次结构,特点是离主机比较近,当主机和另一台比较近的主机通信时,就不用走哪些更高级的服务器了

根域名服务器并不是一个域名只有一台,而是一个域名对应多台域名服务器,全世界一共有13个这样的域名,分别是 a.rootservers.net,b.rootservers.net,c.rootservers.net,⋯\cdots, m.rootservers.net

在权限域名服务器中,虽然看似 abc.com 比 y.abc.com 少了一位,但是他们的地位仍是对等的,对应的两台权限域名服务器

在这里插入图片描述

3. 域名解析过程

在这里插入图片描述

3.1 递归查询

主机先是想本地域名服务器发送请求,如果查不到的话,

本地域名服务器向根域名服务器发送请求(找别人),如果还是查不到的话

根域名域名服务器向顶级域名服务器发送请求(找别人),如果还是查不到的话

顶级域名服务器向权限域名服务器发送请求(找别人)

可以看到每一次向下一个查询的服务器都变了,不是主机一个个去问,而是服务器自己一个个问下去

3.2 迭代查询

主机先是想本地域名服务器发送请求,如果查不到的话,

本地域名服务器就让主机去向根域名服务器发送请求(主机去找,本地域名给目标根域名服务器的IP地址),如果还是查不到的话,

根域名域名服务器让主机去向对应的顶级域名服务器发送请求(主机去找,根域名给目标顶级域名服务器的IP地址),如果还是查不到的话,

顶级域名服务器让主机去向权限域名服务器发送请求(主机去找,顶级域名给目标权限域名服务器的IP地址)

可以看到这里是主机一个个挨个问的地址

3.3 高速缓存

为了减少多次查询同一个域名的资源浪费,本地域名服务器会存储最近使用的ip地址解析,下次再访问同一个域名就不需要这么多查询步骤了。同时这个高速缓存主机本身也有存储

同时本地域名服务器还可以对顶级域名服务器,权限域名服务器的地址进行缓存,下一次即使是不知道的ip地址,查询也可以更快

高速缓存为了保持正确性,需要定时更新

### 关于计算机网络 DNS 实验配置教程及相关资料 #### DNS 服务器安装配置实验概述 DNS(Domain Name System)作为互联网的核心服务之一,其主要功能是将易于记忆的域名转换为 IP 地址。在实验环境中,通常通过模拟真实的 DNS 查询场景来学习和掌握 DNS 的工作原理及其配置方法。 根据实验报告中的描述[^1],DNS 系统由客户端(Client)和服务端(Server)组成。客户端负责发起域名查询请求,而服务端则需提供对应的 IP 地址或其他资源记录。为了完成这一过程,DNS 服务器需要具备正向解析(从域名到 IP 地址)和反向解析(从 IP 地址到域名)的能力。 --- #### 实验环境搭建 以下是基于 Linux 环境下的 BIND 软件实现 DNS 服务器的具体步骤: 1. **软件安装** 安装 BIND 软件包,这是目前最常用的开源 DNS 解决方案。 ```bash sudo apt-get update && sudo apt-get install bind9 dnsutils -y ``` 2. **基础配置文件修改** 主要涉及 `/etc/bind/named.conf.local` 文件的编辑,定义区域数据文件路径以及权限设置。 ```bash zone "example.com" { type master; file "/var/lib/bind/example.com.db"; allow-update { none; }; }; ``` 3. **创建区域数据库文件** 编辑 `example.com.db` 文件以指定 A 记录、CNAME 和 MX 等条目。 ```plaintext $TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL IN NS ns1.example.com. ns1 IN A 192.168.1.100 www IN CNAME example.com. mail IN A 192.168.1.101 ``` 4. **启动并验证服务状态** 启动 BIND 服务并确认运行正常。 ```bash sudo systemctl restart bind9 sudo systemctl status bind9 ``` 5. **测试解析功能** 利用工具如 `nslookup` 或 `dig` 测试是否能够成功解析目标域名。 ```bash nslookup www.example.com 127.0.0.1 dig @localhost example.com ``` --- #### DNS 攻击实验分析 除了正常的 DNS 配置外,在网络安全领域还存在针对 DNS 协议的各种攻击形式。例如缓存投毒攻击就是一种常见的威胁手段[^2]。在这种情况下,攻击者可以通过伪造合法响应消息欺骗受害者的本地 DNS 缓存机制,从而引导流量至恶意站点。 防止此类事件发生的方法包括但不限于启用 DNSSEC 数字签名认证技术,确保每一条回复都经过严格校验;或者采用更安全的数据传输协议替代传统 UDP 方式处理敏感通信需求。 --- #### 外部 DNS 请求转发逻辑说明 如果内部 DNS 无法找到匹配项,则会触发对外界权威机构的新一轮询问操作[^3]。具体流程如下所示: - 接收到来自应用层提交过来的目标地址字符串; - 查找内置高速缓冲区是否存在对应映射关系; - 若未命中,则继续向上级根节点逐级追溯直至获取最终答案为止。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值