网络-DNS处理顺序

本文详细介绍了DNS缓存的作用以及DNS域名解析的过程,包括浏览器缓存、本地计算机DNS缓存、根域服务器、域名后缀、各级域名概念,以及A记录、MX记录、CNAME记录、NS记录和TXT记录的解释。DNS解析步骤包括浏览器和操作系统的本地缓存、本地DNS服务器查询、根域名服务器、顶级域名服务器和权威域名服务器的交互,最终将域名转换为IP地址。

DNS缓存

  上文中我们知道了DNS到底是个什么样的东西,现在我们来看下DNS缓存,为什么会有DNS缓存呢?这是为了解决频繁的访问DNS服务器,直接在本地进行缓存服务器IP地址的策略,这样我们输入一个网址域名譬如:www.baidu.com,就用再到DNS服务器去获取对应的网址的IP地址,直接从本地获取IP地址去做请求。
  几种DNS缓存:
  浏览器DNS缓存
  本地计算机DNS缓存

DNS域名解析

术语解释

根域: 就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯。根域服务器我们知道有13台,但是这是错误的观点。根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技术,所以我们可以在全球设立这些IP的镜像站点,你访问到的这个IP并不是唯一的那台主机。

域名后缀: 国际顶级域名,有两种划分方式,一种互联网刚兴起时的按照行业性质划分的com.,net.等,一种是按国家划分的如cn.,jp.,等。每个域都会有域名服务器,也叫权威域名服务器。

顶级域: 或者叫做一级域,baidu.com就是一个顶级域名,而www.baidu.com却不是顶级域名,他是在baidu.com 这个域里的一叫做www的主机。

二级域和三级域: 只要我买了一个顶级域,并且我搭建了自己BIND服务器(或者其他软件搭建的)注册到互联网中,那么我就可以随意在前面多加几个域了(当然长度是有限制的)。比如a.www.baidu.com,在这个网址中,www.baidu.com变成了一个二级域而不是一台主机,主机名是a。

域名服务器: 能提供域名解析的服务器,上面的记录类型可以是A(address)记录,NS记录(name server),MX(mail),CNAME等。

A记录: A代表的是address,用户可以在此设置子域名并指向到自己的目标主机地址上,从而实现通过域名找到服务器。指向的目标主机地址类型只能使用IP地址,如将taobao.com域名下的item.taobao.com指定到115.238.33.11,order.taobao.com指定到112.134.22.34。A记录可以将多个域名解析到一个IP地址,但不能将一个域名解析到多个IP地址。

MX记录: 表示的是Mail Exchange(邮件交换记录),用于将以该域名为结尾的电子邮件指向对应的邮件服务器以进行处理。如:用户所用的邮件是以域名mydomain.com为结尾的,则需要在管理界面中添加该域名的MX记录来处理所有以@mydomain.com结尾的邮件。
  说明:MX记录可以使用主机名或IP地址;·MX记录可以通过设置优先级实现主辅服务器设置,“优先级”中的数字越小表示级别越高。也可以使用相同优先级(即随机)达到负载均衡的目的;·如果在“主机名”中填入子域名则此MX记录只对该子域名生效。

CNAME记录: 全称是Canonical Name(别名解析)。可以为一个域名设置一个或者多个别名。
  说明:说明:CNAME的目标主机地址只能使用主机名,不能使用IP地址;·主机名前不能有任何其他前缀,如:http://等是不被允许的;A记录优先于CNAME记录。即如果一个主机地址同时存在A记录和CNAME记录,则CNAME记录不生效。

NS记录: 解析服务器记录,为某个域名指定DNS解析服务器,也就是这个域名由指定的IP地址的DNS域名服务器去解析。例如用户希望由12.34.56.78这台服务器解析news.mydomain.com,则需要设置news.mydomain.com的NS记录。
  说明:“优先级”中的数字越小表示级别越高;·“IP地址/主机名”中既可以填写IP地址,也可以填写像ns.mydomain.com这样的主机地址,但必须保证该主机地址有效。如将news.mydomain.com的NS记录指向到ns.mydomain.com,在设置NS记录的同时还需要设置ns.mydomain.com的指向,否则NS记录将无法正常解析;NS记录优先于A记录。即,如果一个主机地址同时存在NS记录和A记录,则A记录不生效。这里的NS记录只对子域名生效。

TXT记录: 为某个主机名或域名设置说明,如可以为taobao.com设置TXT记录为“天下第一”这样的说明。

DNS解析过程

当用户在浏览器中输入域名并按下回车键后

第一步:浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果有,这个解析过程就结束了,直接拿到IP进行访问。这个浏览器缓存域名是有限制的,除了缓存大小有限制,缓存的时间也有限制,通常情况下由TTL属性来设置。

第二步:如果用户浏览器缓存中没有,浏览器会查找操作系统中是否有这个域名对应的DNS解析结果。windows中c:/windows/system32/drivers/etc/hosts文件设置,linux中/etc/hosts文件中设置。当解析到这个配置文件中的某个域名时,操作系统会在缓存中缓存这个解析结果。(修改文件后不立即生效的原因)

第三步:在网络配置中都会有“DNS服务器地址”这一项,当前面两步都不能解析时,操作系统会把这个域名发送给设置的DNS服务器(简称LDNS)-local缩写,一般是本地区的域名服务器也可以是自己设置的域名服务器地址,如果命中,那解析就此结束并返回IP并标记为非权威服务器的应答。如是学校的互联网,那么你的DNS服务器肯定在你的学校,如果你是一个小区接入互联网,那这个DNS就是提供给你接入互联网的应用供应商,即电信或联通。windows中能用ipconfig查看DNS服务器地址,linux中cat /etc/resolv.conf查看DNS Server。

第四步:如果LDNS没有命中,LDNS就会向Root Server域名服务器请求解析。LDNS会从配置文件里面读取13个根域名服务器的地址(这些地址是不变的,直接在BIND的配置文件中),然后像其中一台发起请求。

第五步:根服务器拿到这个请求后,知道他是com.这个顶级域名下的,所以就会返回com.域中的NS记录,一般来说是13台主机名和IP(主域名服务器地址即gTLD-国际顶级域名服务器地址),返回给本地域名服务器即LDNS,

第六步:LDNS再向上一步返回的其中一台gTLD服务器发送请求。com.域的服务器(gTLD)发现你这请求是baidu.com这个域的,一查发现了这个域的NS(一般就是你注册的域名服务器),那就返回给你,你再去查。

第七步:LDNS接受gTLD返回的域服务器地址(即域名服务提供商的域服务器)并向其中一台再次发起请求,在baidu.com的域下面查了下有www的这台主机,就把这个IP返回给你了。

第八步:LDNS接受返回的IP和TLL值

第九步:LDNS缓存这个域名和IP的对应关系,缓存时间有TLL控制

第十步:LDNS把解析的结果返回给用户,用户根据TLL值缓存在本地系统缓存中,域名解析结束。

大部分参考:https://www.cnblogs.com/wade-luffy/p/5905786.html

### 头歌 Linux 网络实战 DNS 配置教程 #### 安装 DNS 服务器并开启服务 在 Ubuntu 系统中,可以通过 `apt-get` 命令安装 Bind9 来完成 DNS 服务器的配置。具体命令如下: ```bash sudo apt-get update sudo apt-get install bind9 ``` 安装完成后,启动 Bind9 服务以确保其正常运行[^1]。 #### 配置域名和 IP 的正向与反向解析 (Zone) DNS 解析的核心在于配置 Zone 文件。对于正向解析(名称到 IP 地址),需要创建 `/etc/bind/db.test.com` 文件;而对于反向解析(IP 到名称),则需创建 `/etc/bind/db.10` 文件[^1]。 ##### 正向解析文件 (`db.test.com`) 以下是典型的正向解析文件内容示例: ```plaintext $TTL 86400 @ IN SOA ns1.test.com. admin.test.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS ns1.test.com. ns1 IN A 192.168.1.10 www IN A 192.168.1.10 mail IN A 192.168.1.11 ``` ##### 反向解析文件 (`db.10`) 以下是典型的反向解析文件内容示例: ```plaintext $TTL 86400 @ IN SOA ns1.test.com. admin.test.com. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS ns1.test.com. 10 IN PTR www.test.com. 11 IN PTR mail.test.com. ``` #### 修改 DNS 服务器搜索顺序 为了优先使用本地 DNS 服务器进行查询,可以在 `/etc/resolv.conf` 中添加以下内容: ```plaintext nameserver 127.0.0.1 nameserver 8.8.8.8 ``` 这一步确保了本地 DNS 查询被优先处理[^1]。 #### 重启 BIND 服务 每次修改配置文件后都需要重启 BIND 服务以使更改生效: ```bash sudo systemctl restart bind9 ``` #### 测试 DNS 功能 通过 `host` 或 `dig` 命令验证域名解析是否成功。例如: ```bash host www.test.com dig @localhost www.test.com ``` 如果遇到无法解析的情况,请检查 `/etc/resolv.conf` 是否正确配置以及防火墙规则是否阻止了端口 53 的通信[^2]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值