前言

不知道大家有没有电话拨号通过'猫'上网的经历,那时测试网络是否连接,最好的方式就是打开浏览器输入:

www.baidu.com

那会管这一连串字母叫‘ 网址 ’。之后上大学(计算机专业),知道了这一串字母还有一个名字‘ URL ’。再后来毕业了,找了个IT工作,有的同事又管它叫‘ URI ’。那么到底这一连串字母叫什么呢?URL和URI有时什么关系呢?

通过StackOverflow看问题,我对它们的关系有了基本的认识。分享给大家:

PS:下文均翻译自StackOverflow看到的高票答案,例子中的‘我’指原作者

概念

URI - 统一资源标识符

URI是使用数字,字母和符号的短字符串来标识文档的标准。
URL,URN和URC都是URI的种类。

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通常以协议(http)开头,包含网络主机名(example.com)和文档路径(/foo/mypage.html)等信息。 URL还可能具有查询参数和锚点标识符。

URN - 统一资源名称

通过唯一且持久的名称来标识资源,但不一定告诉你如何在互联网上找到它。它通常以前缀urn开头:例如:

  • urn:isbn:0451450523 以其ISBN号码识别一本书。
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 全局唯一标识符
  • urn:publishing:book - 使用XML命名空间为文档标识一种book。

URN不仅限于识别文件,还可以识别想法和概念。当URN确实代表文档时,可以通过“解析器”将其翻译成URL。然后可以从URL下载文档。

URC - 统一资源引用

指向文档的元数据而不是文档本身。 URC的一个例子是指向页面的源代码:view-source:http://example.com/

Data URI

既不能将其在互联网上定位,也不能将其命名,数据可以直接放入URI。一个例子就是 data:,Hello%20World

举个(通俗)熟栗子

URI和URI

URI负责识别,URL负责定位;然而,定位符也是标识符,因此每个URL都是URI,但是每个URI并不全是URL。

Roger Pate

这是我的名字,这是一个标识符。它就像一个URI,但它不是一个URL,因为它没告诉你我的位置以及如何联系到我。在这种情况下,单单在美国至少就能找到5个与我同名的。

4914 West Bay Street,Nassau,Bahamas

这是一个带有物理位置标识符的定位符。它像URL和URI(因为所有URL都是URI),并且间接把我识别为“..的居民”。在这种情况下,它可以唯一标识我,但如果新搬来一个室友,那将会改变。

我“喜欢(栗子)”,因为这些示例不依托于必要的语法。

普遍疑惑

来自维基百科:

在计算机领域中,统一资源定位符(URL)是统一资源标识符(URI)的子集,用于指定标识资源可用的位置以及检索资源的机制。普遍用法和许多技术文档和口头讨论中,它经常被错误地用作URI的同义词,…

由于这种常见的混淆,许多产品和文档不正确地使用一个术语而不是另一个术语,指出它们自身的区别,否则就会同义地使用它们。

URN

我的名字Roger Pate可能就 像 一个URN(统一资源名称),会受到更多的管制,旨在空间和时间上都是独一无二的。

但是这个名字,并不是全局唯一的,因此并不适合作为URN。 即使没有人使用这个名字,我和我的祖父的祖父同名,它仍然不会是独一无二的。 我和我后代也可能同名使得这个名字也不适合作为URN。

在这个严格唯一性约束前提下,URN与的URL不同,即使它们都共享URI的语法。

结论

参考

  • http://stackoverflow.com/questions/176264/what-is-the-difference-between-a-uri-a-url-and-a-urn
  • http://stackoverflow.com/questions/176264/what-is-the-difference-between-a-uri-a-url-and-a-urn#answer-1984225
  • http://stackoverflow.com/questions/176264/what-is-the-difference-between-a-uri-a-url-and-a-urn#answer-28865728

什么是URI、URL、URN、URC和Data URI?的更多相关文章

  1. uri,url.urn

    uri:Web上可用的每种资源 - HTML文档.图像.视频片段.程序等 - 由一个通过通用资源标志符(Universal Resource Identifier, 简称"URI" ...

  2. 关于URI URL URN

    刚琢磨.整理了关于escape.encodeURIComponent.encodeURI的知识.突然又对URI有点模糊了,遂整理了以下资源 : 资源一: URL,URI 和URN 的举例理解 资源二: ...

  3. URI/URL/URN的联系和区别

    下面是我整理的一些关于他们的描述. URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源. 而URL是uniform resource locato ...

  4. URI URL URN的区别

    一:什么是URI,URL,URN ? URI:Uniform Resource Identifier,统一资源标识符,是一个用于表示互联网上资源名称的字符串 格式:http://www.xxx.com ...

  5. URI/URL/URN都是什么

    URI : Uniform Resource Identifier,统一资源标志符 URL : Universal Resource Locator,统一资源定位符 URN : Universal R ...

  6. Http权威指南笔记(一) URI URL URN 关系

    定义 URI:统一资源标识符(Uniform Resource Indentifier)用来标识服务器上的资源. URL:统一资源定位符(Uniform Resouce Locator)是资源标识符最 ...

  7. URI URL URN 关系

    我们一起来看下面这个虚构的例子.这是一个URI: http://bitpoetry.io/posts/hello.html#intro 我们开始分析 http:// 是定义如何访问资源的方式.另外 b ...

  8. 前端-Data URI Scheme

    了解Data URI scheme,首要要掌握一些URI.URL的基本知识,很多做移动端上开发的同学对这两个基本概念掌握的不够,本文首先会对这两个基本概念做一些简单的介绍. 基本概念 <HTTP ...

  9. Data URI 应用场景小结

    Data URI scheme 在前端开发中是个常用的技术,通常会在 CSS 设置背景图中用到.比如在 Google 的首页就有用到: Data URI scheme 简称 Data URI,经常会被 ...

随机推荐

  1. 转 Python - openpyxl 读写操作Excel

    Python - openpyxl 读写操作Excel   openpyxl特点   openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间 ...

  2. linux 下安装chrome的rpm包

    1. 下载chrome的rpm包,假设叫cho. 2.执行命令 rpm -ivh cho 3.报错提示需要lsb>=4.0,执行命令 yum install lsb 等待安装完毕. 4. 重新执 ...

  3. 《linux 内核全然剖析》sched.c sched.h 代码分析笔记

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011368821/article/details/25129835 sched.c sched.h ...

  4. ASP.NET MVC 学习笔记之 MVC + EF中的EO DTO ViewModel

    EO: Entity Object 就是EF中的实体类, 对EO的操作会对数据库产生影响. DTO: Data Transfer Object 数据传输对象.用于在各层之间传递数据的普通类,DTO有哪 ...

  5. 2018-2-13-win10-安装Mpi

    title author date CreateTime categories win10 安装Mpi lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23: ...

  6. C++ 空类,默认产生哪些成员函数

    C++ 空类,默认产生哪些成员函数.     默认构造函数.默认拷贝构造函数.默认析构函数.默认赋值运算符 这四个是我们通常大都知道的.但是除了这四个,还有两个,那就是取址运算符和 取址运算符 con ...

  7. java笔试常见的选择题

    1.已知表达式int m[] = {0,1,2,3,4,5,6}; 下面那个表达式的值与数组的长度相等()A m.length()B. m.lengthC. m.length()+1D. m.leng ...

  8. k8s集群搭建之一:基础环境

    一按照kubernetes对软件和硬件的要求: 二准备的主机系统以及ip配置 角色 系统 IP k8s-master centos7.4 192.168.137.66 k8s-node1 centos ...

  9. leetcood学习笔记-35-二分法

    题目: 第一次提交; class Solution: def searchInsert(self, nums: List[int], target: int) -> int: for i in ...

  10. Dart编程实例 - Const 关键字

    Dart编程实例 - Const 关键字 void main() { final v1 = 12; const v2 = 13; v2 = 12; } 本文转自:http://codingdict.c ...