详解 DNS 解析

简介: 详解 DNS 解析

背景


  • 前面讲了域名、IP,那么还缺少一个主角,就是 DNS
  • 这些都是网络中最最最基础的,也是最最最重要的概念,很有必要深入学习下
  • 所有素材均来自:https://www.bilibili.com/video/BV1Gh411y7LS?t=10,这个 up 声音好听,动画很赞,言简意赅,值得一看

 

如何打开一个网站?


  • 比如你打开上面我发的链接,就是打开一个网站
  • 虽然访问的是一个域名,但浏览器最终实际访问的是这个域名背后对应的 IP 地址,然后再访问这个 IP 地址背后的服务器来打开网站


image.png

提问

那浏览器是怎么知道不同域名背后都是对应哪个 IP 地址呢?答案就是我们今天要讲的主角 DNS

 

Domain Name System 域名系统


DNS 到底干嘛用的?

image.png

  • DNS 可以理解为是一种机制,它可以管理世界上所有域名和 IP ,它依靠的就是 DNS 服务器
  • 在互联网中,有很多 DNS 服务器,如何高效查询和管理域名、IP 是需要好好研究一下的

 

DNS 的工作原理


分层协作

image.png

之前域名篇讲过域名层级

  • www:二级域名
  • bilibili:一级域名
  • com:顶级域名

其实还有一个根域名,因为有且仅有它一个,所以写了等于没写一样

所以访问  www.bilibili.com、www.bilibili.com.root、www.bilibili.com. 效果是一样的,可以自己试一试

 

DNS 解析的详细过程

  1. 浏览器输入 www.bilibili.com,敲回车
  2. 浏览器会先查找本地的 DNS 缓存,如果有对应的记录, 就可以直接拿到域名对应的 IP 地址,然后就可以直接访问对应的服务器
  3. 假设缓存中找不到,就会先在本地的 hosts 文件中查找相应的域名和 IP 地址是否存在
  4. 假设 hosts 文件中也找不到,那么浏览器就会把查询请求发送到本地电脑网络设置中的 DNS 服务器上,一般是自动设置好的,自动设置的 DNS 地址一般是管理 wifi 路由器的 IP 地址;当然也可以手动设置,比如常见的 Google DNS 服务器 8.8.8.8
  5. 向这台 DNS 服务器发起查询 www.bilibili.com 对应的 IP 地址的请求,每台联网的设备都会有一台指定的 DNS 服务器
  6. 而这台 DNS 服务器会负责完整的查询过程(其实这台 DNS 服务器就是 Local DNS Server,下面内容会详细讲到)
  7. 先从 DNS 服务器们的根 DNS 服务器(Root DNS server)开始查询,这个 RDNS 只记录 com、org、net 等顶级域名的 DNS 服务器的 IP 地址信息,所以它收到查询请求之后,只会看你这个域名的顶级域名是什么
  8. 当前顶级域名是 com,RDNS 就会返回管理 com 顶级域名的 DNS 服务器的 ip 地址信息
  9. 然后 LDNS 收到 RDNS 返回的信息之后,就会找到负责管理 com 顶级域名的 DNS 服务器(Top Level Server),它收到查询请求之后,就会识别到你需要查的一级域名是 bilibili.com
  10. TDNS 就会返回管理 bilibili.com 的 DNS 服务器的 IP 地址信息
  11. LDNS 收到 TDNS 返回的信息之后,又会找到管理 bilibili.com 的 DNS 服务器(称为 Name Server),它就会返回 www.bilibili.com 的 IP 地址给 LDNS
  12. LDNS 收到最终的 IP 地址之后会返回给浏览器
  13. 浏览器收到 IP 地址之后就会访问对应的服务器
  14. 服务器会返回对应的响应内容给到浏览器,浏览器再进行渲染显示


image.png

域名层级

image.png


Local DNS Server


通过一个实际生活的栗子来讲解

转发 DNS 查询请求

  • 浏览器访问 www.bilibili.ocm,发起 DNS 查询请求
  • 假设本地 DNS 缓存没找到,hosts 文件中也没有,那么浏览器就会发送 DNS 请求,请求会先经过家里的路由器
  • 路由器收到 DNS 查询请求后,会转发给光喵(宽带盒子)
  • 光喵再转发给运营商 DNS 服务器
  • 重点:电信、移动、联通都有很多 DNS 服务器,不同的 DNS 服务器会负责各自区域内的联网设备的 DNS  请求的查询


image.png

Local DNS Server(LDNS)

  • LDNS 收到联网设备的 DNS 查询请求后
  • LDNS 会现在自己服务器本地查询有没有对应的记录
  • 如果之前已经有设备通过这台 LDNS 服务器查询过 www.bilibili.com 这个域名对应的 IP 地址,那么是会有缓存的,这样可以直接返回相应的 IP 地址
  • 如果它在服务器缓存中没有找到 www.bilibili.com 的 IP 信息
  • 那么 LDNS 就会开始依次查询 Root DNS、Top DNS、Name Server(上面说到的流程)
  • 最后拿到 www.bilibili.com 的 IP地址,返回给浏览器

image.png

为什么宽带运营商的 DNS 服务器会知道 RDNS 的 IP地址呢?

  • 因为 RDNS 全球只有 13 台,基本是固定不变的
  • 所以在所有 DNS 服务器中,他们的信息都是内置的

 

重点

  • 除了 RDNS 已知有 13 台之外,TDNS 和 Name Server 的数量都是不固定的
  • 当 LDNS 发起查询请求的时候,哪台 DNS 服务器先返回信息,就用哪台

image.png

相关文章
|
1月前
|
网络协议 应用服务中间件 nginx
【CKA模拟题】如何用Nslookup轻松检查集群服务名的DNS解析?
【CKA模拟题】如何用Nslookup轻松检查集群服务名的DNS解析?
110 2
|
2月前
|
网络协议
阿里云DNS常见问题之DNS导入解析报错如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
2月前
|
域名解析 缓存 网络协议
阿里云DNS常见问题之阿里的域名解析不对如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
1天前
|
域名解析 存储 缓存
Linux中搭建DNS 域名解析服务器(详细版)
Linux中搭建DNS 域名解析服务器(详细版)
|
8天前
|
缓存 负载均衡 网络协议
【亮剑】一次完整的 HTTP 请求过程,包括 DNS 解析、TCP 握手、HTTP 请求和响应等环节
【4月更文挑战第30天】本文介绍了HTTP请求的重要性和详细过程。首先,DNS解析将域名转换为IP地址,通过递归和迭代查询找到目标服务器。接着,TCP三次握手建立连接。然后,客户端发送HTTP请求,服务器处理请求并返回响应。最后,理解这个过程有助于优化网站性能,如使用DNS缓存、HTTP/2、Keep-Alive、CDN和负载均衡等实践建议。
|
8天前
|
网络协议 Windows
Windows Server 各版本搭建 DNS 服务器实现域名正反向解析
Windows Server 各版本搭建 DNS 服务器实现域名正反向解析
|
13天前
|
分布式计算 网络协议 Hadoop
Hadoop节点扩展配置DNS和主机名解析
【4月更文挑战第19天】
20 1
|
1月前
|
Kubernetes 网络协议 应用服务中间件
K8s中Pod4中DNS解析策略
K8s中Pod4中DNS解析策略
30 1
|
2月前
|
域名解析 弹性计算 网络协议
阿里云DNS常见问题之确认域名是否在Private zone解析失败如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
2月前
|
域名解析 缓存 网络协议
阿里云DNS常见问题之新购域名阿里云DNS无法解析如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:

相关产品

  • 云解析DNS
  • 推荐镜像

    更多