URI,全称Uniform Resource Identifier,即“统一资源标识符”,它的作用是标识某一互联网资源。
我们为什么要标识互联网资源呢?当然是为了能够找到它,然后使用它。
那么,如何找到它就成了一个问题,这关系到我们如何来标识资源。
先想想我们现在是怎么访问某个网络资源的。
如果我告诉你,我的网站上有一只猫的图片,你能找到它吗?
千万不要各种翻看我的网页去找猫!
因为我没有把它挂到页面上,所以你是找不到的!
除非我把它的网络地址告诉你。
好了,现在告诉你,它的地址是:https://www.perweb.com/wp-content/uploads/2022/08/my-cat.jpg
。
现在你复制链接打开就能看到下面这张图片了。

这里的https://www.perweb.com/wp-content/uploads/2022/08/my-cat.jpg
实际上就是一个URI(统一资源标识符)。
这里该有人抬杠了,这分明是一个URL啊!又一个无良博主开始误导观众了……
先别急,叫URL也没有错,因为URL本来就是URI的其中一种形式,URL的全称是Uniform Resource Locator,即“统一资源定位符”。
通过URL我们可以方便地访问网络上的资源。
这解决了我们上面提出的“如何找到它”的问题。
但同时又引出了另外两个新问题。
第一:URL有没有弊端呢?它够完美吗?
第二:为什么说URL是URI的一种形式呢?难道还有别的访问互联网资源的方式?
先来回答第一个问题,URL的弊端是很明显的。
回到上面这个URL:https://www.perweb.com/wp-content/uploads/2022/08/my-cat.jpg
。
https
表示传输协议;
www.perweb.com
这个域名指向主机地址;
/wp-content/uploads/2022/08/
表示路径;
my-cat.jpg
表示文件名。
这种方式虽然可以精确地查找到my-cat.jpg
这张图片,但如果修改了图片在主机上的位置(即修改了图片路径)或者把图片转移到另一个主机上时,就无法找到这张图片了。
这个弊端是比较麻烦的,每个网站上都可能有这样的问题,会在网络上产生众多的错误链接。
那么有没有一种方式,可以使资源不受位置限制呢?
我们提出一种设想,假设把这张my-cat.jpg
图片放到一个网络空间内,这个空间连接任意数量的主机,存放着任意数量的资源。
然后在这个空间内给这张图片一个全局惟一的命名,比如cat123456789
。
由于空间内的主机是互通的,所以我们不管在任何一台主机上查找cat123456789
,都能找得到。
基于这样的设想,产生了URN,全称Uniform Resource Name,即“统一资源名称”,它是URI的另一种形式,与URL一样都是URI的子集。
URN的期望是为资源提供持久的、与位置无关的标识方式。
但在整个互联网的应用层面,仅靠URN来标识网络资源是非常困难的,互联网上的资源是无比巨大的,要给每个资源产生一个全局惟一的命名,然后从这个庞大的资源库中取得某个名称的资源是难以实现的。
所以实际应用上,通常是URL和URN结合使用,而这两者同时属于URI。

用于标识唯一书目的ISBN系统是一个典型的URN和URL结合使用范例。
例如:ISBN 0486275574(urn:isbn:0-486-27557-4)
标识出莎士比亚的戏剧《罗密欧与朱丽叶》的某一特定版本,但为获得该资源并阅读该书,人们需要它的位置,也就是一个URL地址。
因此,URI可被视为定位(URL),名称(URN)或两者兼备,URL和URN有着互补的作用。