域名与 URL 详解
目录
- 概述
- 域名层级详解
- 域名层级结构
- 顶级域名 (TLD)
- 二级域名 (SLD)
- 三级/多级域名
- 两种常见的叫法
- 常见域名举例
- URL 结构详解
- URL 基本结构
- URL 完整构成
- URL 各部分详解
- 域名 vs. 主机名 vs. URL
- 域名层级与 “www” 的误区
- URL 查询参数与 Hash 详解
- 查询参数 (Query String)
- 片段标识 (Hash/Fragment)
- HTTP 与 HTTPS 的核心区别
- 从输入 URL 到页面加载的流程
- 实际应用示例
- 总结
概述
域名和 URL 是互联网的基础概念,理解它们对于 Web 开发、网络运维和日常使用都至关重要。本文档将详细解析域名层级结构、URL 组成以及相关知识点,帮助读者全面理解这些概念。
核心概念
- 域名 (Domain Name):用于定位网站的一串字符,需要通过 DNS 解析为 IP 地址
- URL (统一资源定位符):定位互联网上具体资源的完整"地址"
- 主机名 (Hostname):完整的主机地址,格式为"主机名.域名"
域名层级详解
域名层级结构
一个完整的域名由一串用点分隔的字符组成,例如www.baidu.com。它的层级结构从右到左依次为:
┌─────────────────────────────────────┐ │ 域名层级结构(从右到左) │ ├─────────────────────────────────────┤ │ www . baidu . com │ │ ↑ ↑ ↑ │ │ 三级 二级 顶级 │ │ 域名 域名 域名 │ └─────────────────────────────────────┘层级说明:
- 顶级域名 (TLD):最右边的部分
- 二级域名 (SLD):顶级域名左边的部分
- 三级/多级域名:二级域名左边的部分
顶级域名 (TLD)
顶级域名是最右边的部分,如.com、.cn、.org。它像是域名的"姓",常用于标识类型或国家/地区。
TLD 分类:
1. 通用顶级域名 (gTLD)
用于标识网站类型:
| 域名 | 含义 | 用途 |
|---|---|---|
.com | Commercial | 商业网站(最常见) |
.net | Network | 网络服务 |
.org | Organization | 非营利组织 |
.edu | Education | 教育机构 |
.gov | Government | 政府机构 |
.mil | Military | 军事机构 |
.info | Information | 信息网站 |
.biz | Business | 商业网站 |
2. 国家代码顶级域名 (ccTLD)
用于标识国家或地区:
| 域名 | 国家/地区 | 说明 |
|---|---|---|
.cn | 中国 | 中国国家域名 |
.us | 美国 | 美国国家域名 |
.jp | 日本 | 日本国家域名 |
.uk | 英国 | 英国国家域名 |
.de | 德国 | 德国国家域名 |
.fr | 法国 | 法国国家域名 |
.hk | 香港 | 香港特别行政区 |
.tw | 台湾 | 台湾地区 |
TLD 特点:
- 由 ICANN(互联网名称与数字地址分配机构)管理
- 需要注册才能使用
- 不同 TLD 有不同的注册要求和价格
二级域名 (SLD)
二级域名是顶级域名左边的部分,如baidu(在baidu.com中)。这是你注册时真正"买"下的名字,是域名的"名"。
特点:
- 需要向域名注册商购买
- 具有唯一性(在同一个 TLD 下)
- 是网站的品牌标识
- 可以自由创建子域名
示例:
baidu.com中的baidu是二级域名google.com中的google是二级域名qq.com中的qq是二级域名
三级/多级域名
三级域名是在二级域名左边的部分,如www、news、mail。它们是二级域名的"子域名",常用于区分不同服务。
常见用途:
| 子域名 | 用途 | 示例 |
|---|---|---|
www | 网站主站 | www.baidu.com |
mail | 邮件服务 | mail.google.com |
news | 新闻服务 | news.qq.com |
blog | 博客服务 | blog.example.com |
api | API 服务 | api.example.com |
cdn | CDN 服务 | cdn.example.com |
ftp | FTP 服务 | ftp.example.com |
多级域名示例:
www.news.baidu.com ↑ ↑ ↑ ↑ 四级 三级 二级 顶级两种常见的叫法
关于"一级域名"的说法存在两种,容易混淆:
1. 技术定义 (RFC标准)
按照 RFC 标准:
- 顶级域名 (TLD)就是一级域名(如
.com) baidu.com中的baidu是二级域名
技术层级:
www.baidu.com │ │ │ │ │ └─ 一级域名(TLD) │ └─────── 二级域名(SLD) └─────────── 三级域名(子域名)2. 市场/注册商说法
在域名注册市场中:
- 将
baidu.com这种可直接注册的整体称为"一级域名" www.baidu.com、news.baidu.com等则被称为"二级域名"或"子域名"
市场层级:
www.baidu.com │ │ │ │ └─────┴─ 一级域名(可注册的完整域名) └─────────── 二级域名(子域名)简单理解:从技术角度看,
baidu.com是二级域名;从日常使用角度看,大家常把baidu.com叫做主域名或一级域名。
常见域名举例
| 完整域名 | 顶级域名 (TLD) | 二级域名 (SLD) | 三级域名 | 说明 |
|---|---|---|---|---|
www.baidu.com | .com | baidu | www | www 是主机名,习惯上也叫子域名 |
zh.wikipedia.org | .org | wikipedia | zh | 代表中文维基百科 |
mail.google.com | .com | google | mail | 代表谷歌的邮箱服务 |
news.qq.com | .com | qq | news | 代表腾讯新闻 |
api.github.com | .com | github | api | GitHub 的 API 服务 |
cdn.jsdelivr.net | .net | jsdelivr | cdn | CDN 服务 |
注意:baidu.com/zhidao中的/zhidao是路径,不是域名的一部分。
URL 结构详解
URL 基本结构
URL(Uniform Resource Locator,统一资源定位符)是定位互联网上具体资源的完整"地址"。
基本格式:
协议://主机名/路径?查询参数#片段标识示例解析:
https://baijiahao.baidu.com/s?id=1775618156256907871&wfr=spider&for=pc │ │ │ │ │ │ │ │ │ │ └─ 查询参数(Query String) │ │ │ │ └─ 路径(Path) │ │ │ └─ 主机名(Host/Domain) │ │ └─ 协议(Scheme) │ └─ 完整 URLURL 完整构成
一个完整的 URL 结构比我们之前看到的更丰富,通用格式如下:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>完整格式说明:
| 组件 | 说明 | 是否必需 |
|---|---|---|
scheme | 协议(如 http, https, ftp) | ✅ 必需 |
user:password@ | 用户认证信息 | ❌ 可选 |
host | 主机名或 IP 地址 | ✅ 必需 |
:port | 端口号 | ❌ 可选(有默认值) |
/path | 资源路径 | ❌ 可选 |
;params | 路径参数 | ❌ 可选 |
?query | 查询字符串 | ❌ 可选 |
#frag | 片段标识 | ❌ 可选 |
示例 URL 解析:
以https://baijiahao.baidu.com/s?id=1775618156256907871&wfr=spider&for=pc为例:
| 组件 | 示例 | 说明 |
|---|---|---|
| 协议 (Scheme) | https:// | 指定访问协议,如 http, https, ftp |
| 用户信息 | (无) | 格式为user:password@,常见于 FTP,网页 URL 中通常省略 |
| 主机 (Host) | baijiahao.baidu.com | 可以是域名或 IP 地址 |
| 端口 (Port) | (无) | 格式为:8080。HTTP 默认为 80,HTTPS 默认为 443,可省略 |
| 路径 (Path) | /s | 服务器上资源的具体位置,以/分隔 |
| 参数 (Params) | (无) | 为特定协议保留,用;分隔,较少见 |
| 查询 (Query) | ?id=...&wfr=... | 以?开头,用&连接多个key=value键值对,用于向服务器传递数据 |
| 片段 (Fragment) | (无) | 以#开头,用于定位页面内的锚点,不会发送给服务器 |
URL 各部分详解
1. 协议 (Scheme)
格式:https://或http://
说明:
https是http的安全加密版本,默认端口为 443http是超文本传输协议,默认端口为 80- 其他协议:
ftp://(文件传输)、file://(本地文件)、mailto:(邮件)
常见协议:
| 协议 | 全称 | 默认端口 | 用途 |
|---|---|---|---|
http | HyperText Transfer Protocol | 80 | 网页传输 |
https | HTTP Secure | 443 | 安全网页传输 |
ftp | File Transfer Protocol | 21 | 文件传输 |
file | File Protocol | - | 本地文件访问 |
mailto | Mail To | - | 邮件链接 |
2. 主机名 (Host/Domain)
格式:baijiahao.baidu.com
说明:
- 即网站服务器的域名,由域名层级构成
- 浏览器会通过 DNS 解析,找到它对应的服务器 IP 地址
- 也可以是 IP 地址(如
192.168.1.1)
DNS 解析过程:
baijiahao.baidu.com ↓ DNS 查询 ↓ 39.156.66.18 (示例 IP)3. 路径 (Path)
格式:/s或/path/to/resource
说明:
- 指定服务器上具体资源的位置,类似于电脑上的文件夹路径
- 这里的
/s是百度百家号文章页面的路径标识 - 路径可以有多级,用
/分隔
路径示例:
| 路径 | 说明 |
|---|---|
/ | 根路径,通常指向首页 |
/s | 文章页面路径 |
/user/profile | 用户资料页面 |
/api/v1/users | API 接口路径 |
/images/logo.png | 静态资源路径 |
4. 查询字符串 (Query String)
格式:?id=1775618156256907871&wfr=spider&for=pc
说明:
- 以
?开头,用于向服务器传递参数 - 格式为
参数名=参数值 - 多个参数用
&连接
组成部分:
| 部分 | 说明 | 示例 |
|---|---|---|
? | 查询字符串的开始标记 | ? |
id=1775618156256907871 | 参数id的值为文章 ID | id=1775618156256907871 |
& | 用于分隔不同的参数 | & |
wfr=spider&for=pc | 百度内部的控制参数,用于标识爬虫来源和设备类型等 | wfr=spider&for=pc |
查询参数特点:
- ✅ 参数内容对搜索引擎可见,可能影响 SEO
- ✅ 可以传递多个参数
- ✅ 参数值需要进行 URL 编码(如空格编码为
%20) - ⚠️ 为提升可读性,网站常使用"伪静态"URL,如将
?id=123优化为/article/123
URL 编码示例:
| 字符 | URL 编码 |
|---|---|
| 空格 | %20 |
& | %26 |
= | %3D |
? | %3F |
# | %23 |
/ | %2F |
中 | %E4%B8%AD |
5. 片段标识 (Fragment)
格式:#section2或#top
说明:
- 以
#开头,用于定位网页内的某个具体位置(锚点),如章节标题 - 浏览器只会滚动到该位置,而不会向服务器发送这部分内容
- 改变
#后的内容不会触发页面刷新
使用示例:
<!-- HTML 中的锚点 --><h2id="section2">第二节</h2><!-- URL 中使用 -->https://example.com/page#section2特点:
- ✅ 不会发送给服务器,仅由浏览器在本地处理
- ✅ 可以用于单页应用(SPA)的路由
- ✅ 可以用于页面内导航
域名 vs. 主机名 vs. URL
这几个概念关系紧密,但各有侧重:
域名 (Domain Name)
定义:用于定位网站的一串字符,如baidu.com
特点:
- 是网站的品牌标识
- 需要通过 DNS 解析为 IP 地址才能访问
- 可以注册和购买
示例:
baidu.comgoogle.comqq.com
主机名 (Hostname)
定义:指完整的主机地址,格式为主机名.域名
示例:在www.baidu.com中:
- 主机名/子域名:
www - 域名:
baidu.com
说明:
- 本质上,主机名是"服务器名 + 域名"的组合
- 一个域名可以有多个主机名(子域名)
- 不同的主机名可以指向不同的服务器
主机名示例:
| 主机名 | 域名 | 完整主机名 | 用途 |
|---|---|---|---|
www | baidu.com | www.baidu.com | 网站主站 |
mail | google.com | mail.google.com | 邮件服务 |
api | github.com | api.github.com | API 服务 |
cdn | jsdelivr.net | cdn.jsdelivr.net | CDN 服务 |
URL (统一资源定位符)
定义:定位互联网上具体资源的完整"地址",是包含协议、主机、路径等信息的"完整网址"
格式:协议://主机名/路径?查询参数#片段标识
示例:
https://www.baidu.com/search?q=testhttp://example.com/page.html#section1
一句话总结:
- 域名:网站的"名字"
- 主机名:具体某台服务器的"名字+域名"
- URL:指向某个具体资源的"完整路径"
域名层级与 “www” 的误区
域名层级
域名从右到左,按.分隔,层级递增:
- 顶级域名 (TLD):最右边,如
.com、.cn - 二级域名 (SLD):TLD 左边,如
baidu(在baidu.com中) - 三级域名:二级域名左边,如
www(在www.baidu.com中)
“www” 只是子域名
www本质上和mail、news一样,是一个常见的子域名 (主机名),并非特殊的一级域名。
技术说明:
www.baidu.com和baidu.com是不同的主机记录- 通常会被网站配置为指向同一网站
- 可以单独配置 DNS 记录指向不同的服务器
配置示例:
DNS 记录: www.baidu.com A 39.156.66.18 baidu.com A 39.156.66.18"一级域名"的两种说法
1. 技术圈说法
最右边的部分(如.com)是顶级域名(TLD),也常被称为"一级域名"。
技术层级:
www.baidu.com │ │ │ │ │ └─ 一级域名(TLD) │ └─────── 二级域名(SLD) └─────────── 三级域名2. 注册商说法
用户付费注册的整体(如baidu.com)被称为"一级域名",其下的www.baidu.com等被称为"二级域名"。
市场层级:
www.baidu.com │ │ │ │ └─────┴─ 一级域名(可注册的完整域名) └─────────── 二级域名(子域名)URL 查询参数与 Hash 详解
查询参数 (Query String)
格式
以?开头,多个参数用&连接,格式为key=value
示例:
?id=1775618156256907871&wfr=spider&for=pc作用
向服务器传递筛选、分页、来源等信息。
常见用途:
| 用途 | 示例 |
|---|---|
| 搜索关键词 | ?q=test |
| 分页 | ?page=2&limit=10 |
| 筛选 | ?category=tech&sort=date |
| 来源标识 | ?utm_source=google&utm_medium=cpc |
| 文章 ID | ?id=1775618156256907871 |
特点
- ✅ 参数内容对搜索引擎可见,可能影响 SEO
- ✅ 可以传递多个参数
- ✅ 参数值需要进行 URL 编码
- ⚠️ 为提升可读性,网站常使用"伪静态"URL
伪静态 URL 示例:
动态 URL: /article?id=123 伪静态 URL:/article/123片段标识 (Hash/Fragment)
格式
以#开头,如#section2
作用
定位页面内的某个锚点(如标题),浏览器会自动滚动到该位置。
HTML 示例:
<!-- 定义锚点 --><h2id="section2">第二节</h2><!-- 链接到锚点 --><ahref="#section2">跳转到第二节</a>特点
- ✅不会随请求发送给服务器,仅由浏览器在本地处理
- ✅ 改变
#后的内容不会触发页面刷新 - ✅ 可以用于单页应用(SPA)的路由
SPA 路由示例:
https://example.com/#/home https://example.com/#/about https://example.com/#/contact查询参数 vs. 片段标识:
| 特性 | 查询参数 (?) | 片段标识 (#) |
|---|---|---|
| 发送给服务器 | ✅ 是 | ❌ 否 |
| 触发页面刷新 | ✅ 是 | ❌ 否 |
| SEO 可见 | ✅ 是 | ❌ 否 |
| 用途 | 传递参数 | 页面内定位/SPA 路由 |
HTTP 与 HTTPS 的核心区别
| 特性 | HTTP | HTTPS |
|---|---|---|
| 全称 | 超文本传输协议 | 安全的超文本传输协议 |
| 安全性 | 数据明文传输,不安全 | 数据加密传输,可防窃听和篡改 |
| 默认端口 | 80 | 443 |
| 证书 | 不需要 | 需要 SSL/TLS 证书 |
| 浏览器标识 | 无特殊标识 | 地址栏有安全锁图标 |
| 加密方式 | 无加密 | TLS/SSL 加密 |
| 性能 | 较快 | 稍慢(加密开销) |
| 适用场景 | 内部网络、测试环境 | 生产环境、敏感数据传输 |
HTTPS 工作原理:
1. 客户端请求 HTTPS 连接 2. 服务器返回 SSL/TLS 证书 3. 客户端验证证书 4. 建立加密连接 5. 数据传输加密为什么需要 HTTPS:
- ✅ 防止数据被窃听
- ✅ 防止数据被篡改
- ✅ 验证服务器身份
- ✅ 提升 SEO 排名(搜索引擎偏好 HTTPS)
- ✅ 浏览器安全标识
从输入 URL 到页面加载的流程
当你在浏览器地址栏输入 URL 并按下回车后,会发生以下过程:
1. 解析 URL
浏览器分析协议、域名、端口、路径等组成部分。
解析结果:
协议:https 主机:baijiahao.baidu.com 端口:443(默认) 路径:/s 查询参数:id=1775618156256907871&wfr=spider&for=pc2. DNS 解析
向 DNS 服务器查询域名对应的 IP 地址。
DNS 查询过程:
1. 检查浏览器缓存 2. 检查系统 hosts 文件 3. 查询本地 DNS 服务器 4. 查询根 DNS 服务器 5. 查询顶级域名服务器 6. 查询权威 DNS 服务器 7. 返回 IP 地址DNS 解析示例:
baijiahao.baidu.com ↓ DNS 查询 ↓ 39.156.66.183. 建立连接
根据协议(HTTP/HTTPS)与服务器建立 TCP 连接,HTTPS 还会进行 TLS 握手。
TCP 连接过程:
1. 客户端发送 SYN 包 2. 服务器返回 SYN-ACK 包 3. 客户端发送 ACK 包 4. 建立 TCP 连接HTTPS TLS 握手:
1. 客户端发送 Client Hello 2. 服务器返回 Server Hello + 证书 3. 客户端验证证书 4. 客户端发送加密密钥 5. 建立加密连接4. 发送请求
浏览器向服务器发送 HTTP 请求(包含路径、查询参数等)。
HTTP 请求示例:
GET /s?id=1775618156256907871&wfr=spider&for=pc HTTP/1.1 Host: baijiahao.baidu.com User-Agent: Mozilla/5.0 ... Accept: text/html,application/xhtml+xml Accept-Language: zh-CN,zh;q=0.9 Cookie: ...5. 服务器响应
服务器处理请求,返回 HTML、CSS、JS 等资源。
HTTP 响应示例:
HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Content-Length: 12345 Set-Cookie: ... <!DOCTYPE html> <html> ... </html>6. 渲染页面
浏览器解析并渲染资源,最终呈现完整的网页。
渲染过程:
1. 解析 HTML,构建 DOM 树 2. 解析 CSS,构建 CSSOM 树 3. 合并 DOM 和 CSSOM,构建渲染树 4. 布局(Layout) 5. 绘制(Paint) 6. 合成(Composite)完整流程图:
输入 URL ↓ 解析 URL ↓ DNS 解析 ↓ 建立 TCP 连接 ↓ HTTPS TLS 握手(如需要) ↓ 发送 HTTP 请求 ↓ 服务器处理请求 ↓ 返回 HTTP 响应 ↓ 浏览器解析 HTML ↓ 加载 CSS、JS 等资源 ↓ 渲染页面 ↓ 显示完整网页实际应用示例
示例 1:完整的 URL 解析
URL:
https://www.example.com:8080/api/v1/users?id=123&page=1#top解析结果:
| 组件 | 值 | 说明 |
|---|---|---|
| 协议 | https | 使用 HTTPS 协议 |
| 主机名 | www.example.com | 完整主机名 |
| 端口 | 8080 | 指定端口(非默认) |
| 路径 | /api/v1/users | API 接口路径 |
| 查询参数 | ?id=123&page=1 | 传递用户 ID 和页码 |
| 片段标识 | #top | 定位到页面顶部 |
示例 2:不同协议的 URL
| 协议 | URL 示例 | 说明 |
|---|---|---|
| HTTP | http://example.com | 普通网页 |
| HTTPS | https://example.com | 安全网页 |
| FTP | ftp://ftp.example.com/file.txt | 文件传输 |
| File | file:///C:/path/to/file.html | 本地文件 |
| Mailto | mailto:user@example.com | 邮件链接 |
示例 3:查询参数的使用
搜索功能:
https://www.google.com/search?q=test&hl=zh-CN参数说明:
q=test:搜索关键词hl=zh-CN:语言设置
分页功能:
https://www.example.com/articles?page=2&limit=20&sort=date参数说明:
page=2:第 2 页limit=20:每页 20 条sort=date:按日期排序
示例 4:片段标识的使用
页面内导航:
https://example.com/article#section2SPA 路由:
https://example.com/#/home https://example.com/#/about https://example.com/#/contact总结
核心概念总结
域名层级:
- 从右到左:顶级域名 → 二级域名 → 三级域名
- 技术定义和市场定义存在差异
www只是普通的子域名
URL 结构:
- 协议 + 主机名 + 路径 + 查询参数 + 片段标识
- 每个部分都有特定的作用和格式
关键区别:
- 域名 vs. 主机名 vs. URL
- HTTP vs. HTTPS
- 查询参数 vs. 片段标识
实际应用建议
域名选择:
- 选择易记、有意义的域名
- 考虑 SEO 和品牌因素
- 选择合适的 TLD
URL 设计:
- 使用有意义的路径
- 考虑使用伪静态 URL
- 合理使用查询参数
安全性:
- 生产环境使用 HTTPS
- 正确配置 SSL/TLS 证书
- 注意敏感信息的传递
SEO 优化:
- 使用友好的 URL 结构
- 避免过长的查询参数
- 合理使用片段标识
常见问题
Q:www是必需的吗?
A: 不是。www只是习惯用法,技术上example.com和www.example.com可以指向不同的服务器。
Q: 查询参数和片段标识的区别?
A: 查询参数会发送给服务器,片段标识不会。查询参数用于传递数据,片段标识用于页面内定位。
Q: HTTP 和 HTTPS 的区别?
A: HTTPS 是 HTTP 的安全版本,使用 TLS/SSL 加密传输,默认端口 443。
Q: 域名和 IP 地址的关系?
A: 域名需要通过 DNS 解析为 IP 地址才能访问。域名便于记忆,IP 地址是实际的网络地址。