本文转载自微信公众号「小菜学编程」,作者fasionchan。转载本文请联系小菜学编程公众号。
在时间查询服务中,客户端需要知道服务端的 IP 地址和端口号,才能发起请求。但我们应该如何记忆 IP 地址和端口号呢?要知道,人类记忆数字型信息,比如电话号码等,并不擅长。
端口其实还好。因为经过多年的发展,常用网络服务形成了一套约定俗成的惯例,这就是所谓的 知名端口 。举个例子, Web 服务一般采用 80 端口。我们用浏览器访问网站,甚至都不需要输入端口号,默认就是 80 端口。
IP 地址就不一样了。10.35.87.61 这个 IP 地址比 80 端口难记多了。不仅如此,不同的服务可能部署在不同的机器,IP 地址也肯定是不一样的。很显然,百度的服务器,地址肯定跟淘宝的不一样。
我们每天都会访问很多网站,想记住它们的 IP 地址,显然是不可能的!如果能够通过名字来访问,则事半功倍,因为我们记忆文本要比记忆数字更拿手。
为此,网络先驱们发明了域名和域名系统,这就是本文的主角。
域名
域名是 网域名称 ( domain name )的简称,它是一串以点号分隔的字符串,用于标识一台或一组计算机。域名可作为 IP 地址的别名,更便于记忆。
我有一个博客网站,部署在阿里云上,服务器 IP 是 163.181.33.227 ,但读者们肯定记不住 IP 地址的。为此,我申请了一个域名 www.fasionchan.com 作为别名。这样就好记多了,因为 fasionchan 是我的英文名。
那么,域名该如何理解呢?点号分隔的各个部分都有什么作用呢?
实际上,域名是一个分层次的命名空间,各种域名都隶属于根域 . 。位于第一层的域名称为 一级域名 或 顶级域名 ;第二层的域名称为 二级域名 ;以此类推。
以 www.fasionchan.com.为例,从右往左读依次是:
- 根
- 一级域名(顶级域名):com
- 二级域名:fasionchan
- 三级域名:www
请注意,域名是从根开始,只不过我们经常省略域名最右边的点号 . 。
某个域下层的域称为 子域 ,上层的域称为 父域 。举个例子,从 fasionchan.com 的角度看,它的父域是 .com ,子域包括 www.fasionchan.com 、 linux.fasionchan.com 等等。子域从属与父域,父域对子域拥有管理权。
域名由注册管理机构负责管理,可以通过注册商来注册,先到先得。
域名注册后,所有人拥有域名的管理权:不仅可以修改域名关联的 IP ,还可以分配子域名。域名 fasionchan.com 被我注册后,我可以修改它关联的 IP ,还可以随意添加子域名 www.fasionchan.com 。
我甚至还可以添加一个子域 lumy.fasionchan.com ,送给我的朋友 Lumy 。同理, Lumy 拥有 lumy.fasionchan.com 的管理权。她可以修改域名关联的 IP ,也可以随意添加子域名。
顶级域
域名的第一级是 顶级域 ,包括
- 通用顶级域 ,例如 .com 、 .net 和 .org 等;
- 国家和地区顶级域 ,例如 .cn 、 .us 等;
通用顶级域 | 含义 |
---|---|
.com | 商业公司 |
.edu | 教育机构 |
.net | 互联网服务供应商 |
.org | 非营利组织、国际机构等 |
国家和地区顶级域 | 含义 |
---|---|
.cn | 中国 |
.hk | 中国香港 |
.mo | 中国澳门 |
.tw | 中国台湾 |
.jp | 日本 |
.us | 美国 |
域名系统
域名系统 ( domain name system ,简称 DNS ),是互联网提供的一项名字服务。我们可以将 DNS 看作一个分布式数据库,它保存着域名和 IP 的映射关系。
有了这个对应关系,我们就可以通过 域名 ( domain name )来访问网络服务,不用再苦苦记忆 IP 地址。要知道域名 www.fasionchan.com 比 IP 地址 163.181.33.224 好记多了。
那么,域名系统到底是怎么工作的呢?
域名注册后,所有人可将域名关联的 IP 登记到域名系统。这是一个分布式数据库,以域名为键,以 IP 为值。域名系统提供一些服务器用户查询,这就是 DNS服务器( dns server )。
当互联网用户通过浏览器访问网站时,以 https://www.fasionchan.com 为例:
- 浏览器解析 URL ,得到主机域名 www.fasionchan.com ;
- 浏览器向 DNS 服务器发起域名解析请求,获取 www.fasionchan.com 对应的 IP 地址,如图示步骤①;
- DNS 服务器找到域名对应的 IP ,然后向浏览器回复应答,如图示步骤②;
- 浏览器拿到 IP 地址后,即可向 www.fasionchan.com 所在的 Web 服务器发起请求,如图示步骤③;
这就是域名系统的基本工作原理,它看似简单,但还有很多细节等着我们进一步探索。