一、什么是 URL
URL 全称 Uniform Resource Locator(统一资源定位符) ,是互联网上用于唯一标识资源位置与访问方式的标准字符串,也就是日常所说的"网址"。它的核心作用是向客户端(浏览器、APP、接口调用工具等)明确三个信息:用什么协议访问、资源在哪台服务器、目标资源的具体位置,网页、图片、接口、文件等所有互联网资源都可以通过 URL 定位。
URL 是 URI(统一资源标识符)的子集:URI 仅负责唯一标识一个资源,而 URL 在此基础上额外指定了资源的访问协议和网络位置,是目前互联网应用最广泛的 URI 形式。
二、URL 的标准组成部分
根据 RFC 3986 规范,一个完整 URL 的通用语法结构为:
[协议]://[用户名:密码@][主机名]:[端口号]/[路径]?[查询参数]#[片段标识符]
其中协议、主机名是核心必填组件,路径可省略(默认代表站点根路径),其余部分可根据业务场景省略。下面逐个拆解说明:
1. 协议(Scheme / Protocol)
- 位置:URL 最左侧,以
://作为结束分隔符 - 作用:定义客户端与服务器通信的规则与方式,不同协议对应不同的交互逻辑、默认端口与数据格式
- 常见协议示例:
http:超文本传输协议,明文传输,默认端口 80,是早期网页的基础协议https:基于 SSL/TLS 加密的超文本传输协议,默认端口 443,是当前互联网的主流标准,可保障数据传输的机密性与完整性ftp:文件传输协议,用于文件上传与下载,默认端口 21file:本地文件协议,用于访问本地设备上的文件,格式如file:///C:/Users/test.txt
- 补充:协议名称不区分大小写,但行业通用规范为全小写。
2. 认证信息(Userinfo)
- 位置:主机名之前,以
@符号结尾,格式为用户名:密码 - 作用:早期用于向服务器直接传递身份凭证,常见于 FTP、内网私有服务场景
- 示例:
ftp://admin:123456@ftp.example.com - 现状:由于明文传递密码存在严重安全风险,该方式已被主流浏览器废弃,当前身份验证大多通过 Cookie、Token、请求头鉴权等更安全的方案实现。
3. 主机名(Host)
主机名用于定位资源所在的网络服务器,是 URL 的核心定位组件,取值可以是域名 或 IP 地址,其中域名是日常公开访问最常用的形式。
3.1 域名(Domain Name)
域名是由英文点号分隔的层级化字符串,本质是 IP 地址的人类可读别名。数字形式的 IP 地址难以记忆与传播,域名通过语义化的文字标识服务器,最终通过 DNS(域名系统)解析为实际 IP 地址后完成网络通信。
(1)域名的层级结构
域名采用从右到左 的树状层级结构,层级越低位置越靠左,每一层级通过点号 . 分隔。完整的域名结构如下:
[子域名].[二级域名].[顶级域名].[根域名]
各层级说明:
- 根域名(Root Domain) :全球域名体系的最顶层,用单个点
.表示,由全球 13 组根域名服务器统一管理。日常使用中根域名的点通常会被省略,例如www.example.com的完整标准写法是www.example.com.,末尾的点即为根域名。 - 顶级域名(Top-Level Domain, TLD) :根域名的下一级,即域名最末尾的后缀,用于标识域名的用途、所属地区或类别,由官方注册管理机构运营。主要分为三类:
- 通用顶级域名(gTLD):全球通用、无地域限制,例如
.com(商业机构)、.org(非营利组织)、.net(网络服务); - 国家/地区顶级域名(ccTLD):对应特定国家或地区,例如
.cn(中国内地)、.hk(中国香港)、.us(美国)、.jp(日本); - 新通用顶级域名(New gTLD):近年开放的个性化后缀,场景更细分,例如
.io(科技/互联网领域常用)、.app(应用产品)、.dev(开发者场景)、.xyz(无限制通用)。
- 通用顶级域名(gTLD):全球通用、无地域限制,例如
- 二级域名(Second-Level Domain, SLD) :顶级域名左侧的主体部分,是域名的核心标识,由用户向注册商申请注册,同一顶级域名下二级域名具有全球唯一性。例如
example.com中,example就是二级域名,也是我们日常所说的"域名主体"。 - 子域名(Subdomain,三级及以上域名) :二级域名左侧的前缀,由域名所有者免费自主配置,无需额外注册,用于划分不同业务模块。最经典的
www就是标准的三级子域名,此外常见的还有api.example.com(接口服务)、m.example.com(移动端站点)、admin.example.com(管理后台)等。一个二级域名下可创建任意数量的子域名。
(2)完全限定域名(FQDN)
完全限定域名(Fully Qualified Domain Name) 是包含根域名在内的完整域名路径,能够在全球 DNS 系统中唯一确定一台主机,例如 mail.example.com.。我们日常省略根域名的写法属于"相对域名",在 DNS 解析时会自动补全。
(3)域名解析的核心流程
域名本身无法直接用于网络通信,访问域名时需要通过 DNS 系统完成"域名 → IP"的转换,核心流程为:
- 优先查询浏览器缓存、操作系统本地缓存,是否已有该域名的解析记录;
- 本地无缓存时,向本地 DNS 服务器(通常由运营商或公共 DNS 服务提供)发起查询请求;
- 本地 DNS 服务器依次向根域名服务器、顶级域名服务器、权威域名服务器递归查询,最终获取对应的 IP 地址并返回给客户端。
(4)域名的关键特性
- 英文字母不区分大小写,
WWW.EXAMPLE.COM与www.example.com完全等价,行业惯例统一使用小写; - 支持一对多映射:一个域名可以对应多个 IP 地址,用于实现负载均衡、多地域容灾;
- 支持多对一映射:一个 IP 地址可以绑定多个不同域名,通过服务器虚拟主机技术实现多站点共用一台服务器。
3.2 IP 地址
主机名也可以直接填写 IP 地址,无需 DNS 解析即可直接定位服务器,多用于内网调试、服务器直连场景。
- IPv4 地址:点分十进制格式,例如
192.168.1.100; - IPv6 地址:冒号分隔的十六进制格式,为避免与端口号的冒号冲突,URL 中必须用方括号包裹,例如
https://[2001:db8::1]:8080。
4. 端口号(Port)
- 位置:主机名之后,以冒号
:开头 - 作用:一台服务器可以同时提供多种服务(网页、数据库、文件服务等),端口号就是服务器上不同服务的"门牌号",用于区分具体要访问哪一个服务
- 规则:
- 每个协议都有对应的默认端口:HTTP 默认 80、HTTPS 默认 443、FTP 默认 21;
- 使用默认端口时,端口号可以省略不写;非默认端口必须显式声明。
- 示例:
[https://www.example.com:8443](https://www.example.com:8443)表示访问该服务器 8443 端口的 HTTPS 服务。
5. 路径(Path)
- 位置:端口号之后,以
/开头,到?或#之前结束 - 作用:表示资源在服务器上的具体层级位置,类似本地文件系统的路径;在现代 Web 应用中,路径大多是逻辑路由,不一定对应服务器上真实的文件目录
- 示例:
/index.html:站点根目录下的首页文件/api/user/123:用户 ID 为 123 的 API 接口路由/articles/tech/2024/:多级分类的文章路径
- 补充:路径通常区分大小写,具体取决于服务器操作系统与配置(Linux 服务器一般区分,Windows 默认不区分)。
6. 查询参数(Query String)
- 位置:路径之后,以问号
?开头,到#之前结束 - 作用:向服务器传递额外的业务参数,比如搜索关键词、分页页码、筛选条件等
- 格式:以
键=值为基本单位,多个参数之间用&分隔 - 示例:
?keyword=手机&page=1&size=20表示搜索"手机"、第 1 页、每页展示 20 条结果 - 补充:参数中如果包含中文、空格、特殊符号,会进行URL 编码(百分号编码),确保 URL 只包含合法的 ASCII 字符。
7. 片段标识符(Fragment / Anchor)
- 位置:URL 最末尾,以井号
#开头 - 作用:也叫"锚点",用于定位页面内部的特定位置 ,完全由客户端(浏览器)解析处理,不会发送给服务器
- 常见场景:
- 长文章的目录跳转,例如
#chapter-3打开页面后直接滚动到第三章 - 前端单页应用(SPA)的 Hash 路由模式,通过片段切换页面内容而不刷新页面
- 长文章的目录跳转,例如
- 示例:
[https://example.com/doc.html#installation](https://example.com/doc.html#installation)打开文档后自动定位到"安装说明"章节
三、完整 URL 示例拆解
我们以一个完整 URL 为例,对应每个组成部分:
[https://admin:123456@www.example.com:8080/user/profile?id=100&lang=zh#basic-info](https://admin:123456@www.example.com:8080/user/profile?id=100&lang=zh#basic-info)
| 组成部分 | 对应内容 | 说明 |
|---|---|---|
| 协议 | https |
加密 HTTP 协议 |
| 认证信息 | admin:123456 |
用户名 admin,密码 123456 |
| 主机名(域名) | www.example.com |
三级子域名 www + 二级域名 example + 顶级域名 com |
| 端口号 | 8080 |
非默认 HTTPS 端口,不可省略 |
| 路径 | /user/profile |
用户详情页路由 |
| 查询参数 | id=100&lang=zh |
用户 ID 为 100,语言为中文 |
| 片段标识符 | basic-info |
页面内"基本信息"锚点 |
四、补充知识点
1. 绝对 URL 与相对 URL
- 绝对 URL :包含完整的协议、主机等信息,可以独立定位互联网上任意资源,比如
[https://www.example.com/a.html](https://www.example.com/a.html) - 相对 URL :只包含路径部分,以当前页面的 URL 为基准解析资源,常用于网页内部链接
./about.html:当前目录下的 about 页面../image/logo.png:上级目录中的图片文件/api/list:站点根目录下的接口
2. URL 编码(百分号编码)
URL 只能使用 ASCII 字符集,对于中文、空格、&、=等可能与 URL 语法冲突的特殊字符,必须进行编码转换:
- 空格 →
%20(查询参数中也常用+表示) - 中文"你好" →
%E4%BD%A0%E5%A5%BD - 编码的核心目的是避免特殊字符破坏 URL 结构,保障传输与解析的正确性。
3. URL 与 URI、URN 的区别
- URI(统一资源标识符):更大的概念,用于唯一标识一个资源,包含 URL 和 URN 两类
- URL(统一资源定位符):URI 的子集,通过"位置"标识资源,告诉访问者如何找到它
- URN(统一资源名称):URI 的子集,通过"名称"标识资源(比如 ISBN 书号),只负责命名不提供访问位置