一、域名是什么

对大部分人来说,域名其实就等同于网址,每个域名背后都对应着一个服务器的IP地址,虽然我们每次访问网站都要输入域名,但其实都是通过DNS(下面会介绍)找到对应的IP地址来进行访问的

如果你可以打开终端,ping一下对应的网站,你就可以看到对应的网站的IP地址

那既然有IP地址,那为什么还要出现域名?

域名的出现,其实是为了方便人类记忆,比如百度的IP:180.101.49.12,当你要去打开百度的时候,你是愿意记住这一串数字180.101.49.12,还是去记www.baidu.com呢,答案可想而知

二、域名的等级划分

域名都是用句点来分隔的,比如 www.server.com,这里的句点代表了不同层次之间的界限

在域名中,越靠右的位置表示其层级越高

顶级域名:一般两种划分方法:按国家地区划分和按组织性质划分

  1. 按国家地区划分:.cn(中国)、.tw(中国台湾)、.hk(中国香港)、.ru(俄罗斯)、.de(德国)。基本都是两个字母的

  2. 按组织性质划分:.org(表示非盈利组织)、.net(代表网络提供商)、.com(代表商业机构)、.edu、.gov、.cc等

一级域名:比如baidu,bilibili等

二级域名:二级域名是根据一级域名和顶级域名来定义的,没有一级域和顶级域也就没有二级域名的说法,所以我们平时说的www.baidu.com其实就是二级域名

三、DNS是什么

我们在上网的时候,通常使用的方式是域名,而不是 IP 地址,这是怎么做到的?

那么实现这一技术的就是 DNS 域名解析,DNS 可以将域名网址自动转换为具体的 IP 地址。

3.1 域名解析的工作流程

浏览器首先看一下自己的缓存里有没有,如果没有就向操作系统的缓存要,还没有就检查本机域名解析文件 hosts,如果还是没有,就会 DNS 服务器进行查询,查询的过程如下:

  1. 客户端首先会发出一个 DNS 请求,问 www.server.com 的 IP 是啥,并发给本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。

  2. 本地域名服务器收到客户端的请求后,如果缓存里的表格能找到 www.server.com,则它直接返回 IP 地址。如果没有,本地 DNS 会去问它的根域名服务器:“老大, 能告诉我 www.server.com 的 IP 地址吗?” 根域名服务器是最高层次的,它不直接用于域名解析,但能指明一条道路。

  3. 根 DNS 收到来自本地 DNS 的请求后,发现后置是 .com,说:“www.server.com 这个域名归 .com 区域管理”,我给你 .com 顶级域名服务器地址给你,你去问问它吧。”

  4. 本地 DNS 收到顶级域名服务器的地址后,发起请求问“老二, 你能告诉我 www.server.com 的 IP 地址吗?”

  5. 顶级域名服务器说:“我给你负责 www.server.com 区域的权威 DNS 服务器的地址,你去问它应该能问到”。

  6. 本地 DNS 于是转向问权威 DNS 服务器:“老三,www.server.com对应的IP是啥呀?” server.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。

  7. 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。

  8. 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。

至此,我们完成了 DNS 的解析过程。现在总结一下,整个过程我画成了一个图。

域名解析的工作流程

DNS 域名解析的过程蛮有意思的,整个过程就和我们日常生活中找人问路的过程类似只指路不带路

有关CDN的工作流程,还可以见这篇文章,介绍的也很详细

面试官:CDN是怎么工作的