通过DNS 服务找到 bilibili.com 的 IP 地址(详解 DNS)

时间:2019-11-19
本文章向大家介绍通过DNS 服务找到 bilibili.com 的 IP 地址(详解 DNS),主要包括通过DNS 服务找到 bilibili.com 的 IP 地址(详解 DNS)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

 想知道你输入 www.bilibili.com 后,主机是怎么找到 bilibili.com 的 IP 地址吗?那就跟着这篇博客开始吧!!

 博客将按下列顺序展开:

一、DNS 解决的问题。

  因特网上的主机主要可以用两种方式进行标识,一种是对人类友好的域名地址(如 www.bilibili.com),另一种就是 IP 地址(例如 120.92.168.51 ,可以用命令 ping + 域名 得到)。

  因此需要一个可以将 域名 和 IP 地址相互映射的目录服务,这就是 域名服务系统(Domain Name System , DNS) 的主要任务,也是它解决的问题。

二、DNS 的定义和提供的服务。

  1. DNS 的定义:

    1) 由多层的 DNS 服务器实现的 分布式数据库

    2.)使得主机能够查询分布式服务器的 应用层协议

  DNS 是 Internet 核心功能,用应用层协议实现。

  这里有一个疑问,DNS 既然是 Internet 核心功能,为什么不在更底层实现,而是在应用层实现呢

    这与互联网 TCP/IP 协议原则相符,希望端系统复杂,而网络核心越简单越好。那么 DNS 在应用层实现,那么就不必再网络核心实现,降低了网络核心的复杂性。

   2. DNS 提供的服务

    1) 域名向 IP 地址的翻译。

      a)同一台主机上运行着 DNS 应用的客户端。

      b)浏览器从 URI 中抽取出主机名 www.cnblogs.com ,并将这台主机名传给 DNS 客户端。

      c)DNS 客户端向 DNS 服务器发送一个包含主机名的请求。

      d)DNS 客户端最终会收到一份回答报文,其中包含有对应于该主机名的 IP 地址。

      e)一旦浏览器接收到来自 DNS 的该 IP 地址,它能够向位于该 IP 地址 80 端口的 HTTP  服务器进程发送一个 TCP 连接。

  

    2) 主机别名

      例如一台名为 relay1.west-coast.enterprise.com 的主机,可能还有两个别名为 enter-prise.com 和 www.enterprise.com。

    3) 邮件服务器别名。

      与前者类似,例如 Bob 的雅虎邮件有一个账号为 bob@yahoo.com ,但是雅虎邮件服务器的主机名可能更为复杂,不像 yahoo.com 这么好记(可能为 relay1.west-coast.enterprise.com,即规范主机名),所以应用程序可以调用更 DNS 来获取更容易记忆的主机别名对应的规范别名以及主机的 IP 地址。

    4) 负载分配

      DNS 也用于冗余的服务器之间进行负载分配。繁忙的站点被冗余分布在多台服务器上,每台服务器均运行不同的端系统上,每一个都有不同的 IP 地址。

      例如,假设每天有 30 万对 bilibili 的访问请求,如果只有一台服务器回应请求是不是很容易崩掉?这个时候 DNS 就可以进行负载分配。

  

       这是一个 IP 地址集合,对应一个规范主机名的规范。

      例如 以上四个服务器的 IP 地址都对应着 www.bilibili.com 的映射,当客户对映射着 www.bilibili.com 发出一个 DNS 请求时,该服务器用 整个 IP 地址的集合进行相应。但在每个回答中循环这些地址次序,客户通常向 IP 地址排在最开始的服务器发送 HTTP 请求报文。例如以下是我对 www.bilibili.com 调用 ping 命令得到的结果,可以看到,两次返回的 IP 地址是不一样的。

  三、DNS 的结构:分布式层次数据库

   1. 结构

    a)根 DNS 服务器

      全球的根服务器由 13 个不同的组织管理,而其中没有一个是中国。

      这篇连接会告诉你为什么中国不能增加第 14 个根域名服务器:https://zhidao.baidu.com/question/2202931536625902308.html

     b) 顶级域(DNS)服务器

      对于每一个顶级域(如 com、org、net、edu 和 gov)和所有国家的顶级域(如 uk、fr、cn、jp),都有 TLD 服务器。

    c) 权威 DNS 服务器

      在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的 DNS 记录,这些记录将这些主机的名字映射为 IP 地址。

  

   2. 查询

    a)递归查询+迭代查询

      首先说明 本地 DNS 服务器 (local DNS server) 概念:

      本地 DNS 服务器并不属该 于该服务器的层次结构。每一个 ISP 都有一台本地 DNS 服务器。当主机与ISP 连接时,该 ISP 提供提供一台主机的 IP 地址,该主机会存有一台或多台本地 DNS 服务器的IP 地址。

      当主机发出 DNS 请求时,该请求被发送到本地 DNS 服务器,它起着代理的作用,并将该请求转发到 DNS 服务器层次结构中。

  

   (上方的图来自  mooc网 哈尔滨工业大学 计算机网络课程 聂兰顺老师的ppt内容,这里将访问主机改了)

    下面说说上图的 DNS 请求过程:

      假设 cis.poly.edu 想知道 bilibili.com 的 IP 地址,同时 cis.poly.edu 的本地 DNS 服务器为 dns.poly.edubilibili.com 通过查询可知,它的权威域名为 ns3.dnsv5.com

      1)主机  cis.poly.edu 首先向它的本地 DNS 服务器发出 DNS 查询报文,其中包含有要查询的 bilibili.com 主机名。

      2)本地 DNS 服务器将该查询报文转发给根 DNS 服务器

      3)根服务器注意到 com 前缀,并返回负责 com 的 TLD 的 IP 地址列表

      4)本地 DNS 服务器再次向这些 TLD 服务器之一发送查询报文。

      5)该 TLD 服务器注意到 dnsv5.com ,并用权威服务器的 IP 地址进行相应,该权威 DNS 服务器是 ns3.dnsv5.com。

      6)本地 DNS 服务器之间向 ns3.dnsv5.com 重发查询报文。

      7)ns3.dnsv5.com用 bilibili.com 的 IP 地址进行相应。

      8)本地 DNS 服务器将收到的回复发回给 主机。

    说明:上方的查询同时用了递归查询和迭代查询,

      从 cis.poly.edu 到 dns.poly.edu 的查询时递归查询,因为该查询是以自己的名义请求 dns.poly.edu 来获得映射。

      后三个查询时迭代查询,因为所有的回答都是之际返回给 dns.poly.edu 的。

    b)递归查询

       下图主要采用 递归查询

   

     实践时,第一种方法用的多。

 四、DNS 缓存。

  目的:为了改善时延性能并减少在 Internet 上DNS 查询报文的数量,DNS 广泛采用 DNS 缓存技术。

  原理:在一个请求链中,当某一个 DNS 服务器接收到一个 DNS 回答时,它能映射缓存到本地存储中。

  其中,由于主机和主机名与 IP 地址间的映射不是永久的,DNS 服务器在一段时间后(通常为两天)将丢弃缓存的信息。

五、DNS 记录与消息格式      (以下简述较为简略,图片来自 mooc网 计算机网络 聂兰顺老师)

  DNS 的传输层协议是 UDP

   1. 资源记录

    共同实现 DNS 分布式数据库的所有 DNS 服务器存储了 资源记录(Resource Record) RR,RR 提供了主机名到 IP 地址的映射。每一条 DNS 回答报文都包含一条或多条 资源记录。

    资源记录是一个包含下列字段的 4 元组:

    ( Name, Value, Type, TTL)

     TTL   记录的生存时间,它决定了资源记录应当从缓存中删除的时间。 Name 和 Value 的值取决于 Type。

  

   2. DNS 协议

    DNS 协议有 查询 和 回复 ,两种消息的格式相同。

   

    1) 前 12 个字节是 首部区域

   

    2)问题区域 :包含正在进行的查询信息

    3)回答区域(来自 DNS 服务器):对最初请求的名字的资源记录。

    4)权威区:包含其他权威服务器的记录

    5)附加信息:包含其他帮助的记录。

   3. 如何注册一个域名

  

原文地址:https://www.cnblogs.com/lyw-hunnu/p/11890199.html