DNS详解 (只需要这一篇就够了!!)

DNS作用

DNS (Domain Name System) 域名名称系统

  • 通俗的讲, 它就是一个电话簿, 电话簿可以根据人名查找对应的电话号码; 而DNS可以根据域名查找对应的IP地址.
  • 专业的讲, 它是一个将域名和IP地址相互映射的分布式数据库

至于为什么一定要将域名转换成IP地址, 这涉及到互联网通信协议相关知识. 简单的讲ip地址是每一个计算机的唯一标识, 就像每个人的身份证号一样是独一无二的, 只有通过IP地址才来唯一确定一台计算机. 但是由于IP地址一连串的数字, 记忆麻烦, 因此就产生了域名, 域名相当于IP地址的别名, 但它和IP地址是一对多的关系, 即一个域名可能对应多个IP地址, 用户访问时只会被导向其中一个.

DNS原理

  • 在www.baidu.com, www.csdn.net这样的域名中, .net.com被称为”顶级域名“(top-level domain), .baidu.csdn被称为”次级域名“(second-level domain), www被称为主机名, 也叫做“三级域名”.

  • 常见的域名往往只显示了三个层级, 比如上面所说的www.baidu.com, www.csdn.net, 这是因为所有域名的最后一个根域名都是一样的都是.root, 所以平时都省略了. 实际上应该是www.baidu.com.root, www.csdn.net.root

  • 因此域名实际上是一个拥有四个层级的层级结构
    主机名.次级域名.顶级域名.根域名host.sld.tld.root

  • DNS解析域名时就是按照层级结构, 从根域名开始逐级向下分级查询

  • 比如以www.baidu.com这个域名的查询流程举例

    • 首先访问根域名服务器, 查询.com(顶级域名)由哪一个顶级域名服务器维护
    • 根据返回结果, 访问顶级域名服务器, 查询.baidu(次级域名)由哪一个次级域名服务器维护
    • 根据返回结果, 访问次级域名服务器, 查询www(主机名)的IP地址
  • 上述的查询流程是由本地的DNS服务器完成, 而并非本地主机

  • 本地主机通过浏览器访问一个域名时

    • 首先会查询本地主机的/etc/hosts文件, 查看是否进行了域名和IP映射自定义设置 (比如在/etc/hosts文件中将www.baidu.com映射成了127.0.0.1, 那么浏览器访问www.baidu.com时访问的将是本地主机)
    • 如果没有相应的自定义设置, 则会访问本地DNS服务器, 本地DNS服务器的IP地址可查看/etc/resolv.conf文件
    • 本地DNS服务器会先查看本地缓存, 是否有对应域名和IP的映射, 如果有则直接返回给本地主机, 如果没有则进行上述查询流程.
  • 具体流程图如下
    在这里插入图片描述

DNS查询工具

dig命令可以显示查询过程

dig +trace www.baidu.com

在这里插入图片描述
一共返回了四块信息

  • 第一块是查询参数和统计可以不管
  • 第二块是查询的内容, 表示是查询的是www.baidu.com的A(Address的缩写)记录在这里插入图片描述
  • 第三块是查询结果
    • cname (canonical name)规范名称记录, 后面返回另一个域名, 表示当前查询域名是另一个域名的跳转
    • 用户查询www.baidu.com的时候实际上返回的事www.a.shifen.com的IP地址
    • 而www.a.shifen.com域名指向两个IP地址
    • 300, 和175是TTL值(Time To Live的缩写), 表示缓存时间, 在缓存时间内无需再查询
      在这里插入图片描述
  • 第四块是本地DNS服务器的一些传输信息
    • Query time表示查询花费的时间
    • SERVER 表示本地DNS服务器的IP地址, 存储在了/etc/resolv.conf文件中
      在这里插入图片描述
dig +short www.baidu.com

+short参数只返回查询结果

dig +trace www.baidu.com

+trace参数返回分级查询的整个过程

  • 第一块是查询根域名服务器
  • NS (Name Server) 域名服务器记录, 返回保存下一级域名新的服务器的域名
    在这里插入图片描述
  • 第二块是查询顶级域名服务器
    在这里插入图片描述
  • 第三块是查询次级域名服务器
    在这里插入图片描述
    第四块是在上面这五台次级域名服务器中查询www.baidu.com的主机名, 返回结果显示最先从ns1.baidu.com这台服务器上返回查询结果
    在这里插入图片描述
dig ns com

查找包含指定层级域名的服务器
在这里插入图片描述

dig ns baidu.com

在这里插入图片描述

dig ns baidu

在这里插入图片描述

DNS的一些常识

  1. 全世界域名的最高管理机构: ICAN (Internet Corporation for Assigned Names and Numbers) 组织, 它的一项主要任务就是规定哪些字符串可以作为顶级域名
  2. 顶级域名以分成两类。一类是一般性顶级域名(gTLD),比如.com、.net、.edu、.org、.xxx等等,共有700多个。另一类是国别类顶级域名(ccTLD),代表不同的国家和地区,比如.cn(中国)、.io(英属印度洋领地)、.cc( 科科斯群岛)、.tv(图瓦卢)等,共有300多个。
  3. ICAN并非亲自管理这些顶级域名, 而是把他们全部分配给不同的托管商, 比如.cn域名的托管商就是中国互联网络信息中心(CNNIC)
  4. 世界上最大的顶级域名托管商是Verisign, .com顶级域名就由它托管
  5. 一个域名的注册费用分为三部分: ICAN, 托管商, 注册商, 其中托管商拿的最多
  6. 由于早期的 DNS 查询结果是一个512字节的 UDP 数据包。这个包最多可以容纳13个服务器的地址,因此就规定全世界有13个根域名服务器,编号从a.root-servers.net一直到m.root-servers.net。
  7. 13个根域名服务器分配给了12个托管商, Verisign管理两台根域名服务器A和J
  8. 托管商为了保证根域名服务器的可用性,会部署多个节点, 因此全世界根域名服务器实际数量不止13

参考文章

  1. lDNS原理入门.
  2. 根域名知识
  3. 10分钟详解DNS 域名解析协议
发布了3 篇原创文章 · 获赞 2 · 访问量 91

猜你喜欢

转载自blog.csdn.net/weixin_40996518/article/details/105315200