深入分析JavaWeb技术内幕系列之---DNS域名解析过程

本文深入剖析了JavaWeb环境中DNS解析的过程,包括浏览器缓存、操作系统缓存、LDNS缓存及其工作原理,以及从LDNS到根域名服务器、gTLD服务器直至NameServer的查询流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深入分析JavaWeb技术内幕系列之—DNS域名解析过程

  1. 浏览器会检查浏览器缓存中有没有这个域名对应的IP地址,如果有,解析过程结束。
    浏览器缓存的时间与服务器返回的TTL(Time To Live)值无关,通常有一个自己的固定值,Google与FireFox默认都是一分钟。
    关于TTL这个概念,还有很多不清楚的地方,待到写完DNS再写一篇单独的关于TTL的文章
    以Google为例,查看DNS缓存可以访问, chrome://net-internals/#dns 结果如下图:
    关闭浏览器再重新打开后,缓存并没有消失,初步判断浏览器的dns缓存是以文件或其他形式保存的,至少不是保存在内存中。

  2. 如果浏览器缓存中没有,那么浏览器会去操作系统的缓存中查找。操作系统也会有一个域名解析的过程,这个过程是通过配置文件完成的。Windows文件位置是C:\Windows\System32\drivers\etc\hosts。Linux的是/etc/hosts。文件以键值对的形式存在,IP地址在前,域名在后。
    笔者尝试将一个脸滚键盘打出来的域名解析到百度的IP地址,如上图最后一条记录。但是失败了,错误信息是链接被重置。百思不得其解,域名ping的通,从上图最后两条数据也可以看到域名已经被正确解析成百度的IP地址。苦思良久,想起这种行为跟被黑客入侵修改hosts文件没什么区别,那会不会被当成危险操作被拦截了呢?继续尝试将百度的域名以及自己瞎编的域名解析到其他IP地址 如127.0.0.1。测试结果:百度的域名解析到其他地址浏览器会直接发出警告并阻止继续访问,而自己瞎编的域名则正确解析到了本地。猜测是正确的!
    那具体是哪一步被拦截了呢?做了很多测试依然没有个可信的结论,如果有比较了解这方面的朋友请不吝赐教。



    以上步骤均是在本地完成,如果本地不能完成域名的解析,那么就会开始请求域名服务器了。

  3. 怎么才能知道该请求哪个DNS服务器呢?如果我们配置了自动获取DNS地址,那么这个DNS服务器通常就是由你接入互联网的应用商提供,如电信联通。这个DNS服务器又被叫做LDNS(Local DNS)。查看自己使用的DNS地址可以使用 ipconfig/all 或者 nslookup命令。这种域名解析服务器的性能都很好,它们会缓存解析结果,这个缓存时间与浏览器不同,它们是受TTL失效时间控制的。百分之八十的解析到这里就完成了。
    Local(本地)的概念是相对全球只有13台的根域名服务器(Root Server)来说的,并不是说就在我们附近的才叫做本地域名服务器。当然了,如果你不手动配置DNS地址的话,那么通常分配给你的DNS服务器就在你的城市附近。如果你觉得自动分配的DNS太慢,可以手动配置其他的如114或者阿里的DNS,虽然地理位置上可能离我们很远,但本质上它们还是LDNS。

  4. 如果LDNS没有命中,那么就直接到Root Server根域名服务器请求解析。
  5. Root Server返回给LDNS一个所查询的主域名服务器(gTLD Server)地址,gTLD是国际顶级域名服务器,如.com、.cn等。
  6. LDNS再向Root Server返回的gTLD服务器发送请求。
  7. gTLD服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server通常就是你注册的域名服务器,例如你在某个域名服务提供商申请的域名,那么这个域名解析就由这个域名提供商的服务器完成。
  8. Name Server域名服务器会查询存储的域名和IP的映射关系表,在正常情况下都根据域名得到目标IP记录,连同一个TTL值返回给LDNS。
  9. LDNS缓存域名和IP的对应关系,缓存时间由TTL值控制。
  10. 把解析的结果返回给用户,用户根据TTL值缓存在本地系统中,域名解析过程结束。


附图:

图片来自网络,侵删

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值