原文出处:http://stackoverflow.com/questions/176264/what-is-the-difference-between-a-uri-a-url-and-a-urn


当谈起URL、URI、URN时,仿佛他们是不同的东西,但是单凭肉眼来看,他们看起来似乎又是一样的。
那么,他们之间有什么明显区别呢?
(以下摘自stackoverflow网友回答)

1.Roger Pate网友

URI用于识别,URL用于定位;然而,定位符通常也是标识符,因此每一条URL也是一个URI,但却有一些URI并不能称作URL。

一些实例:

  • Roger Pate


我的名字Roger Pate是一个标识符。这就像是一个URI,但却不能是一条URL,因为通过它你不会知道我的住址或者是联系方式。这样的话,仅在美国就会匹配到至少五个和我名字一样的人。


  • 4914 West Bay Street, Nassau, Bahamas(巴哈马拿骚市西湾街4914号)

这是一个地点,一个物理位置的标识符。它既像一条URL又像一个URI(因为URL即URI),又间接地确认我是一个住在西湾街4914号的居民。在这个案例中,我的居住地址唯一地标识了我,但是要是我有一个舍友的话就另当别论了。

我之所以用"像"是因为这些例子并不按照所需的语法。

常见的混淆

以下引自维基百科

在计算机中,一个统一资源定位符(URL)是统一资源标识符(URI)的子集,它指定了一个已标识的可
用资源及检索机制。在流行的习惯用语、许多技术文档以及口头语言中,URL常常被错误地当成URI的同
义词使用。...(我加上的重点)

由于这两个词太容易混淆,许多产品及文档都错误地使用其中一个词代替另外一个,指定他们自己的区别,或者把他们当同义词使用。

URNs

除了那些更受管制,并打算在空间和时间也必须是唯一的这些情况外,我的名字Roger Pate就可以说是一个统一资源名称(Uniform Resource Name)。


因为我现在与别人都使用这个叫做"Roger Pate"的名字,这个名字就不是全球唯一的了,也就不适合称作一个URN了。然而,即使没有其他家庭使用此名字,我是以我祖父的名字命名的,那么在时间上我的名字也就不是唯一的。即使事实上并非如此,我以我的名字命名我后代的可能性也让其不适合作为一个URN。


URN有别于有着严格唯一性约束的URL,虽然二者都遵循URI的语法。


2.Stephen Ostermiller网友

  • URI -- 统一资源标识符

URI是使用一小串数字、字母和符号来识别文档的标准。它是在RFC 3986定义的:URI指的是通用句法。所有的URL、URN及URC都是URI。

  • URL -- 统一资源定位符

URL中包含了如何通过其位置来获取资源的信息。例如:
http://example.com/mypage.html
ftp://example.com/download.zip
mailto:[email protected]
file:///home/user/file.txt
tel:1-888-555-5555
http://example.com/resource?foo=bar#fragment
/other/link.html (一个相对URL,只有在另外一个完整的URL上下文中才有用)

URL总是以一个协议头开始,通常包括诸如主机名(example.com)和一个文件路径(/foo/mypage.html)。URL可能也会有查询参数及片段识别符。

  • URN -- 统一资源名称

URN通过一个唯一及持续的名字来标识资源,但却不必告诉你如何在网络上定位到它。它通常是以一个urn前缀的开头的。例如:
urn:isbn:0451450523 to identify a book by its ISBN number.
urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 a globally unique identifier
urn:publishing:book - An XML namespace that identifies the document as a type of book.

URN可以识别想法和概念。他们并不限于识别文件。当一个URN代表一个文件时,它可以被一个解析器转换成一条URL。然后这个文件就这个用转换后的URL下载了。

  • URC -- 统一资源引用符

URC指的是一个文件的元数据,而不是文件本身。URC的一个例子是一个指定HTML网页的源代码,如:view-source:http://example.com/

  • Data URI

我们可以直接将数据放到一个URI中,而不是在互联网上定位或命名它。一个数据URI:data:,Hello%20World

3.几张图表带你更进一步理解三者关系

URI、URL与URN的区别是什么?_第1张图片

URI、URL与URN的区别是什么?_第2张图片

URI、URL与URN的区别是什么?_第3张图片