URI是什么,URI和URL有什么区别

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有着互补的作用。