DNS域名解析
我们知道互联网通过URL来发布和请求资源,而URL中的域名需要解析为IP地址才能与远程主机建立连接。 如何将域名解析为IP地址,就属于DNS解析的范畴。
可以毫不夸张地说,虽然我们平时上网时感觉不到DNS解析的存在,但一旦DNS解析出现问题,就可能会导致非常严重的互联网灾难。 目前,全球整个互联网都有多个DNS根域名服务器。 如果任何一个根服务器出现故障,后果将非常严重。
DNS域名解析过程
当我们在浏览器中输入内容时,DNS解析会有近10个步骤。 这个过程可以粗略地用一张图来表示:
整个过程大致描述如下。 前两步在本机完成,后八步涉及真实域名解析服务器:
1、浏览器会检查缓存中是否有该域名对应的解析IP地址。 如果缓存中有,则解析过程结束。 浏览器缓存域名也受到限制。 不仅浏览器缓存大小有限,而且缓存时间也有限,通常在几分钟到几个小时之间。 可以通过TTL属性设置域名缓存的时间限制。 缓存时间太长或太短都不好。 如果时间过长,一旦域名解析到的IP发生变化,客户端缓存的域名将无法解析到变化后的IP地址,导致域名无法正常使用。 分析,部分用户在此期间无法访问网站。 如果设置时间太短,用户每次访问网站都需要重新解析域名。
2、如果用户的浏览器缓存中没有数据,浏览器会检查操作系统缓存中是否有该域名对应的DNS解析结果。 其实操作系统也有域名解析过程,可以通过C:\\\\etc\hosts文件来设置。 在Linux中,可以通过/etc/hosts文件进行设置。 用户可以将任意域名解析为任意可访问的域名。 IP地址。 例如,我们在测试时可以将一个域名解析到一台测试服务器上,这样我们就可以在不修改任何代码的情况下测试单独服务器上代码的业务逻辑是否正确。 正是由于这种本地DNS解析过程,黑客可能会修改用户的域名,将特定域名解析为自己指定的IP地址,从而导致这些域名被劫持。
3.当前两个过程无法解析时,必须使用我们网络配置中的“DNS服务器地址”。 操作系统会把这个域名发送给LDNS,LDNS就是这个地区的域名服务器。 该DNS通常为用户本地上网提供DNS解析服务。 例如,如果用户在学校访问,则用户的DNS服务器必须在学校; 如果用户在社区访问,则该用户的DNS服务器位于学校。 如果应用提供商提供互联网的接入,即中国电信或中国联通,也称为SPA,那么这个DNS通常会位于用户所在城市的某个角落,不是很远。 在环境下可以通过命令行输入,在Linux环境下可以通过cat /etc/.conf查询配置的DNS服务器。 这个专门的域名解析服务器的性能会非常好。 他们一般都会缓存域名解析结果。 当然,缓存时间是由域名的过期时间控制的。 大约80%的域名解析到此结束,所以LDNS主要负责域名解析。
4、如果LDNS仍然无法命中,则直接到根域名服务器请求解析。
5、根域名服务器向本地域名服务器返回查询到的主域名服务器(gTLD)地址。 gTLD是国际顶级域名服务器,如.com、.cn、.org等,全球仅有13个左右
6. 然后,本地域名服务器LDNS 向上一步返回的gTLD 服务器发送请求。
7、接受请求的gTLD服务器查找并返回该域名对应的Name域名服务器地址。 该Name通常是用户注册的域名服务器。 例如,用户向域名服务商申请的域名,那么域名解析任务就是由该域名提供商的服务器来完成的
8、名称域名服务器会查询存储的域名与IP的映射关系表。 正常情况下,它会根据域名获取目标IP地址,并与TTL值一起返回给DNS域名服务器。
9、返回域名对应的IP和TTL值。 LDNS会缓存域名和IP的对应关系。 缓存时间由TTL值控制。
10. 将解析结果返回给用户。 用户根据TTL值将其缓存在本地系统缓存中。 域名解析过程结束。
在实际的DNS解析过程中,可能不止这10个步骤。 例如Name可能有很多级别,或者可能有GTM进行负载均衡控制,这可能会影响域名解析过程。
清除缓存的域名
我们知道DNS域名解析后会缓存解析结果,主要缓存在两个地方:
1.本地DNS
2.用户本机
两种缓存均由TTL值和本地缓存大小控制,但最大缓存时间为TTL值。 基本上,本地DNS的缓存时间是由TTL控制的。 手动干预比较困难,但是我们本地的缓存可以通过如下方式清除:
1、环境下可以在命令行执行/命令刷新缓存,如图
2、在Linux环境下,可以通过/etc/init.d/nscd清除缓存。 因为我家里电脑安装的虚拟机比较卡,所以就不截图了。
重启仍然是解决很多问题的首选。
在Java应用中,JVM也会缓存DNS解析结果。 这个缓存是在类中进行的,而且缓存的时间比较特殊。 它有两种缓存策略:
1.正确解析结果缓存
2. 解析失败结果的缓存
这两个缓存时间是由两个配置项控制的。 配置项配置在%%\lib\\java.xml中。 文件。 这两个配置项是.cache.ttl和.cache..ttl,它们的默认值分别是-1(永不过期)和10(缓存10秒)。 直接修改这两个值即可。 也可以通过在Java启动参数中添加..ttl=xxx来修改默认值,也可以使用class动态修改。
几种域名解析方法
域名解析记录主要分为A记录、MX记录、CNAME记录、NS记录和TXT记录:
1. 一条记录
A代表,用于指定域名对应的IP地址。 例如,将指定为115.238.23.xxx,并将指定为121.14.24.xxx。 一条记录可以将多个域名解析为一个IP地址,但不能将一个域名解析为多个IP地址。
2.MX记录
Mail是指您可以将某个域名下的邮件服务器指向您自己的Mail。 例如,域名的A记录IP地址为115.238.25.xxx。 如果MX记录设置为115.238.25.xxx,即邮件路由,DNS会将邮件发送到115.238.25.xxx所在的服务器,如果你发出正常的Web请求,它仍然会解析到A记录的IP地址。
3.CNAME记录
名称,即别名解析。所谓别名解析是指可以为一个域名设置一个或多个别名,如和,其中分别是和的别名
4. NS记录
为域名指定DNS解析服务器,即域名由指定IP地址的DNS服务器进行解析。
5.TXT记录
设置特定主机名或域名的描述。 例如,您可以将 TXT 记录设置为“这是 XXX 的博客”等描述
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。