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. 我们的邮箱 123456789@qq.com 是 URL 吗?不是
    准确的说:name@email.com 不是URL,,即 123456789@qq.com 不是。
    但是 mailto:name@email.com 是一个 URL,即mailto:123456789@qq.com ,它可以在浏览器直接输入的。
    mailto是一个电子邮件协议,但是主要用于HTML建议一个超链接:

<a href="mailto:name@email.com">Email</a>

  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 或者其他的了。

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


这不是我画的,来自网络

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (原话)谈谈对HTTP协议的理解:超文本传输协议,应用于OSI网络模型中的应用层,是用于服务器传输超文本到本地浏览...
    24_yu阅读 925评论 0 1
  • 作者:钱小钱 链接:https://www.zhihu.com/question/19557151/answer/...
    我和咖啡阅读 553评论 0 0
  • 对于URL,大家都比较熟悉,其他两个词就比较陌生了。URI、URL和URN是识别、定位和命名互联网上的资源的标准途...
    小明yz阅读 654评论 0 0
  • 曾经我天真的以为URI和URL是一样的,只是不同叫法而已,然后某一天有人告诉我这两个不一样,so我发现是时候好好研...
    你叫呆小瓜阅读 49,332评论 8 28
  • 呐呐呐....亲爱的各位小伙伴们,今天我又要来出洋相了,本渣渣媛通过自己血与泪的教训,希望帮助跟我一样的渣友少走弯...
    炒鸡可耐的小葵花阅读 1,972评论 3 5