小谈 URI、URL 与 URN

Talk about URL. 🐥

0x00 引言

小科普帖。

我们一般对 URL 比较熟悉,但很少了解 URI 与 URN ,以及这三者之间的关系,先放一张它们的关系图:

0x01 概念

三个名词的定义:

  1. URI (Uniform Resource Identifier) : 统一资源标识符。是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对网络中(一般指万维网)的资源通过特定的协议进行交互操作。

  2. URL (Uniform Resource Locator) : 统一资源定位符(或称统一资源定位器/定位地址、URL 地址等)。有时也被俗称为网页地址(网址)。如同在网络上的门牌,是因特网上标准的资源的地址(Address)。

  3. URN (Uniform Resource Name) : 统一资源名称,是统一资源标识(URI)的历史名字,它使用 urn: 作为 URI scheme。

简单地说,URI 可被视为定位符(URL),名称(URN)或两者兼备。

统一资源名(URN)如同一个人的名称,而统一资源定位符(URL)代表一个人的住址。换言之,URN 定义某事物的身份,而 URL 提供查找该事物的方法。如果觉得这样说有点绕,那我们来看看如何用一句话区分 URL 与 URI。

0x02 一句话区分 URL 与 URI

URL 是 URI 的子集。

任何东西只要能够唯一地标识出来,都可以说这个标识是 URI 。如果这个标识还能获取到上述对象的路径,那么它同时还可以是一个 URL 。但是如果它不能提供获取到对象的路径,那么它必然不是 URL 。

即 URI 与 URL 都定义了 what the resource is,而 URL 还要包含 where (the resource is) 与 how (to get the resource) 。

0x03 栗子栗子

比如现在有一个网站:https://cyris.cn/dir/filename.html

其中 dir/filename.html 就是一个 URI ,而整个链接就是一个 URL ,它包含了指定什么协议(https),在哪个站点(cyris.cn),去获取什么资源(dir/filename.html)。

正如上面所说,URI 只要是能唯一标识资源即可,而 URL 包括了 where,how,what 三者。

  1. 1. 0x00 引言
  2. 2. 0x01 概念
  3. 3. 0x02 一句话区分 URL 与 URI
  4. 4. 0x03 栗子栗子