Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

DNS 的名字空间

复习

  • 套接字:应用程序通过套接字收发网络数据
  • IP 地址:设备联网需要一个可路由的地址
  • NAT:在内外网地址之间做转换

TL;DR

  • 域名给人用,IP 地址给网络用
  • DNS 负责把域名翻译成 IP 地址
  • 域名空间是一棵由许多机构共同管理的树
  • 分层管理让它既能扩展,又能各自自治

正文

  网络真正认识的是 IP 地址,可人却记不住一串数字。你显然不愿意每次上网都输入 142.250.72.14,而是想输入 www.example.com

  于是需要一套把“好记的名字”翻译成“好用的地址”的系统。这个系统就是 DNS(域名系统,Domain Name System)。

一棵倒过来的树

  域名的结构,是一棵分层的树。以 www.example.com 为例,从右往左看:

  • :最顶上的那一层(通常省略不写)
  • 顶级域.com
  • 二级域example
  • 子域www

  每一层由不同的机构负责管理。.com 归谁管、example.com 内部的子域名怎么分,各有其人。没有人需要知道整棵树的全貌,大家只管好自己那一段。

  这和我们熟悉的东西很像:文件系统是一棵目录树,邮政地址有省、市、街道的层次。用层次来组织命名空间,是让规模可控的通用办法。

名字和地址分开了

  这里有个很重要的设计:域名和 IP 地址是分开的。

  域名只是“名字”,用来方便人使用;它本身不包含任何位置信息。真正决定数据往哪走的,还是 IP 地址。所以,一个域名可以在不改名字的情况下,把背后的服务器换掉、迁到别处——用户照样输入同一个网址。

  把“名字”和“位置”解耦,带来了巨大的灵活性。这也再次呼应了前面的观点:IP 地址更像位置,会变;而域名更像名字,可以长期不变。

  那么,这台“翻译机”具体是怎么工作的、又怎样避免每次都从头查?下一章揭晓。

思考题 1

  为什么互联网需要域名,而不让用户直接使用 IP 地址?

思考题 2

  域名空间的树形分层,带来了什么好处?

小结

知识点

  • 域名供人使用,IP 地址供网络寻址
  • DNS 把域名解析为 IP 地址
  • 域名空间是由许多机构分管的分层树
  • 域名与地址解耦,带来灵活性

参考资料

  1. Wikipedia(zh):域名系统:把域名解析为 IP 地址的系统
  2. Wikipedia(zh):域名:互联网中标识主机的分层名字

思考题答案(仅供参考)

思考题 1

  因为 IP 地址是一串无规律的数字,人难以记忆和输入;而且服务器迁移时地址可能改变,写死的地址会失效。域名好记,且与地址解耦,可以灵活变更背后的服务器。

思考题 2

  分层让命名空间可以不断扩展,同时把不同层级的名字分给不同机构各自管理。每个机构只需维护自己那一段,无需掌握全局,既减轻了负担,也尊重了自治,使整个系统能够持续增长。

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪