最近在搭建本博客 www.ybjun.com 和配置 NAS 的域名解析时,博主发现了一个非常普遍的现象:当你在网上搜索“域名分级”、“一级域名”“二级域名”时,搜到的资料五花八门,互相矛盾,越看越迷茫。
有人说 com 是顶级,ybjun 是一级;有人说 ybjun.com 是一级;还有人说 ybjun.com 是顶级……
经过多方查阅底层技术文档,博主终于找到了造成这种混乱的罪魁祸首—— “国际技术标准(RFC)”与“国内云厂商的商业术语”之间存在巨大的割裂。
这篇笔记将彻底抛弃网络上那些互相抄袭的水文,直接援引互联网权威的 IETF RFC 1034 标准 以及 ICANN 对顶级域名的定义,从底层看清域名的真实结构,搞清楚公共子域究竟是什么。
1 根本不存在所谓的“一级域名”
在严谨的国际技术标准中,根本没有“一级域名”这个词,它是一个典型的“中国式商业黑话”。
可能是一些国内平台为了让非技术人员方便理解购买关系,创造了这套话语体系:他们把你花钱买到手的基础域名(如 ybjun.com)统称为“一级域名”或“主域名”,把你自己解析出来的子站(如 www 或 lrc)称为“二级域名”。
但在真正的RFC定义中,域名的层级是一棵倒置的树:
-
根域名 (Root Domain): 最顶端,用
.表示(平时浏览器中隐藏了)。-
顶级域名 (TLD): 根下面的一层,如 com、org、cn,由 ICANN 统一管理分配。
-
二级域名 (SLD): 顶级域下面的一层,这是我们真正向注册局购买、拥有控制权的部分。
- 三级、四级域名……: 以此类推,但这部分就可以自己定义了。
-
-
结论:在进行服务器配置和 DNS 解析时,需要彻底忘掉云厂商的“一级域名”概念,全部以“顶级(TLD)”、“二级(SLD)”这样的树状结构来思考。
2 举例说明 www.ybjun.com 到底是几级?
为了让概念落地,我们直接以我的博客域名 www.ybjun.com 为例进行拆解。
注意,完整的域名最后还有一个代表根域的 .,即 www.ybjun.com.。
| 层级 | 组成 | 术语名称 | 解释 |
|---|---|---|---|
| 根 (Root) | . | Root Domain (根域名) | 所有域名的起点,通常隐藏。 |
| 第一级 | com | Top-Level Domain (顶级域名, TLD) | 由 ICANN 管理。 |
| 第二级 | ybjun | Second-Level Domain (二级域名, SLD) | 用户实际购买并拥有解析控制权的部分。 |
| 第三级 | www | Third-Level Domain (三级域名) / Hostname (主机名) | 用户在 DNS 中自定义添加的前缀。 |
在网络技术中,有个概念是完全限定域名(FQDN,Fully Qualified Domain Name),在中文里有时也被称为“绝对域名”。简单来说,FQDN 是一台计算机或主机在互联网 DNS 树状结构中的“绝对完整地址”,没有任何歧义。它的构成是:主机名 + 域名 + 根域,如www.ybjun.com.就是一个FQDN。别忘了根域小点哦!
FQDN的最左侧标签通常就是主机名 (Hostname)。所以在本博客网址中 www 既是第三级域名,也是代表提供 Web 服务的主机名。
现在,我们来“打假”网上常见的几种说法:
❌ “com是顶级、ybjun是一级、www是二级” (技术术语与商业黑话的缝合怪)
❌ “com是顶级、ybjun.com是一级、www是二级” (标准的国内客服话术,技术上不成立)
❌ “ybjun.com是顶级、ybjun是二级、www是三级” (毫无根据的胡扯)
✅ “com是顶级、ybjun是二级、www是三级(也是主机名)” (这才是唯一符合 RFC 标准的正确答案!)
3 什么是公共子域 (Public Suffix)?
搞懂了标准的域名树,我们再来看一种特殊情况。比如我们前文白嫖的免费域名:yueban.dpdns.org。
按照上面刚学的 RFC 树状结构我们很明显能看出:org 是顶级,dpdns 是二级,yueban 显然是三级。这个是绝对正确的。
但在实际使用中,我们却能像对待 ybjun.com 一样,把 yueban.dpdns.org 作为一个独立的整体托管到 Cloudflare 上。这是为什么呢?
这就引出了一个并非由 ICANN 官方规定,而是由互联网行业(主要是浏览器厂商)约定俗成的产物:公共子域 (Public Suffix)。
3.1 为什么需要公共子域?
公共子域的核心作用是限制浏览器 Cookie 的作用域,保障网络安全。
HTTP 是无状态的,网站通过下发 Cookie 来记住用户的登录状态。浏览器在发送 Cookie 时,会检查当前访问的域名。
假设 dpdns.org 只是一个普通的二级域名,黑客在 hacker.dpdns.org 上写下一段恶意代码,试图往根域 .dpdns.org 写入 Cookie,那么访问 yueban.dpdns.org 的你,浏览器就会带着黑客的恶意 Cookie 去请求服务器,造成严重的安全漏洞(如 CSRF 攻击)。
为了解决这个问题,Mozilla 牵头维护了一个开源的安全边界列表,即 公共子域列表 (Public Suffix List, PSL)。你可以在这里查看全球所有公共子域的原始数据列表,实际上,浏览器和各类网络服务查的也是这个表。
或许从我们上面的例子中,你还是不太理解公共子域是什么,那接下来我来给你列几个我们最常见的公共子域,相信你一定会“秒懂”:.com.cn、.edu.cn、.gov.cn。
3.2 公共子域的实际意义
当 dpdns.org (或者国内常见的 com.cn)被加入这个列表后,浏览器和 Cloudflare 等现代 Web 服务就会在应用层面上将它们视为一个整体,类似于顶级域名。
这样从安全层面,浏览器严格禁止任何网站往 .dpdns.org 这个公共层级写入 Cookie,物理隔离了同后缀下不同用户的安全风险。
从证书签发角度,如果你使用 acme.sh 申请 Let’s Encrypt 的 HTTPS 证书,Let’s Encrypt 每周对每个“注册域名”有 50 次的签发限制。因为有了 PSL,Let’s Encrypt 会把你的 yueban.dpdns.org 视为一个独立的注册实体,让你独享这 50 次额度,而不会和平台上的其他免费用户互相挤兑。
4 总结
-
在底层 DNS 解析(A记录、CNAME等)配置中,请严格遵循 顶级(TLD) -> 二级(SLD) -> 主机名 的 RFC 标准树状结构。
-
在涉及浏览器安全策略(Cookie跨域)、SSL 证书申请和 CDN 托管时,要引入 公共子域 (PSL) 的概念来判断真实的“有效控制边界”。
-
抛弃那些模棱两可的商业概念,从底层协议出发,我们才能在 Web 架构的部署中做到从从容容、游刃有余。