URI包括URL和URN

URI 能唯一表示资源,URL 则是以资源路径来表示资源,URN 则是根据名称(可能附带来源&ID)来表示资源

一、URI

1.什么是URI

URI,统一资源标志符(Uniform Resource Identifier, URI),用来标识抽象或物理资源的一个紧凑字符串。通过使用位置,名称或两者来标识Internet上的资源;它允许统一识别资源。

URI通常不会包含获取资源的方式,表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的,是一种抽象的概念。

2.URI的结构组成

URI通常由三部分组成:

  1. 资源的命名机制;

  2. 存放资源的主机名;

  3. 资源自身的名称。可以对该资源进行唯一标识(注意,这个不一定是完整的路径)

注意:这只是一般URI资源的命名方式,只要是可以唯一标识资源的都被称为URI,上面三条合在一起是URI的充分不必要条件,以上三点并不是URI的必要条件,URI只是一种概念,怎样实现无所谓,只要它唯一标识一个资源就可以了。

3.URI格式

[协议名]://[用户名]:[密码]@[主机名]:[端口号]/[路径]?[查询参数]#[片段ID]

二、URL

1.什么是URL

URL : Universal Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串,用于指示资源的位置以及用于访问它的协议。通俗来说,就是对于某种web资源的引用,并且包含了如何获取该资源的方式。

最常见到的场景就是指一个网站的地址。URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL是URI概念的一种实现方式。

2.URL的格式由三部分组成:

  1. 第一部分是协议(或称为服务方式)。

  2. 第二部分是存有该资源的主机IP地址(有时也包括端口号)。

  3. 第三部分是主机资源的具体地址,如目录和文件名等。

第一部分和第二部分用“://”符号隔开,

第二部分和第三部分用“/”符号隔开。

第一部分和第二部分是不可缺少的,第三部分有时可以省略。

3.URL的格式

一般格式为(带方括号()的为可选项):

protocol :// hostname(:port) / path / (;parameters)(?query)#fragment

标准格式

[协议类型]://[服务器位置IP]:[端口]/[资源层级路径][资源名称]?[查询参数]#[片段ID]

完整格式

[协议类型]://[存取凭证]@[服务器位置IP]:[端口]/[资源层级路径][资源名称]?[查询参数]#[片段ID]

URL常见的协议

1.http:超文本传输协议,访问的是远程的网络资源,格式是http://

  • http协议是在网络开发中最常用的协议

  • https协议相当于是http协议的安全版

2.file

  • 访问的是本地计算机上的资源,格式是file://(不用加主机地址)

3.mailto

  • 访问的是电子邮件地址,格式是mailto:

4.ftp

  • 访问的是共享主机的文件资源,格式是ftp://

5.ed2k

  • 通过支持ed2k(专用下载链接)协议的P2P软件访问该资源(代表软件:电驴),格式是ed2k://

6.thunder

  • 通过支持thunder(专用下载链接)协议的P2P软件访问该资源(代表软件:迅雷),格式是thunder://

三、URN

URN : Universal Resource Name 统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源。URN 用名称定位。常见于论文索引。

格式:urn:[NID]:[NSS]

  • NID 命名空间:可以看作是资源的命名方式,例如 isbn、isan、issn、ietf:rfc、mpeg:mpeg7:schema

  • NSS 序号:根据 NID 的不同代表不同的意义,如:

    • isbn:此时 NSS 表示书号(book number)

    • isan:此时 NSS 表示媒体编号(audiovisual number)

    • issn:此时 NSS 表示序列号(serial number)

    • ietf:rfc:此时 NSS 表示IEFT RFC 论文

    • mpeg:mpeg7:schema:此时 NSS 表示MPEG-7 视屏类型

四、URI和URL之间的区别

从上面的例子来看,你可能觉得URI和URL可能是相同的概念,其实并不是,URI和URL都定义了资源是什么,但URL还定义了该如何访问资源。URL是一种具体的URI,它是URI的一个子集,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI 是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,是绝对的。

对uri可以认为只是唯一识别的编号,类似于大家的身份证号,而url就是身份证住址+姓名,只要能唯一标识资源的就是URI,在URI的基础上给出其资源的访问方式的就是URL