从域名到IP:从cutehive.com的解析说起

2025-04-24T09:43:42
中文社区的小伙伴可能或多或少地都知道一点我创建并维护的cutehive.com,查询了一下这个域名注册于2020-04-26,网站正式上线于2020-06-07,没想到这一转眼就过去了五年。

(插图由ChatGPT协助生成)
当你在浏览器中输入cutehive.com这个域名,会直接打开我的这个网站,里边提供HIVE见证人列表、转发查询、代理查询等诸多功能,反正我自己觉得挺好用的。
但是你有没有想过,为什么我们输入域名就会打开相应的网站呢?这看起来似乎是理所当然且非常简单的事情,但实质上,这背后可还真就不简单呢。
今天,就让我们从访问cutehive.com说起,看看这背后到底发生了些什么事情。

IP地址

现在我们都知道,互联网上有无数台联网设备,网络上给出的数据预计到 2024 年,联网设备数量将达到 271 亿台,但我觉得可能远远不止这些。
那么问题来了,这么多设备怎么互联互通呢?比如之前的帖子中我说过我在一些服务商处有N多VPS,那么我在家里如何访问到我的某台VPS呢?
答案很简单,就是IP地址,百度百科上介绍一下:
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
IP地址的分配以及绑定等也是一个复杂的话题,不过这不是我们这篇文章学习的重点,我们可以简单粗暴地认为:互联网上的每台设备都有(可能不止一个)IP地址,我们可以通过IP地址访问设备(如果允许访问的话)
所以,我在家中的电脑上,使用ssh(或者putty等工具),通过IP地址,就可以访问我远在世界各地的VPS啦。

域名

现在我们有了IP地址,但是新的问题来了,如果我在VPS上建立了一个网站,我自己访问,显然没啥大问题,我可以记住IP或者把IP写在记事本中。但是让别人记住IP,显然很难,尤其是在互联网上有无数网站的情况下。
比如我问你Google.com又或者Hive.blog站点的对应IP,你知道嘛?我也不知道。这就好比我们可能会记住父母、爱人、孩子的手机号码,但是我们不可能记得住同学、同事等每个需要打交道的人的电话号码。
对于电话号码,我们一般会将电话号码存进通讯录,比如张三(139xxxxxxxxx)、李四(888812xx)、酱油厂厂长(222211xx),这样就建立了名字和电话号码之间的对应关系。
互联网上也是一样,我们可以建立名字和IP地址之间的对应关系,比如在本地的hosts文件中保存:
198.58.99.7 cutehive.com
这样,当我们访问cutehive.com就会等同于访问198.58.99.7。
但是作为cutehive.com的站长,我们肯定希望所有人都可以访问这个站点,而我们又不能要求所有人都去修改本地的hosts文件,所以需要有一套通用的名字到IP的解析方案。
这时候就不得不提到域名,百度百科中介绍如下:
由于IP地址不方便记忆并且不能显示地址组织的名称和性质,人们设计出了域名,并通过域名系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。

DNS

好,现在我们已经创建好了网站,并且已经在注册商处注册好了域名cutehive.com,那么如何把域名指向IP地址呢?这时候就要提到DNS啦。
百度百科中介绍如下:
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。
这么一看,似乎和我之前提到的保存在本地(hosts)中的解析表没啥区别,只不过是放在网络上了。当然了,实际情况要比这个复杂多啦。
简单来讲,域名注册商将域名的DNS写入到对应的全球域名数据库中,当我们访问域名时,本地的解析器会向电脑中设置的DNS或者ISP的DNS请求将域名解析成IP。
如果缓存中存在相应的解析记录,那么直接就会返回对应的IP。否则本地(ISP的)DNS会向根服务器发送DNS请求,根服务器会逐层处理,返回域名的DNS,最后由域名的DNS返回IP。

实例

还是有些抽象,我们拿cutehive.com实例来讲吧。
我们通过域名注册商,在全球域名数据库中写入如下信息(主要是Name Server):
而在域名解析商(不是注册商哦)我们设置了如下解析记录:
当我们需要解析cutehive.com时,完整的数据链条如下:
---------------------------MSG Received---------------------------
 ; <<>> EzDig 3.0 <<>> @8.8.8.8 cutehive.com A +trace

com	172800	IN	NS	c.gtld-servers.net
com	172800	IN	NS	h.gtld-servers.net
com	172800	IN	NS	a.gtld-servers.net
com	172800	IN	NS	l.gtld-servers.net
com	172800	IN	NS	e.gtld-servers.net
com	172800	IN	NS	b.gtld-servers.net
com	172800	IN	NS	f.gtld-servers.net
com	172800	IN	NS	g.gtld-servers.net
com	172800	IN	NS	d.gtld-servers.net
com	172800	IN	NS	i.gtld-servers.net
com	172800	IN	NS	k.gtld-servers.net
com	172800	IN	NS	j.gtld-servers.net
com	172800	IN	NS	m.gtld-servers.net
;; Received 490 bytes from 192.112.36.4#53(g.root-servers.net) in 344 ms

cutehive.com	172800	IN	NS	ns29.domaincontrol.com
cutehive.com	172800	IN	NS	ns30.domaincontrol.com
;; Received 170 bytes from 192.31.80.30#53(d.gtld-servers.net) in 344 ms

cutehive.com	3600	IN	A	198.58.99.7
cutehive.com	3600	IN	NS	ns30.domaincontrol.com
cutehive.com	3600	IN	NS	ns29.domaincontrol.com
;; Received 98 bytes from 97.74.104.15#53(ns29.domaincontrol.com) in 359 ms
简单来讲就是
  • 通过根服务器查询.com域名的解析服务器
  • 通过上边的结果查询对应cutehive.com的解析服务器
  • 通过查询结果进一步查询,得到相应的A记录
以上查询使用的是我好久以前实现的一个小工具
可惜这个工具我好久没有更新和维护啦,哎,总是做一些半途而废的事情呢。
好了,关于域名解析这个就给大家分享到这里,你学废了嘛?

相关链接

271
22
71.61
22 Replies