分享

DNS 解析流程

 和合德 2023-08-21 发布于江苏

一、背景

最近,在S3协议项目中调研通过DNS域名解析处理流量负载均衡问题。原来对dns也有一些粗浅的了解,知道通过DNS可以将域名转换为IP地址,也可以做负载均衡。但是DNS的解析流程以及缓存等机制,只是一知半解。正好,趁着这个机会系统的学习一下。

二、DNS解析流程图

DNS解析流程图

  1. 浏览器(谷歌,火狐,IE等)有自己的DNS缓存机制。当通过浏览器访问网站时,浏览器会优先查询自己的DNS缓存是否有缓存相关网站地址。如果DNS缓存命中,则直接根据缓存的IP地址访问目标网站,可以大大缩短DNS解析域名时间,提升访问速度。(谷歌浏览器DNS缓存TTL,默认60s)如果没有命中,则进入下一步;
  2. 查询操作系统的hosts文件。hosts文件是最初的接入互联网的方式(比域名先出现,算是域名的前辈吧),记录了IP地址和域名的映射关系。当访问的域名被记录到hosts文件后,会直接访问该域名在hosts文件中对应IP地址。访问没有记录到hosts文件中的域名时,则进入下一步;
  3. 查询操作系统DNS客户端。开启DNS客户端服务后,所有域名服务器返回的“域名–IP的映射关系对” 都会被DNS客户端保存到内存。应用需要进行DNS解析时,如果命中,则将结果返回给应用;如果没有命中则进入下一步。(如果需要DNS客户端缓存服务,需要开启DNS客户端;本步骤以前都不涉及网络通信,可以提高访问效率)
  4. 查询本地域名服务器。本地域名服务器是作为应用(访问者)的代理人,去查询域名地址的。应用只需要告诉本地域名服务器,“我需要xxx域名对应的IP,你把结果给我就行,我不关心你是怎么查询的”,即对于应用来说,本地域名服务器提供域名递归查询服务。本地域名服务器解析域名顺序位:从本地缓存开始查,如果没有命中,则依次从根域名服务器,二级域名服务器,三域名服务器查询,直到成功解析域名地址,即本地域名服务器干的是迭代查询的事情。
  5. 根域名服务器。最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助。包括国家顶级域名(cn、us、uk)和通用顶级域名(com、edu、gov、int、mil、net、org)
  6. 二级域名服务器。负责管理在该顶级域名服务器下注册的二级域名。
  7. 三级域名服务器。负责管理在该二级域名服务器下注册的三级域名。

三、windows DNS客户端

在windows 2000以前,没有DNS客户端服务,在浏览器和hosts没有命中的情况下,直接去本地DNS服务器解析域名了。从windows 2000开始,有DNS客户端服务,缓存了域名和地址映射关系,进一步加速了DNS解析。

3.1 修改windows DNS缓存时间

1.打开注册表(Regedit.exe);
2.依次展开以下目录:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
3.修改 “MaxCacheTtl ”字段的值(笔者电脑windows 7,该字段默认值为:10800)。

3.2 DNS 列表管理

DNS 列表查询命令:

# 显示本机dns, 生存时间, 80-8000都有
ipconfig /displaydns 

清除DNS缓存命令:

# 刷新windows dns缓存
ipconfig /flushdns

3.3 DNS 服务

windows DNS服务名称是Dnscache,在任务管理器中可以查看到该服务。如果想关闭DNS客户端缓存,则打开任务管理器,停止该服务即可。DNS服务停止后,只是取消DNS缓存机制,依然可以正常访问网站(通过本地域名服务器解析域名)。

四、linux DNS 客户端

Linux系统需要安装Systemd-Resolved,DNSMasq 或 Nscd 等缓存服务,否则没有操作系统级 DNS 缓存。不同的Linux发型版本,使用的缓存服务不同。不同的DNS服务,清除DNS缓存的方法也不一样。清除DNS缓存命令如下:
Systemd-Resolved( Ubuntu发行版自带该应用):

sudo systemd-resolve --flush-caches

Dnsmasq:

sudo service dnsmasq restart
或者
sudo systemctl restart dnsmasq.service

NSCD(Rethat发行版首先应用):

$ sudo systemctl restart nscd.service
或者
$ sudo service nscd restart

日拱一卒无有尽,功不唐捐终入海,与君共勉之!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多