DNS原理详解,DNS解析过程
DNS ( Domain Name System)负责「将域名成IP地址」,工作在「应用层」,使用 UDP 协议 53 端口,域名服务器(Domain Name Server)之间同步数据用TCP协议53端口。
设备在互联网中使用IP地址通信,用户需要使用IP地址访问网站,但「IP地址不方便记忆」,于是用域名来代替IP地址,DNS通过「分布式数据库」的形式,存储域名和IP地址的「映射关系」。
终端和DNS使用C/S架构,终端发送 DNS request ,域名服务器在响应的 DNS response 中返回IP地址,终端拿到IP地址后,就能建立TCP连接了。
用户输入 www.baidu.com 后
- 先查「浏览器缓存」,有就直接访问IP。
- 没有就就查「本地缓存」。
- 缓存没有,就找「本地域名服务器」。
- 本地域名服务器没有,就找「根域名服务器」。
- 根域名服务器没有,就从上往下递归查询「下级域名服务器」,直到找到IP地址。
- 找到IP地址的下级服务器把IP地址返回给本地域名服务器。
- 本地域名服务器把IP返回给终端,然后「缓存」IP和域名的映射关系。
1、浏览器缓存
以Chrome浏览器为例,地址栏输入 chrome://net-internals/#dns
由于相关功能已删除,需要使用 chrome://net-internals
来开启日志,并使用外部的 netlog viewer
来查看。
2、本地缓存
C:\Windows\System32\drivers\etc\hosts
文件保存本地缓存。
Hosts文件是静态的,添加映射关系后就不会请求DNS,如果不及时更新文件,就会导致网站无法正常访问。
有些病毒木马会篡改hosts文件,让你访问恶意网站。
3、本地域名服务器
本地域名服务器就是终端上配的DNS服务器。它会缓存常用的域名/IP映射关系,并代替终端请求上级域名服务器。
4、根域名服务器
根域名服务器是整个域名系统最上级的服务器,它不存储映射关系,只记录哪个服务器管理哪个区域。
比如你是xx.com,就找管理.com的域名服务器;你是xx.cn,就找管理.cn的域名服务器。然后按照这种方式一级一级的往下找下级服务器。
5、递归查询和迭代查询
- 递归查询:我发送DNS请求后,你去一级一级的递归给我查,查到了给我结果。
- 迭代查询:我发送DNS请求后,你返回一个服务器地址给我,我自己按照递归查询的模式,一级一级的去发送请求,然后查到结果。
实际场景中,两种查询方式是同时使用的。比如:终端跟本地域名服务器之间使用递归查询;本地服务器根上级服务器之间使用迭代查询。
6、静态域名解析和动态域名解析
- 静态域名解析:像hosts那样,手动配置域名和IP地址的映射关系,服务器IP发生变化时,要及时的手动修改映射关系,否则会访问失败。
- 动态域名解析:通过本地服务每隔数分钟检查一次服务器IP,如果变化就更新到DNS服务器上,维护域名与动态IP的映射关系。
实际场景中,两种方式会同时使用。
原文地址:https://blog.csdn.net/wangyuxiang946/article/details/143811487
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!