什么是DNS解析

前言

dns解析是客户端输入url,浏览器进行的第一步操作,本文是我学习总结的什么是DNS解析的文章。

1什么是DNS和DNS解析器

DNS简称域名系统,当域名申请时,管理者会把域名挂靠在域名系统服务器上,通过DNS解析器查找域名对应的信息,DNS解析器是域名系统(DNS)中的核心服务器类型,用于将域名转换为网络可识别的IP地址。作为互联网基础服务,其通过层级式域名管理体系实现地址的统一寻址,支持递归查询(本地服务器代理)和迭代查询(逐级引导)两种解析模式。

2DNS的查询过程是什么样的

DNS查询,我理解就是像你想知道一个人的电话号码(服务器ip地址),电话号码比较难记,所以一般使用别名比如小明同学(谷歌,百度这种域名化就好记了),当你访问他们的域名时,他们就会发起一个dns解析。 举个例子如下:

  1. 本地缓存查找:你想知道学校里小明同学的电话,首先从你自己的记事本查找(本地缓存)。如果找到了,DNS 解析过程就结束了。

  2. DNS 服务器查找:如果本地缓存没有找到,你开始找到老师(DNS 服务器)。老师会从他的记事本里面开始查找(DNS 缓存)。同理,如果找到了就结束这个过程。

  3. 递归查询:如果老师也没有找到,老师会向其他老师(上级 DNS 服务器)询问,其他老师也会告诉你你要找谁谁谁,就好比你问A老师你知道小明同学的电话吗,A发现自己不知道,A就会去问B,这个时候B会告诉你,你去找C,然后A就问C,C说:我知道小明的电话(ip地址),这个时候A老师把结果告诉你,当然也有可能找不到,当A找完所有的老师(顶级域名服务器--->权威域名服务器),如果都没有那么就解析失败了。如下图:

3.什么是DNS劫持

就是当你访问的域名被黑客或者病毒软件篡改了域名指向的ip地址,这个时候你访问的是www.xxxx.com,假设应该指向127.0.0.1 ,那么此时被黑客或者病毒入侵修改成了128.1.1.1,这个时候用户访问的www.xxxx.com指向了128.1.1.1,使得用户无法访问真正的服务,甚至导向新的服务地址从而被骗什么的,这个情况就是域名劫持以及可能发生的后果。

4把myapp.test映射成本地nginx的ip

在如下地址的文件中

makefile 复制代码
C:\Windows\System32\drivers\etc\hosts

的最后一行添加如下的代理,让myapp.test指向你本地127.0.0.1,类似于localhost

复制代码
127.0.0.1 myapp.test

然后配置你本地的nginx服务配置

nginx 复制代码
server {
    listen 80;
    server_name myapp.test;

    root /var/www/html;
    index index.html;

    location / {
        allow all;
        try_files $uri $uri/ =404;
    }
}

如下当你访问myapp.test的时候就指向了你本地的nginx项目了

总结

DNS是浏览器访问服务器的第一步,就像人打电话需要知道另外一个人的电话号码一样,这个过程就是dns解析,如果信息被篡改,你得到了诈骗电话,那么这个就是DNS劫持。

相关推荐
AiMan9 分钟前
豆包爱学还是不可以导出左侧所有对话,只能单容导出,方法不对吗
前端
无懈可击25 分钟前
Vue 可视化AI表单设计器 FcDesigner v3.6 版本发布,支持导出 SQL功能!
vue.js·开源·ai编程
AiMan31 分钟前
Grok生成的内容能否下载吗?
前端
徐小夕1 小时前
JitArchives,一款基于JitWord协同AI文档打造的企业级电子档案系统
前端·vue.js·github
陈随易1 小时前
Node.js 2026上半年都有哪些性能提升?
前端·后端·程序员
墨林陌2 小时前
AI 热点日报(2026-11-09):苹果代理式Siri曝光,Anthropic推进IPO,编码智能体实测翻车
前端
vipxieliang2 小时前
JavaScript 迭代器与生成器:控制异步与惰性求值
前端·javascript
Hilaku2 小时前
Event Loop 这篇你看完就不用再看别的了!
前端·javascript·程序员
Rain的Java大神之路2 小时前
面试官最烦的答案:“我用 Redis + Token”!接口幂等 8 种方案 + 四层防御,把重复扣款工单干到 0
java·后端·面试
恋猫de小郭2 小时前
Flutter 下 AOT 一个你怎么都想不出来的 Bug ,JIT 正常的计算,在 AOT 居然算错了
android·前端·flutter