URI和URL的比较和理解
一、简单区分
URI 是 Uniform Resource Identifier(统一资源标识符) 的缩写。
URL 是 Uniform Resource Locator (统一资源定位符)的缩写 。
URI 用字符串标识某一互联网资源,而 URL 表示资源的地点(互联网上所处的位置)。
可见,URL 是 URI 的子集。
形象的栗子:
- 统一资源标识符
URI
就像一个人的身份证号- 身份证号123456
- 通过这个字符串可以确定且仅能确定一个人
- 统一资源定位符
URL
是像网购的地址+姓名- 住址协议://地球/中国/北京市/海淀区/某大学/某宿舍楼/某寝室/张三
- 这个字符串同样标识出了唯一一个人,起到了URI的作用,同时还可以告诉我们怎样找到这个人
二、
URI 是 Uniform Resource Identifier 的缩写。RFC2396 分别对这 3 个单词进行了如下定义。
-
Uniform
规定统一的格式可方便处理多种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式。另外,加入新增的协议方案(如http: 或 ftp:)也更容易。
-
Resource
资源的定义是“可标识的任何东西”。除了文档文件、图像或服务(例如当天的天气预报)等能够区别于其他类型的,全都可作为资源。另外,资源不仅可以是单一的,也可以是多数的集合体。
-
Identifier
表示可标识的对象。也称为标识符。
我们知道URL是URI的子集,以下都是正确的 URI,那么哪些也是 URL呢?
ftp://ftp.is.co.za/rfc/rfc1808.txt
http://www.ietf.org/rfc/rfc2396.txt
ldap://[2001:db8::7]/c=GB?objectClass?one
mailto:John.Doe@example.com
news:comp.infosystems.www.servers.unix
telnet://192.0.2.16:80/
tel:+1-816-555-1212
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
答案是除了最后两个,都是URL。
为什么呢?
1、 URI 就是由某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称。所有字符串均满足URI定义,都是正确的 URI。
2、 URL 的主要格式为 <协议>:<协议特定部分>
常见协议有:
- ftp:文件传输协议, File Transfer Protocol
- http:超文本传输协议,HyperText Transfer Protocol
- mailto:电子邮件
- file:特定主机文件名
协议后面跟随冒号,特定协议部分的格式为:
- <用户>:<密码>@<主机>:<端口号>/<路径>
- <域名>/<路径>
依据URL格式定义,最后两个字符串不是URL