前言
dns解析是客户端输入url,浏览器进行的第一步操作,本文是我学习总结的什么是DNS解析的文章。
1什么是DNS和DNS解析器
DNS简称域名系统,当域名申请时,管理者会把域名挂靠在域名系统服务器上,通过DNS解析器查找域名对应的信息,DNS解析器是域名系统(DNS)中的核心服务器类型,用于将域名转换为网络可识别的IP地址。作为互联网基础服务,其通过层级式域名管理体系实现地址的统一寻址,支持递归查询(本地服务器代理)和迭代查询(逐级引导)两种解析模式。
2DNS的查询过程是什么样的
DNS查询,我理解就是像你想知道一个人的电话号码(服务器ip地址),电话号码比较难记,所以一般使用别名比如小明同学(谷歌,百度这种域名化就好记了),当你访问他们的域名时,他们就会发起一个dns解析。 举个例子如下:
-
本地缓存查找:你想知道学校里小明同学的电话,首先从你自己的记事本查找(本地缓存)。如果找到了,DNS 解析过程就结束了。
-
DNS 服务器查找:如果本地缓存没有找到,你开始找到老师(DNS 服务器)。老师会从他的记事本里面开始查找(DNS 缓存)。同理,如果找到了就结束这个过程。
-
递归查询:如果老师也没有找到,老师会向其他老师(上级 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劫持。