URL、URN 和 URI的区别

URI:Uniform Resource Identifier,即统一资源标志符。
URL:Uniform Resource Locator,统一资源定位符。
URN:Uniform Resource Name,统一资源命名。

URL 属于 URI 的真子集,我们看原始的 URL 定义:

The term "Uniform Resource Locator" (URL) refers to the subset of URIs that, in addition to identifying a resource, provide a means of locating the resource by describing its primary access mechanism (e.g., its network "location").

上面这句话强调的重点就是:除了标识资源之外,还通过描述其主要访问机制来提供定位资源的手段。即如果要成为一个URL,必须具有访问机制,比如:http、https 和 ftp等。因此我们平时输入浏览器的就是一个URL,只有通过URL你才能获取到一个资源。

那么问题来了:

  1. 我们的邮箱 [email protected] 是 URL 吗?不是
    准确的说:[email protected] 不是URL,,即 [email protected] 不是。
    但是 mailto:[email protected] 是一个 URL,即mailto:[email protected] ,它可以在浏览器直接输入的。
    mailto是一个电子邮件协议,但是主要用于HTML建议一个超链接:

Email

  1. 我们的电话是 URL 吗? 不是
    如果电话号码1133XXXXXXXX放在 web 上那就是属于一个资源,但没有指明它的访问机制就不是 URL。
  2. 我们的身份证号是 URL 吗?不是
    肯定不是,同上。
  3. 地址:XX 省 XX 市 XX区…XX 单元 XX 室的主人是 URL 吗?不是
    很多博主说这个地址就是 URL ,我不认同。如果假设地球是一个web,每个人的地址就是唯一的 MAC 地址(也可以理解为具有唯一的 IP),那么家里的地址仅仅表明你在哪里,也没有表明任何访问机制(http、ftp之类),因此不属于 URL。
  4. www.runoob.com/css/css-tutorial.html 是 URL 吗? 不是
    只有加了https://的:https://www.runoob.com/css/css-tutorial.html 的才是。www.runoob.com/css/css-tutorial.html 只是一个资源的绝对路径,没有指明获取它的方式。

发现没:只要是 唯一的资源 (或者资源的地址) 加上访问机制 就可以形成一个URL。

URN属于 URI 的真子集,我们看原始的 URN定义:

The term "Uniform Resource Name”(URN) has been used historically to refer to both URIs under the "urn" scheme [RFC2141], which are required to remain globally unique and persistent even when the resource ceases to exist or becomes unavailable, and to any other URI with the properties of a name.

上面这句话强调的重点就是:即使资源不再存在或变得不可用,它们仍然具有全局唯一性和持久性。如果要成为一个URN,即你的名称必须具有全局唯一性,同时还必须和位置无关,即不管我这个资源在哪里,我就是唯一的我。

那么:

  1. 身份证号是 URN 吗?
    身份证号是 URN ,因为它唯一的确定一个人,而且和你位置无关,不管你在哪里,都可以用身份证号唯一对应到你。
  2. 图书编码(国家统一规范的,不是随便编码)是 URN 吗?
    图书编码具有唯一性,而且不管你放哪里,这本书的编码都不会变的。
  3. www.runoob.com/css/css-tutorial.html 是 URN 吗? 不是
    www.runoob.com/css/css-tutorial.html是和位置相关的,我的资源换了位置,那么就不是这个网址了可能变成:www.baidu.com/css/css-tutorial.html 或者其他的了。

下面这个文氏图非常清楚的表明了:


URL、URN 和 URI的区别_第1张图片
这不是我画的,来自网络

URI 就非常简单了,简单来说所有的一切资源基本都可以称之为URI。只要你这个资源可以放到web上进行标记,都是URI 。由于现在基本不会刻意区分URL和URI,所以基本上统称为RUI,很多 人只是习惯一般把网址叫URL而已。

关于这个 URN 和 URL 的重合之处,既要与位置无关还同时具有访问机制。磁力链接 magnet:?xt=urn:btih:就是最好的例子。严格来说没有 magnet 协议的磁力链接才是 URN ,加上 magnet 协议就是 URL了。但是一般情况下,我们不会特意区分磁力链接属于 URN 还是 URL 。磁链链接的本质就是文件经过哈希得到的值,比如说《流浪地球》经过哈希得到了一串字符串,那么不管这个文件被放在哪个电脑,我下载文件的时候都可以通过哈希值找到文件,因此这个哈希值和位置没有任何关系。

如果您有不同的想法,请您留言,让我们一起学习,一起进步。谢谢。

你可能感兴趣的:(URL、URN 和 URI的区别)