-
Notifications
You must be signed in to change notification settings - Fork 11
Description
2017年09月25日: 整理自我的知乎上的回答
正好这几天在看HTTP权威指南,遇到了URL与URI和URN的概念,所以就来回答了
下面分别对URI,URN,URL做解释:
URI:Uniform Resource Identifier (统一资源标识符):用一个紧凑的字符串用来标示抽象或物理资源
也就是说,URI只是规定如何标识资源,没有规定如何获取资源 也就是what the resource is but i don't care how to get the resource
URL:Uniform Resource Locator (统一资源定位符):URL是URI最常见的表现形式.它明确说明如何从一个精准、固定的位置获取资源
URL不但规定了如何标识资源,还规定了如何获取资源..也就是what the resource is && how to get the resource
URL遵循以下格式,来自HTTP权威指南的节选
URN:Uniform Resource Name (统一资源名称):URN作为特定内容的唯一名称使用,与目前的资源所在地无关,使用这些与位置无关的URN,就可以将资源到处搬移
也就是I know the resource name and get the resource,but you don't need to know how can i do.
通过URN,可以使用相同一个名字通过多种网络访问协议来访问资源
不过,现在还只是试验阶段,并没有大规模使用..因为URN需要一个支撑架构来解析资源的位置,目前还缺乏类似的架构支持URN一般都是urn: 作为开头
所以,三者的关系如下图
A URI has two specializations known as URL and URN.
URI是URL与URN的父类,URI是抽象的表现,他们的关系就像蝴蝶都会飞,但会飞的可不都是蝴蝶. 所有的URL与URN都是URI,但是URI不一定就是URL或者URN
举例说明:
-
URI:
以下(URL|RUN)都是URI
-
URL:
- http://example.com/mypage.html
- ftp://example.com/download.zip
- mailto:[email protected]
- file:///home/user/file.txt
- http://example.com/resource?foo=bar#fragment
-
URN:
urn:isbn:0451450523 书的ISBN编码
可以参考一下StackOverflow关于这个问题的讨论:What is the difference between URI, URL and URN?
有个常见Q&A挺好的,希望对你有帮助:)

