文章不成体系,单纯的做为概念解析,仅当作笔记。bash
用于标识某一互联网资源名称的字符串,该种标识容许用户对任何(包括本地和互联网)的资源经过特定的协议进行交互操做。URI 有包括肯定语法和相关协议的方案所定义。编码
URI 的格式由 URI 协议名(例如 http, ftp, mailto, file),一个冒号,和协议对应的内容组成。特定的协议定义了协议内容的语法和语义,而全部的协议都必须遵循必定的 URI 文法通用规则。URI 文法同时也就各类缘由对协议内容加以其余的限制,例如,保证各类分层协议之间的协同性。百分号编码也为 URI 提供了附加信息。url
通用 URI 的格式以下:spa
[协议]://[用户名]:[密码]@[主机名]:[端口]/[路径]?[查询参数]#[片断 ID]code
注:用户名和密码(即用户信息)、端口、查询参数、片断ID可选。orm
下面是两个 URI 示例以及组成部分:cdn
hierarchical part
┌───────────────────┴─────────────────────┐
authority path
┌───────────────┴───────────────┐┌───┴────┐
abc://username:password@example.com:123/path/data?key=value&key2=value2#fragid1
└┬┘ └───────┬───────┘ └────┬────┘ └┬┘ └─────────┬─────────┘ └──┬──┘
scheme user information host port query fragment
urn:example:mammal:monotreme:echidna
└┬┘ └──────────────┬───────────────┘
scheme path
复制代码
一种具体的 URI,即 URL 能够用来标识一个资源,并且还指名了如何 locate(定位)这个资源。通俗的讲,URL 是 Internet 上用来描述资源的字符串,标识了一个互联网资源,并指定了对其进行操做或者获取资源的方法。目前最大的缺点是当信息资源的存放地点发生变化时,必须对 URL 做出相应的改变。blog
即经过名称来标识资源,不依赖于位置,而且有可能减小失效连接个个数。用于标识惟一书目的 ISBN 系统是一个典型的 URN 使用范例。例如,ISBN 0486275574(urn:isbn:0-486-27557-4)无二义性地标识出莎士比亚的戏剧《罗密欧与朱丽叶》的某一特定版本。ip
URN 是基于某名字空间经过名称指定资源的 URI。人们能够经过 URN 来指出某个资源,而无需指出其位置和得到方式。资源无需是基于互联网的。例如,URNurn:ISBN0-395-36341-1 指定标识系统(即国际标准书号ISBN)和某资源在该系统中的惟一表示的 URI。它能够容许人们在不指出其位置和得到方式的状况下谈论这本书。资源
示例:
URI 指的是一个资源,URL 指的是用地址定位一个资源,URN 指的是用名称定位一个资源。 即URL 和 URN 是 URI 的子集。
如图所示:
举个例子:
寻找一个具体的人:若是经过地址找,即xx省xx市xx区 ... xx单元xx室的主人,这就是 URL(经过位置定位资源);若是经过身份证号去找就是 URN(经过身份证号表示某我的,不经过某我的所在的位置)。