URI、URL与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号的居民。在这个案例中,我的居住地址唯一地标识了我,但是要是我有一个舍友的话就另当别论了。

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

常见的混淆

以下引自维基百科

1
2
3
在计算机中,一个统一资源定位符(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:user@example.com
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.几张图表带你更进一步理解三者关系

wKioL1jFCtahHsYcAAGIzNbW2yc512.png

wKioL1jFDHDgq3uOAAAR_pghk58744.jpg

wKioL1jFDOng6MY3AABEkJJpOls405.jpg




本文转自 xoyabc 51CTO博客,原文链接:http://blog.51cto.com/xoyabc/1905492,如需转载请自行联系原作者

相关文章
|
6月前
|
前端开发 Java 应用服务中间件
配置SpringMVC的前端控制器DispatcherServlet时,<url-pattern>中“/“和“/*“的区别
配置SpringMVC的前端控制器DispatcherServlet时,<url-pattern>中“/“和“/*“的区别
|
3月前
|
数据安全/隐私保护
URI 和URL 的区别是什么?
URI 和URL 的区别是什么?
|
4月前
|
PHP
URI和URL的区别
URI和URL的区别
|
7月前
|
自然语言处理
HTTP协议中 URI、URL、URN
HTTP协议中 URI、URL、URN
80 0
|
9月前
|
存储 缓存 网络协议
从输入URL到页面加载的全过程?隐藏元素有哪些方式,有什么区别?什么是内存泄漏?
1. 在浏览器地址栏输入url并回车 2. 浏览器查看是否有缓存,比较缓存是否过期,无缓存或过期则重新发起请求 3. DNS解析域名对应的IP 4. 根据IP建立TCP链接,即三次握手 5. 发送http请求 6. 服务器响应并返回结果 7. 关闭TCP链接,即四次挥手 8. 渲染页面,构建DOM树
|
11月前
URL、URI、URN详解
URI 属于 URL 更高层次的抽象,一种字符串文本标准。 就是说,URI 属于父类,而 URL 属于 URI 的子类。URL 是 URI 的一个子集。 二者的区别在于,URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源。
|
19天前
|
JavaScript
vue截取URL中的参数
vue截取URL中的参数
13 0
|
2月前
|
前端开发
[牛客网-前端大挑战QD2] 获取url参数
[牛客网-前端大挑战QD2] 获取url参数
19 0
|
2月前
BurpSuite8.2 -- 查找包含id参数的URL
BurpSuite8.2 -- 查找包含id参数的URL
19 1
|
2月前
|
分布式计算 DataWorks 关系型数据库
DataWorks数据源问题之参数“连接Url”如何解决
DataWorks数据源是指DataWorks中配置的用于数据集成的外部数据源;本合集将讲解如何在DataWorks中配置和管理数据源,以及处理数据源连接和集成过程中的问题。
29 5