DNS(Domain Name System)
- 如果一个新计算机要接入网络, 或者某个计算机 IP 变更, 都需要到信息中心申请变更 hosts 文件.
- 其他计算机也需要定期下载更新新版本的 hosts 文件才能正确上网.
- 一个组织的系统管理机构, 维护系统内的每个主机的 IP 和主机名的对应关系
- 如果新计算机接入网络, 将这个信息注册到数据库中
- 用户输入域名的时候, 会自动查询 DNS 服务器, 由 DNS 服务器检索数据库, 得到对应的 IP 地址
cat /etc/hosts
域名解析
www.baidu.com
- com: 一级域名(顶级域名). 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等
- baidu: 二级域名, 公司名
- www: 三级域名,只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于 ftp.xxx.xxx/www.xxx.xxx 这样的格式, 来表示主机支持的协议
DNS层次结构
DNS是一个层次化的分布式数据库,其结构类似于一个倒置的树。它从根域(.
)开始,分为多个顶级域名(TLDs,如.com、.org、.net等),每个顶级域名下又有多个二级域名,依此类推。例如:
DNS服务器的角色
DNS解析过程中涉及多种类型的DNS服务器:
-
根DNS服务器(Root DNS Server):位于DNS层次结构的最顶层,负责提供顶级域名服务器的地址。
-
顶级域名服务器(TLD DNS Server):负责特定顶级域名(如.com、.org)的解析。
-
权威DNS服务器(Authoritative DNS Server):负责特定域名的解析,存储域名到IP地址的映射记录。
-
递归DNS服务器(Recursive DNS Server):通常由ISP(互联网服务提供商)或第三方提供,负责递归查询域名并返回解析结果给客户端。
解析过程
假设客户端要解析域名www.baidu.com,解析过程如下:
-
客户端请求:客户端(如浏览器)向本地DNS服务器(通常是ISP提供的DNS服务器或本地配置的DNS服务器)发送解析请求。
-
根DNS服务器查询:如果本地DNS服务器缓存中没有该域名的记录,它会向根DNS服务器查询。
-
顶级域名服务器查询:根DNS服务器返回顶级域名服务器(如.com的TLD服务器)的地址,本地DNS服务器再向该TLD服务器查询。
-
权威DNS服务器查询:TLD服务器返回baidu.com的权威DNS服务器地址,本地DNS服务器向该权威DNS服务器查询。
-
返回解析结果:权威DNS服务器返回www.baidu.com对应的IP地址,本地DNS服务器将结果缓存并返回给客户端。
使用 dig 工具分析 DNS 过程
apt-get install bind-utils
yum install bind-utils
dig www.baidu.com
- 开头位置是 dig 指令的版本号
- 第二部分是服务器返回的详情, 重要的是 status 参数, NOERROR 表示查询成功
- QUESTION SECTION 表示要查询的域名是什么
- ANSWER SECTION 表示查询结果是什么. 这个结果先将 www.baidu.com 查询成了 www.a.shifen.com, 再将 www.a.shifen.com 查询成了两个 ip 地址
- 最下面是一些结果统计, 包含查询时间和 DNS 服务器的地址等