背景

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

如何打开一个网站?

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

提问

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

Domain Name System 域名系统

DNS 到底干嘛用的?

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

DNS 的工作原理

分层协作

之前域名篇讲过域名层级

  • 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. 服务器会返回对应的响应内容给到浏览器,浏览器再进行渲染显示

域名层级

Local DNS Server

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

转发 DNS 查询请求

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

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地址,返回给浏览器

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

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

重点

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

详解 DNS 解析的更多相关文章

  1. <转>详解DNS的常用记录(上):DNS系列之二

    详解DNS的常用记录(上) 在上篇博文中,我们介绍了DNS服务器的体系结构,从中我们了解到如果我们希望注册一个域名,那么必须经过顶级域名服务器或其下级的域名服务器为我们申请的域名进行委派,把解析权委派 ...

  2. DNS篇(详解DNS)

    *文章来源:https://blog.egsec.cn/archives/601 *本文将主要说明:本文主要叙述什么是DNS.域名的层级.DNS 解析过程.DNS的缓存时间.DNS 的记录类型.DNS ...

  3. XML文件详解以及解析

    转自:https://blog.csdn.net/com_ma/article/details/73277535 一.xml基础详解: 1.概述: xml:即可扩展标记语言,xml是互联网数据传输的重 ...

  4. 33 Python 详解命令解析 - argparse--更加详细--转载

    https://blog.csdn.net/lis_12/article/details/54618868 Python 详解命令行解析 - argparse Python 详解命令行解析 - arg ...

  5. 详解DNS域名解析全过程

    关于dns域名解析的大致过程很多人都知道,但有些细枝末节的东西容易遗忘,今天有空整理一下,作为以后复习用,如有不对的地方,还望指正.解析大致过程如图(不喜欢看图的可以直接跳过): 当一个用户在地址栏输 ...

  6. 详解DNS,你真的懂吗?

    what`s  this ? 概念 域名系统(英文:DomainNameSystem,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.D ...

  7. 详解DNS重绑定攻击

    0x00 前言 DNS重绑定攻击的用法有很多种,这篇文章主要理解DNS重绑定攻击的原理,并介绍如何通过DNS重绑定来攻击内网设备.为了更好的理解DNS重绑定攻击,我们先从Web浏览器的同源策略开始介绍 ...

  8. <转>详解DNS的常用记录(下):DNS系列之三

    在上篇博文中我们介绍了DNS服务器中几种不可或缺的记录,包括A记录,NS记录和SOA记录.本篇博文中我们将继续为大家介绍DNS的另外几种常用记录,希望能对大家了解DNS有所帮助. 四 MX记录 MX记 ...

  9. 详解DNS域名解析系统(域名、域名服务器[根、顶级、授权/权限、本地]、域名解析过程[递归与迭代])

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105583806 学习课程:<2019王道考研计算机网络> 学习目的 ...

随机推荐

  1. QFNU-11.08training

    7-1  阅览室 题目: 天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时.书号为不超过10 ...

  2. Blazor实现未登录重定向到登录页的方法

    今天研究了一下blazor,发现他默认启动就是类似于后台管理系统的界面,看到这个页面我就想给他写个登录,有登录就涉及到未登录重定向的问题,但是我没有找到blazor全局路由的设置,知道的老哥可以告诉我 ...

  3. 事后分析$\alpha$

    项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求 事后分析 我们在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作业在哪个具体方面帮助我们实现目标 组织组员 ...

  4. OO随笔之纠结的第二单元——多线程电梯

    综述 主要任务就是写一个电梯模拟器,读入每一个人的请求然后让电梯把他们送到想去的地方. 从第一次到第三次作业,三次的主要任务都是相同的,但是每次都增加了很多的细节,每次的难度都逐步增长,电梯复杂度和瞎 ...

  5. centos国内镜像下载

    国内镜像下载 http://mirrors.aliyun.com/centos/6/isos/x86_64/ 如果需要下载centos 7 版本进入对应7的/isos/x86_64/ 选择minima ...

  6. 001.Ansible简介与基本安装

    一 自动化运维 1.1 运维的自动化发展历程 IAAS:infratructure as a Service PAAS:platform as a Service 平台及服务 SAAS:softwar ...

  7. 串口配合DMA接收不定长数据(空闲中断+DMA接收)-(转载)

    1.空闲中断和别的接收完成(一个字节)中断,发送完成(发送寄存器控)中断的一样是串口中断: 2.空闲中断是接收到一个数据以后,接收停顿超过一字节时间  认为桢收完,总线空闲中断是在检测到在接收数据后, ...

  8. Centos7 rsync同步备份文件

    Centos7 rsync同步备份文件 一.rsync主服务端 1,安装rsync 查看是否安装rsync [root@localhost /]# rpm -qa | grep rsync 在线安装r ...

  9. Go以及调试工具dlv安装及使用

    安装go wget https://studygolang.com/dl/golang/go1.14.1.linux-amd64.tar.gz tar -C /usr/local -zxvf go1. ...

  10. javascript数组排序之冒泡排序

    冒泡排序 作为一名程序员数组的排序算法是必须要掌握的,今天来说最简单的一种数组排序----冒泡排序 冒泡排序原理 冒泡排序算法是一种简单直观的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如 ...