天天看点

DNS域名解析理解

DNS域名解析

      • 什么是DNS
        • 基本使用
        • DHCP机制
      • 域名层级关系
      • DNS解析域名过程---找人问路时指指路不带路的过程
      • DNS记录类型:
      • 其他DNS工具
      • 手动清理本地DNS缓存方法
          • MacOS
          • Windows
          • Linux

什么是DNS

Domain Name System的缩写,就是域名解析系统,作用就是根据域名网址解析出对应的IP地址

  1. 基本使用

    1. 查询DNS:dig url/dig +short url
    2. 分级查询:dig +trace url
  2. DHCP机制

    DNS服务器的IP地址,是由网管动态分配,保存在/etc/resolv.conf中,---->nameserver:10.226.146.254

域名层级关系

DNS中的域名都是用句点来分割,代表了不同层次之间的界限。越靠后表示层次越高。

主机名.初级域名.顶级域名.根域名(baike.baidu.com.root)

host.sld.tld.root

www.example.com.root

root根域名一般情况下都省略了。全球总共才14个,ipv6下中国才有根

DNS解析域名过程—找人问路时指指路不带路的过程

以访问 www.163.com 这个域名为例,来看一看当你访问 www.163.com 时,会发生哪些事:

  1. 浏览器先查找本地 DNS 缓存,有则返回,没有则进入下一步
  2. 查看本地 hosts 文件有没有相应的映射记录,有则返回,没有则进入下一步
  3. 向本地 DNS 服务器(一般都是你的网络接入服务器商提供,三大运营商)发送请求进行查询,本地DNS服务器收到请求后,会先查下自己的缓存记录,如果查到了直接返回就结束了,如果没有查到,本地DNS服务器就会向DNS的根域名服务器发起查询请求:请问老大,www.163.com 的ip是啥?
  4. 根域名服务器收到请求后,看到这是个 .com 的域名,就回信说:这个域名是由 .com 老弟管理的,你去问他好了,这是.com老弟的联系方式(ip1)
  5. 本地 DNS 服务器接收到回信后,照着老大哥给的联系方式(ip1),马上给 .com 这个顶级域名服务器发起请求:请问 .com 大大,www.163.com 的ip 是啥?
  6. .com 顶级域名服务器接收到请求后,看到这是 163.com 的域名,就回信说:这个域名是 .163.com 老弟管理的,你就去问他就行了,这是他的联系方式(ip2)
  7. 本地 DNS 服务器接收到回信后,按照前辈的指引(ip2),又向 .163.com 这个权威域名服务器发起请求:请问 163.com 大大,请问 www.163.com 的ip是啥?
  8. 163.com 权威域名服务器接收到请求后,确认了是自己管理的域名,马上查了下自己的小本本,把 www.163.com 的ip告诉了 本地DNS服务器。
  9. 本地DNS服务器接收到回信后,非常地开心,这下总算拿到了www.163.com的ip了,马上把这个消息告诉了要求查询的客户(就是你的电脑)。由于这个过程比较漫长,本地DNS服务器为了节省时间,也为了尽量不去打扰各位老大哥,就把这个查询结果偷偷地记在了自己的小本本上,方便下次有人来查询时,可以快速回应。
  10. 总结起来就是三句话:

    从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录(IP地址)

    从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录(IP地址)

    从"次级域名服务器"查出"主机名"的IP地址

    DNS域名解析理解

DNS记录类型:

A:地址记录(Address),返回域名指向的IPV4地址。

NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。

MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。

CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转

AAAA:将域名指向一个IPV6地址

PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名。

其他DNS工具

host url -->可以看作dig命令的简化版本,返回当前请求域名的各种记录

nslookup url

nslookup url 114.114.114.114 -->指定公网的域名服务器进行DNS查询

whois url–>查看域名的注册情况

手动清理本地DNS缓存方法

MacOS

$ sudo dscacheutil -flushcache

$ sudo killall -HUP mDNSResponder

Windows

$ ipconfig /flushdns

Linux

#使用NSCD的DNS缓存

$ sudo /etc/init.d/nscd restart

#服务器或者路由器使用DNSMASQ

$ sudo dnsmasq restart

继续阅读