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这个域名的查询流程举例

  1. - 首先访问根域名服务器, 查询.com(顶级域名)由哪一个顶级域名服务器维护
  2. - 根据返回结果, 访问顶级域名服务器, 查询.baidu(次级域名)由哪一个次级域名服务器维护
  3. - 根据返回结果, 访问次级域名服务器, 查询www(主机名)的IP地址

上述的查询流程是由本地的DNS服务器完成, 而并非本地主机
本地主机通过浏览器访问一个域名时

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

image.png

DNS查询工具

  1. dig命令可以显示查询过程
  2. dig +trace www.baidu.com

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

————————————————