什么是 URL

一、什么是 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:文件传输协议,用于文件上传与下载,默认端口 21
    • file:本地文件协议,用于访问本地设备上的文件,格式如 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(无限制通用)。
  • 二级域名(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"的转换,核心流程为:

  1. 优先查询浏览器缓存、操作系统本地缓存,是否已有该域名的解析记录;
  2. 本地无缓存时,向本地 DNS 服务器(通常由运营商或公共 DNS 服务提供)发起查询请求;
  3. 本地 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 书号),只负责命名不提供访问位置
相关推荐
螺丝钉tina2 小时前
[Playwright][01] 从 Puppeteer 到 Playwright:为什么选择 Playwright + TypeScript?
前端·javascript·typescript
大团米线2 小时前
vite多环境合并打包config
javascript·vue.js·ecmascript
程序员大阳2 小时前
副队长JavaScript教程(57)-DOM事件机制
javascript·键盘事件·dom·鼠标·事件·绑定·冒泡
唔663 小时前
在透镜圆正中加了一个描边空心字
前端·javascript
定栓3 小时前
Vite-legacy产物console删除机制
前端·javascript·vue.js
程序员大阳11 小时前
副队长JavaScript教程(49)-主动抛出异常与错误类型
javascript·异常处理·error·throw·错误类型
hhhjhl11 小时前
Protobuf.js 跨端三方库仓颉适配全流程
javascript·网络·udp
Flynt14 小时前
我把热榜那篇"禁用 axios"逐条实测了一遍:结论大体对,坑在它没讲的地方
前端·javascript·axios
slongzhang_15 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript