URL URI和URN的区别(最通俗版,一定能懂)

358 阅读3分钟

URL URI URN

可能有的人已经晕了,这三个到底有什么区别?本文尽量从通俗易懂的角度来分析它们。

简介

URI:统一资源标识符 标识:Identifier
URL:统一资源定位符 定位:Locator
URN:统一资源命名符 命名:Name

注意:URL 和 URN 是 URI 的子集,URI 是标识符,那么可以用什么方式来标识它呢?可以采用定位的方式,也可以采用命名的方式,这样就能先简单分清楚它们三者的关系。总而言之,就是标识父,位名子

共同目的

都是为了通过一个字符串找到对应的资源。

URI:标识符

URI 是资源的标识符,用一个字符串来标识资源的唯一身份

通俗地说,URI 就是资源的身份证

URL:定位符

简单来说,URL 提供了资源的访问方式。比如说可以通过各种协议去访问它。

通俗地说,有了访问方式,我们就可以去拿到他了,因此 URL 相当于资源的访问地址

URN:命名符

简单来说,就是每一个资源都对应一个唯一的字符串,这个字符串相当于资源的名字(注意:人类世界可以重名,但是计算机在生成字符串的时候,可以生成唯一的不重复的字符串,因此可以没有“重名”的情况),通过这个名字能找到他本人,可以获知他的最新动态,也就相当于该字符串能够一直标识该资源的最新位置。

随便假设一个字符串:f7a56g6a5rf,假如这个字符串对应了服务器当中的一张图片A,那么只要我拥有了这个字符串,我就永远可以找到A,即使资源在服务器中的位置发生了改变,我也能找到它。

缺点:
(1)操作麻烦,需要反复解析字符串;
(2)每当资源位置发生改变的时候,都要将最新位置和该字符串对应起来,变化频繁,工作量大;

补充
咱们身份证上不是记录了家庭地址和名字吗,因此你可以从这个角度去记忆:URI 是身份证,URL 是身份证上的住址,URN 是身份证上的名字,所以 URL 和 URN 是 URI 的子集,是不是很容易记住呢!(只是比喻,人类世界复杂得多,勿杠哈!)

URL 和 URN 的区别

URL和 URN 的都是资源标识符 URI 的子集,他们的区别如下:
URL:提供找到资源的方式。

我的理解:URL 是通过一个人的居住地址去找到他。一个人搬家了,URL 也会发生改变,但是依然可以通过这个改变后的 URL 去找到他。最贴近我们现实的例子就是某宝收货地址,只要你提供新的居住地址,快递公司还是可以找到你,不过 URL 可具体多了, 快递有时候只送到代拿点,但是 URL 一定是可以具体找到你本人处于的位置,甚至于你在蹲厕所。

URN:确定了资源的身份。

我的理解:URN 相当于一个人的名字(由于可以生成唯一的字符串来表示,因此名字不会重复),也许他会搬家,他会整容,但是都可以通过这个唯一的名字找到他。(当然,在现实世界中会有“失踪”这一说,这里不考虑这个)

补充

因为 URN 不常用,所以有时候也会问 URI 和 URL 的区别:

(1)URL 是 URI 的子集;

比如说相同的资源A,我可以通过 HTTP 协议去访问,我也可以通过 HTTPS 协议去访问,通过 HTTP 访问的A和通过 HTTPS 访问的A都属于A,只是访问方式不同罢了。

(2)URL 是标识资源的身份,而 URL 是提供了资源的访问方式,相当于提供了一个地址;

0069045c72a981044dcc90cb0ddf51c.png

这篇文章的解释非常不错,可以看看:zhuanlan.zhihu.com/p/56540212