这是一个经典的技术争论,许多人都会自问:URL、URI,很可能还有URN,它们之间的区别是什么。虽然,现在我们简单地把 URN 和 URL 都看做 URI,但严格来说URI可以进一步划分为URL、URN或者这两者的组合,所以了解这三者之间的区别将会非常有趣并让人受益匪浅。如果你恰好在某个地方碰到了这些东西,那么至少应该知道它们的含义。

我认为,尽管对一般人来说,不了解这三个缩略词之间的技术差异以及它们各自的含义并不是什么问题。但是,如果你作为一个计算机科学家、一个Web开发者、一个系统管理员,或者更笼统地说,你工作在IT领域,那么了解这些知识就非常有必要了。

这篇文章旨在于清楚地讲解URL、URI和URN之间的区别,帮助你快速理解这些必备知识。你是不是对这个话题也感到困惑?那么我们开始吧!

起源

这三个缩略词是Tim Berners-Lee在一篇名为RFC 3986: Uniform Resource Identifier (URI): Generic Syntax的文档中定义的互联网标准追踪协议。

引文:

统一资源标识符(URI)提供了一个简单、可扩展的资源标识方式。URI规范中的语义和语法来源于万维网全球信息主动引入的概念,万维网从1990年起使用这种标识符数据,并被描述为“万维网中的统一资源描述符”。

Tim Berners-Lee ,万维网的发明者,同时也是万维网联盟(W3C)的负责人。照片由 Paul Clarke 遵循CC BY-SA 4.0 协议提供。

区别

首先我们要弄清楚一件事:URL和URN都是URI的子集。

换言之,URL和URN都是URI,但是URI不一定是URL或者URN。为了更好的理解这个概念,看下面这张图片。

通过下面的例子(源自 Wikipedia),我们可以很好地理解URN 和 URL之间的区别。如果是一个人,我们会想到他的姓名和住址。

URL类似于住址,它告诉你一种寻找目标的方式(在这个例子中,是通过街道地址找到一个人)。要知道,上述定义同时也是一个URI。

相对地,我们可以把一个人的名字看作是URN;因此可以用URN来唯一标识一个实体。由于可能存在同名(姓氏也相同)的情况,所以更准确地说,人名这个例子并不是十分恰当。更为恰当的是书籍的ISBN码和产品在系统内的序列号,尽管没有告诉你用什么方式或者到什么地方去找到目标,但是你有足够的信息来检索到它。引自这篇文章:

所有的URN都遵循如下语法(引号内的短语是必须的):

< URN > ::= "urn:" < NID > ":" < NSS >

其中NID是命名空间标识符,NSS是标识命名空间的特定字符串。

一个用于理解这三者的例子

我们来看一下上述概念如何应用于与我们息息相关的互联网。

再次引用Wikipedia ,这些引文给出的解释,比上面人员地址的例子更为专业:

关于URL:

URL是URI的一种,不仅标识了Web 资源,还指定了操作或者获取方式,同时指出了主要访问机制和网络位置。

关于URN:

URN是URI的一种,用特定命名空间的名字标识资源。使用URN可以在不知道其网络位置及访问方式的情况下讨论资源。

现在,如果到Web上去看一下,你会找出很多例子,这比其他东西更容易让人困惑。我只展示一个例子,非常简单清楚地告诉你在互联网中URI 、URL和URN之间的不同。

我们一起来看下面这个虚构的例子。这是一个URI:

http://bitpoetry.io/posts/hello.html#intro

我们开始分析

http://

是定义如何访问资源的方式。另外

bitpoetry.io/posts/hello.html

是资源存放的位置,那么,在这个例子中,

#intro

是资源。

URL是URI的一个子集,告诉我们访问网络位置的方式。在我们的例子中,URL应该如下所示:

http://bitpoetry.io/posts/hello.html

URN是URI的子集,包括名字(给定的命名空间内),但是不包括访问方式,如下所示:

bitpoetry.io/posts/hello.html#intro

就是这样。现在你应该能够辨别出URL和URN之间的不同。

如果你忘记了这篇文章的内容,至少要记住一件事:URI可以被分为URL、URN或两者的组合。如果你一直使用URI这个术语,就不会有错。

为了纠正一些错误,已经更新了这篇文章。如果你发现新的错误,无论是技术上的还是语法上的,请不要犹豫,告诉我们吧!

本文作者:伯乐在线

来源:51CTO

你知道URL、URI和URN三者之间的区别吗?相关推荐

  1. URL,URI,URN三者之间的区别

    1.URL,URI,URN定义 URI(Uniform Resource Identifier):统一资源标识符 URL(Uniform Resource Locator):统一资源定位符 URN(U ...

  2. URI、URL、URN三者之间的关系

    URI URI(Uniform Resource Identifier, 统一资源标识符),用来标识资源.例如:HTML文档.图像.视频片段.程序都是由一个UtRI进行标识的.URI通常由3部分组成: ...

  3. 什么是URL,URI或URN?

    什么是URL,URI或URN? 什么是URI? 每个Web服务器资源都有一个名字,这样客户端就可以说明它们感兴趣的资源是什么了. 服务器资源名被称为统一资源标识符(Uniform Resource I ...

  4. [转]ExtJs基础--Html DOM、Ext Element及Component三者之间的区别

    要学习及应用好Ext框架,必须需要理解Html DOM.Ext Element及Component三者之间的区别. 每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM ...

  5. TCP三次握手、四次挥手、socket,tcp,http三者之间的区别和原理

    接着上一篇文章叙述: TCP/IP连接(在互联网的通信中,永远是客户端主动连接到服务端): 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协 ...

  6. String String.valueof() toString三者之间的区别~

    String  String.valueof()  toString三者之间的区别~ (String )强制类型转换,使用这种方法时,需要注意的是类型必须能转成String类型.因此最好用instan ...

  7. String StringBuilder StringBuffer三者之间的区别~~~

    String StringBuilder  StringBuffer三者之间的区别~~~ String是字符串常量,它是典型的immutable类,被声明final class,所有的属性都是fina ...

  8. Python id(obj), ==, is 三者之间的区别

    不多说,直接上代码,看看三者的区别吧. 代码: # 例子 a = [1, 2, 3] b=a; print(a) print(b) print(a is b) print(b is a) print( ...

  9. .NET、C#和ASP.NET三者之间的区别与联系

    .NET.C#和ASP.NET三者之间的区别与联系 1..net(dot net) .net是一个平台,抽象的平台概念. 实现形式是库:①定义了基本的类型(通用类型系统CTS,common type ...

最新文章

  1. XCOM串口助手打印不出数据
  2. 卸载阿里云服务器的mysql_阿里云服务器入门教程
  3. 用faster-rcnn训练自己的数据集(VOC2007格式,python版)
  4. 用户日志留存所采用的技术手段
  5. JVM(2)——JVM类加载机制
  6. 缴满15年能领多少钱 养老金计算公式网上疯传
  7. bool python 运算_python中的布尔操作
  8. java.lang.OutOfMemoryError: Java heap space错误和方法(集、转)
  9. pycharm写python字典_pycharm_字典
  10. 动态背景 图层上写文字_文字效果很难吗?教你如何打造绚丽的浮雕文字!
  11. org.apache.jasper.JasperException: /index.jsp(14,2) The s:form tag declares that it accepts dyna
  12. ArcMap怎么导出shape文件到奥维互动地图
  13. Mac 下制作win7启动U盘启动PE
  14. hadoop原理巧用到异地机房双活
  15. JavaScript设计模式-观察者模式
  16. 明天全国哀悼日,小程序只需三行代码秒变黑白
  17. HQChart实战教程17 -K线沙盘推演
  18. python高级练习题:法贝热复活节彩蛋压测试【难度:5级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
  19. Task5 | 结构方程 | “老年病”与身份的关系
  20. git动图快速制作方法

热门文章

  1. 关于云计算的那些问题
  2. 关于云计算的个人理解
  3. windows10注册表是什么?(一)
  4. 华中科技大学电路理论课程PPT分析
  5. Oracle ADDM自动数据库诊断监视器
  6. 语音对话声空计算机APP,大学生最爱的10款声音类APP,声控必备!
  7. 万门大学的软件测试特训班有用吗,app推荐|10款有趣的app分享(包含社交、学习等等),进来看看?...
  8. cv2.show显示图片空白
  9. 如何在公众号文章正文添加附件?本文教你轻松实现
  10. UMLet的使用与类图的设计