URI、URL 和 URN
一、URI
URI(Uniform Resource Identifier)即统一资源标识符。
URI 的格式:
[协议]://[用户名]:[密码]@[主机名]:[端口]/[路径]?[查询参数]#[片段 ID]
注:用户名和密码(即用户信息)、端口、查询参数、片段 ID 可选。
下面是两个 URI 示例以及组成部分:
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
- host - 定义域主机(http 的默认主机是 www)
- domain - 定义因特网域名,比如 w3school.com.cn
- port - 定义主机上的端口号(http 的默认端口号是 80)
- path - 定义服务器上的路径(如果省略,则文档必须位于网站的根目录中)
二、URL
URL(Uniform Resource Locator)即统一资源定位符。
URL 是一种具体的 URI,可以用来标识一个资源,而且指明了如何 locate 这个资源,例如地址栏里输入的网站地址。
URL 的组成:协议、主机、端口、路径、片段
- 协议:表示当前的传输协议,常用的有 HTTP 协议、ftp 协议、tcp 协议、file 协议、HTTPS 协议等;
- 主机:主机指请求的服务器域名或 IP 地址,如果是域名,则需要先请求 DNS 服务器解析域名对应的 IP,再对域名发起请求;
- 端口:请求服务器的对应端口,可以省略,省略时默认 80 端口;
- 路径:表示请求的资源路径;
- 片段:表示资源某一部分的锚点,不会与请求一起发送到服务器。
三、URN
URN(Uniform Resource Name)即统一资源名称。
URN 是基于某名字空间通过名称指定资源的 URI,通过名称来标识资源,不依赖于位置,而且资源无需是基于互联网的。例如,URNurn:ISBN0-395-36341-1 指定标识系统(即国际标准书号ISBN)和某资源在该系统中的唯一表示的 URI。它可以允许人们在不指出其位置和获得方式的情况下谈论这本书。
示例:
urn:issn:1535-3613 (国际标准期刊编号)
urn:isbn:9787115318893 (国际标准图书编号)
四、三者的区别
URI 指的是一个资源,URL 指的是用地址定位一个资源,URN 指的是用名称定位一个资源。
换句话说,URL 和 URN 是 URI 的子集。
寻找一个具体的人:如果通过地址找,即xx省xx市xx区 ... xx单元xx室的主人,这就是 URL(通过位置定位资源);如果通过身份证号去找就是 URN(通过身份证号表示某个人,不通过某个人所在的位置)。