好文种草根域名的知识-阮一峰的网络日志(代码片段)

徐同学呀 徐同学呀     2022-12-11     603

关键词:

域名是互联网的基础设施,只要上网就会用到。

它还是一门利润丰厚的生意,所有域名每年都必须交注册费,这是很大的一笔钱。

这些钱交到了哪里?到底谁控制域名的价格?为什么有的域名注册费很贵,有的便宜?…今天,我就来谈谈这些与根域名(root domain)相关的知识。

一、ICANN

全世界域名的最高管理机构,是一个叫做 ICANN (Internet Corporation for Assigned Names and Numbers)的组织。它的总部在美国加州。

它原来是美国商务部下面的一个非盈利机构,所以有人说,美国政府控制了全世界的域名,这种说法是有根据的。2016年,美国政府宣布,ICANN 不再隶属于商务部,成为一个自我管理的独立机构。但是可想而知,美国政府依然对它有绝对影响。

ICANN 负责管理全世界域名系统的运作。它的一项主要工作,就是规定顶级域名(top level domain,简写为 TLD)。

二、TLD

所谓顶级域名(TLD),就是最高层级的域名。简单说,就是网址的最后一个部分。比如,网址www.example.com的顶级域名就是.com

ICANN 就负责规定,哪些字符串可以当作顶级域名。截至2015年7月,顶级域名共有1058个。

它们可以分成两类。一类是一般性顶级域名(gTLD),比如.com.net.edu.org.xxx等等,共有700多个。另一类是国别顶级域名(ccTLD),代表不同的国家和地区,比如.cn(中国)、.io(英属印度洋领地)、.cc( 科科斯群岛)、.tv(图瓦卢)等,共有300多个。

三、顶级域名托管商

ICANN 自己不会去管理这些顶级域名,因为根本管不过来。想想看,顶级域名有1000多个,每个顶级域名下面都有许多批发商,如果每个都要管,就太麻烦了。

ICANN 的政策是,每个顶级域名都找一个托管商,该域名的所有事项都由托管商负责。ICANN 只与托管商联系,这样管理起来就容易多了。举例来说,.cn域名的托管商就是中国互联网络信息中心(CNNIC),它决定了.cn域名的各种政策。

目前,世界最大的顶级域名托管商是美国的 Verisign 公司。

四、Verisign

Verisign 是一家商业公司,总部在美国维吉尼亚州。它托管了.com.net.name.gov这四个一般性顶级域名,以及.cc.tv这两个国别顶级域名。另外,.edu.jobs的后台管理工作,也外包给了它。

它对.com.net的独家垄断是历史形成的。最早的时候, Network Solutions 公司接受美国国家科学基金会的委托,管理顶级域名。2000年,Verisign 收购了这家公司,继承了域名业务。2003年,Verisign 卖掉了域名注册业务,只保留顶级域名管理。也就是说,它只做域名批发,不做域名零售了。

2010年,Verisign 又把网站安全和加密证书业务卖给了 Symantec 公司。后者又在2017年把这项业务卖给了 DigiCert。

五、ICANN 与 Verisign 打官司

按理说,Verisign 是 ICANN 最大的托管商,两家的关系应该很好才对。事实却是它们的关系很差,甚至还打过官司。

原因在于,ICANN 是政府支持的非盈利机构,不以盈利为目标,而 Verisign 是一家商业公司,追求利润最大化,每年必须交大量的托管费给前者。两家的矛盾就源于此。

2003年,Verisign 推出了一项新业务 Site Finder,用户访问没有注册过的.com.net域名,都会被导向 Verisign 的网站。这意味着,它事实上拥有了所有没有注册过的.com.net域名。 几天之内,Verisign 就挤入了全世界的前10大网站。

ICANN 要求 Verisign 立刻停止该业务,否则将终止域名托管合同。Verisign 屈服了,停止了这项业务,但是接着就把 ICANN 告上了法庭,要求法庭厘请两者之间的合同,ICANN 到底有没有权力干涉它的业务。

2006年底,它们达成了庭外和解。ICANN 同意延长 Verisign 的顶级域名托管合同,并且同意 Verisign 向消费者收取的单个域名注册费的上限,从6美元提高到了7.85美元。这个费用标准,一直沿用到了今天,你去注册一个.com.net域名,所交的钱有0.18美元是 ICANN 收取的管理费,7.85美元是 Verisign 收取的托管费,其余的钱就是域名零售商的费用。

如果一个.com.net域名售价10美元,ICANN 和 Verisign 合计拿走8.03美元。

后来,Verisign 的顶级域名托管合同又延长过两次,当前合同要到2024年才会到期。

表面上看,ICANN 让 Verisign 获得了巨额垄断利润。(曾经有公司提出,只要让它来托管.com域名,单个域名的托管费,可以降低到每年1美元。)但是实际上,ICANN 通过另一种方式在发挥市场的力量,那就是它不断提高顶级域名的数量和品种。如果你觉得.com域名太贵,你完全可以申请其他的顶级域名,有 1000多个顶级域名任你选择。

六、根域名

由于 ICANN 管理着所有的顶级域名,所以它是最高一级的域名节点,被称为根域名(root domain)。在有些场合,www.example.com被写成www.example.com.,即最后还会多出一个点。这个点就是根域名。

理论上,所有域名查询都必须先查询根域名,因为只有根域名才能告诉你,某个顶级域名由哪台服务器管理。事实上也确实如此,ICANN 维护着一张列表,里面记载着顶级域名和对应的托管商。

比如,我要访问www.example.com,就必须先询问 ICANN 的根域名列表,它会告诉我.com域名由 Verisign 托管,我必须去找 Verisign,它会告诉我example.com服务器在哪里。

再比如,我要访问abc.xyz,也必须先去询问根域名列表,它会告诉我.xyz域名由 CentralNic 公司托管。根域名列表还记载,.google由谷歌公司托管,.apple由苹果公司托管等等。

由于根域名列表很少变化,大多数 DNS 服务商都会提供它的缓存,所以根域名的查询事实上不是那么频繁。

七、DNS 根区

根域名列表的正式名称是 DNS 根区(DNS root zone),ICANN 官网可以查看这个根区文件

该文件保存所有顶级域名的托管信息,所以非常大,超过2MB。

举例来说,顶级域名.com可以查到13个域名服务器。

com.            172800  IN  NS  a.gtld-servers.net.
com.            172800  IN  NS  b.gtld-servers.net.
com.            172800  IN  NS  c.gtld-servers.net.
com.            172800  IN  NS  d.gtld-servers.net.
com.            172800  IN  NS  e.gtld-servers.net.
com.            172800  IN  NS  f.gtld-servers.net.
com.            172800  IN  NS  g.gtld-servers.net.
com.            172800  IN  NS  h.gtld-servers.net.
com.            172800  IN  NS  i.gtld-servers.net.
com.            172800  IN  NS  j.gtld-servers.net.
com.            172800  IN  NS  k.gtld-servers.net.
com.            172800  IN  NS  l.gtld-servers.net.
com.            172800  IN  NS  m.gtld-servers.net. 

也就是说,.com域名的解析结果,可以到这个13个服务器的任一台查询。细心的读者可能发现,这些服务器本身也是使用域名(比如a.gtld-servers.net.)标识,那么还得去查询它们指向的服务器,这样很容易造成循环查询。

因此,DNS 根区还会同时提供这些服务器的 IP 地址(IPv4 和 IPv6)。

a.gtld-servers.net. 172800  IN  A   192.5.6.30
a.gtld-servers.net. 172800  IN  AAAA    2001:503:a83e:0:0:0:2:30
b.gtld-servers.net. 172800  IN  A   192.33.14.30
b.gtld-servers.net. 172800  IN  AAAA    2001:503:231d:0:0:0:2:30
c.gtld-servers.net. 172800  IN  A   192.26.92.30
c.gtld-servers.net. 172800  IN  AAAA    2001:503:83eb:0:0:0:0:30
... ... 

八、根域名服务器

保存 DNS 根区文件的服务器,就叫做 DNS 根域名服务器(root name server)。

由于早期的 DNS 查询结果是一个512字节的 UDP 数据包。这个包最多可以容纳13个服务器的地址,因此就规定全世界有13个根域名服务器,编号从a.root-servers.net一直到m.root-servers.net

这13台根域名服务器由12个组织独立运营。其中,Verisign 公司管理两台根域名服务器:A 和 J。每家公司为了保证根域名服务器的可用性,会部署多个节点,比如单单 Verisign 一家公司就部署了104台根域名服务器(2016年1月数据)。

所以,根域名服务器其实不止13台。据统计,截止2016年1月,全世界共有 517 台根域名服务器。你可以在 http://root-servers.org 这个网站查到所有根域名服务器的信息。

根域名服务器虽然有域名,但是最少必须知道一台的 IP 地址,否则就会陷入循环查询。一般来说,本机都保存一份根域名服务器的 IP 地址的缓存,叫做 name.cache 文件。

A.ROOT-SERVERS.NET.   3600000 A 198.41.0.4
A.ROOT-SERVERS.NET.   3600000 AAAA 2001:503:ba3e :: 2:30

B.ROOT-SERVERS.NET.   3600000 A 199.9.14.201
B.ROOT-SERVERS.NET.   3600000 AAAA 2001:500:200 :: b

C.ROOT-SERVERS.NET.   3600000 A 192.33.4.12
C.ROOT-SERVERS.NET.   3600000 AAAA 2001:500:2 :: c

... ... 

这个文件记录了13台根域名服务器的 IP 地址。

九、参考链接

flex布局教程:语法篇(转自阮一峰的网络日志)

作者:阮一峰(转自阮一峰的网络日志,如有侵权,立即删除)网页布局(layout)是CSS的一个重点应用。布局的传统解决方案,基于盒状模型,依赖 display 属性+ position属性+ float属性。它对于那些特殊布局非常不... 查看详情

[转帖]阮一峰:哈希碰撞与生日攻击(代码片段)

哈希碰撞与生日攻击分享按钮作者: 阮一峰日期: 2018年9月5日一、哈希碰撞是什么?所谓哈希(hash),就是将不同的输入映射成独一无二的、固定长度的值(又称"哈希值")。它是最常见的软件运算之一。如果不同的输... 查看详情

理解oauth2.0-阮一峰的网络日志

原文:理解OAuth2.0-阮一峰的网络日志理解OAuth2.0作者:阮一峰日期:2014年5月12日 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。本文对OAuth2.0的设计思路和运行流程,做一个简... 查看详情

阮一峰网络日志第38期2019年01月04日

 http://www.ruanyifeng.com/blog/2019/01/weekly-issue-38.html声明:链接及文章内容为原博主阮一峰原创。 查看详情

阮一峰网络日志第39期2019年01月11日

 http://www.ruanyifeng.com/blog/2019/01/weekly-issue-39.html 声明:链接及文章内容为原博主阮一峰原创。 查看详情

阮一峰网络日志第44期2019年02月22日

 http://www.ruanyifeng.com/blog/2019/02/weekly-issue-44.html 声明:链接及文章内容为原博主阮一峰原创。 查看详情

阮一峰网络日志第37期2018年12月28日

 http://www.ruanyifeng.com/blog/2018/12/weekly-issue-37.html 声明:链接及文章内容为原博主阮一峰原创。 查看详情

阮一峰网络日志第43期2019年02月15日

 http://www.ruanyifeng.com/blog/2019/02/weekly-issue-43.html 声明:链接及文章内容为原博主阮一峰原创。  查看详情

闭包——读《阮一峰的日志》

【闭包】:就是能够读取其他函数内部变量的函数(声明这个函数为变量result,然后调用它就可读取内部参数的值了)。Javascript语言的特殊之处,就在于函数内部局部变量可以直接读取全局变量,但是反过来:外部全局变量不... 查看详情

阮一峰的介绍

参考技术A阮一峰,70后,英文名Frank。他原是上海财经大学世界经济博士研究生。主要研究宏观金融、货币政策与美国经济。于2008年6月获得博士学位。目前在上海一所当地大学(上海金融学院国际经贸学院)任教。他本人也是... 查看详情

webpack——阮一峰webpackdemo分析(代码片段)

...共有15个demo,我们一个一个的进行分析,结合上文所学的知识!其中有一些内容,我做了修改,我是先看一遍然后从新敲了一遍。https://github.com/ruanyf/webpack-demos 准备工作首先还是安装,不过这一次,我们进行全局安装。$npmi-gweb... 查看详情

苹果是真牛逼

...校长。今天跟大家聊一个有意思的话题。前几天我看到阮一峰老师发布的网络日志,是关于软件订阅制的话题。说句题外话,我个人非常喜欢看阮一峰老师的网络日志,也经常看他的博客,每周必看,因为阮... 查看详情

阮一峰:网页性能管理详解(转)(代码片段)

你遇到过性能很差的网页吗?  这种网页响应非常缓慢,占用大量的CPU和内存,浏览起来常常有卡顿,页面的动画效果也不流畅。  你会有什么反应?我猜想,大多数用户会关闭这个页面,改为访问其他网站。作为一个开发... 查看详情

flex布局(代码片段)

写在前面:本文参考阮一峰的网络日志及部分网友知识综合讲解,只要能讲清楚就行嘛哈哈哈1flex布局1.1引入 一切都始于这样一个问题:怎样通过CSS简单而优雅的实现水平、垂直同时居中。CSS标准为我们提供了3种布局方式:... 查看详情

阮一峰老师的es6入门:async函数(代码片段)

async函数1.含义ES2017标准引入了async函数,使得异步操作变得更加方便。async函数是什么?一句话,它就是Generator函数的语法糖。前文有一个Generator函数,依次读取两个文件。constfs=require(‘fs‘);constreadFile=function(fileName)returnnewPromis... 查看详情

flex布局(引用阮一峰老师的flex布局-语法篇)(代码片段)

一、Flex布局是什么?Flex是FlexibleBox的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。.boxdisplay:flex;行内元素也可以使用Flex布局。.boxdisplay:inline-flex;Webkit内核的浏览器,必须加上-w... 查看详情

阮一峰老师的es6入门:变量的解构赋值(代码片段)

变量的解构赋值数组的解构赋值对象的解构赋值字符串的解构赋值数值和布尔值的解构赋值函数参数的解构赋值圆括号问题用途数组的解构赋值基本用法ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为... 查看详情

git(代码片段)

-git本地版本回退与远端版本回退(回滚)-tsq292978891的博客-CSDN博客Git-BookGit查看版本改动——gitdiff-AsheAndWine的博客-CSDN博客读懂diff-阮一峰的网络日志sudoaptinstallgitgitinitgitadd.gitcommit-am1gitlog--pretty=onelinegitreset--hardHEAD^ 查看详情