什么是URI,URL以及URN

最近两天在看网络协议,里边提到URL和URI的区别和联系,解释的一头雾水,这里也记录下自己的理解

定义与出处:

URI 英文全称为 Uniform Resource Identifier(统一资源标识符),它是一个标准,而非定义具体但表现方式。

URL Uniform Resource Locator(统一资源定位符),它实际上是一个资源标识符,但更具体的,它定位了资源的位置。

URN Uniform Resource Name(统一资源命名),作为特定内容的唯一名称使用的,与当前资源的所在地无关。使用URN,就可以将资源四处迁移,而不用担心迁移后无法访问。P2P下载中使用的磁力链接是URN的一种实现,它可以持久化的标识一个BT资源,资源分布式的存储在P2P网络中,无需中心服务器用户即可找到并下载它。

关于这三者有专门的出处:

这三个缩略词是Tim Berners-Lee在一篇名为RFC 3986: Uniform Resource Identifier (URI): Generic Syntax的文档中定义的互联网标准追踪协议。

也可在 https://en.wikipedia.org/wiki/Uniform_Resource_Identifier 找到相关的来龙去脉。

联系:

三者关系如下图:


区别:

这里我的理解是:

URI是所有可以唯一标记网络资源方式的统称,是一个标准,没有具体的表现形式。可以是采用地址的方式,也可以是唯一标识符的形式,也有其它的形式,都可以。

URL则是采用地址的方式标记的网络资源,是URI的其中一种实现方式,因此我们常常说,URL是URI的子集

URN以一种特殊标识符的形式标记网络资源的方式。

比如找一个人,URI是所有找到这个人的方式的所有方式的集合,URL是通过地址信息找到这个人的地址信息,URN则相当于人的身份证号码

下面就来看看例子吧,当来也是来自权威的RFC:

ftp://ftp.is.co.za/rfc/rfc1808.txt(also a URL because of the protocol)

http://www.ietf.org/rfc/rfc2396.txt(also a URL because of the protocol)

ldap://[2001:db8::7]/c=GB?objectClass?one (also a URL because of the protocol)

mailto:[email protected](also a URL because of the protocol)

news:comp.infosystems.www.servers.unix(also a URL because of the protocol)

tel:+1-816-555-1212

telnet://192.0.2.16:80/ (also a URL because of the protocol)

urn:oasis:names:specification:docbook:dtd:xml:4.1.2

这些全都是URI, 其中有些是URL. 哪些? 就是那些提供了访问机制的.

误解:

因为在web开发中,大多数情况下,我们通过代码获取URI和URL时候,URI和URL比较看来,URI缺少了协议和域名端口部分

例如:

/prtk/forwordone                                    URI

http://acpf.ekwing.com/prtk/forwordone          URL

所以很容易误解为URI就是URL去掉了协议和域名端口部分,仅此而已,这也是当初为何一头雾水的原因。然而实际的标准还是

应该以权威的RFC为准

你可能感兴趣的:(什么是URI,URL以及URN)