本文翻译自The Difference Between URLs and URIs,因水平有限,建议看原文
【注:更多入门教程,看这里】
对于很多技术都有争论,其中web地址是被讨论最多的问题之一。通常表现在,某人提到输入某个“URL”到浏览器中,这时就会有人矫正道:
" 实际上,那个叫做 URI,不叫URL...
作为回应,这个人会想着是否接受他人的异议,还是撸袖子,光膀子来一架。希望能通过本篇文章使人理清其中的细微差异。
URI,URL,URN
对于这三种名词的解释,最好的方式是查看相关内容的出处文献,所以这里摘录了Tim Berners-Lee, et.al. in RFC 3986: Uniform Resource Identifier (URI): Generic Syntax:
(统一资源标示符)Uniform Resource Identifier(URI)是一个标示抽象或具体资源的字符串。
URI可以被视为定位符,名称或两者兼备。统一资源定位符(“Uniform Resource Locator” URL)是一种URI,它标识一个互联网资源,并指定了获取该资源的方法(例如:它的网络“位置”)。
URI可被视为定位符(URL),名称(URN)或两者兼备。统一资源名(URN)如同一个人的名称,而统一资源定位符(URL)代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。
那么我们得到以下一些信息:
- 首先(就像图上显示的那样)URL是一种URI
。那么,以后如果有人告诉你URL不是URI,你就可以高傲的回答他,You are wrong。但是这不意味这所有的URIs都是URLs。就像所有的蝴蝶都会飞,但你不能说所有会飞的都是蝴蝶一样。 - 一个URI变成URL的方式是包含“获取方法”,或者“网络位置”, 例如,http:// 或者 ftp://
- URN是一个唯一的标示,唯一的名字。
接下来让我们看下RFC的一些URIs的示例:
-
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:John.Doe@example.com
(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。什么样的是URL?那些指明了获取方式的。
总结
我们就试着回答下文章开头的讨论:
哪一个名词更适合表述web地址呢?
基于作者对于相关内容和RFC的阅读理解,URI更适合描述web地址。
为什么?
因为我们通常使用URI的形式不等同于URL。举个例子,你被告知你需要的资源在 files.hp.com 。这是一个URI,不是URL---因为系统可以通过多种方式获取该资源。
你可以想像,通过 http://files.hp.com 获取的内容一定不同于 ftp://files.hp.com 。这种类似的事情只会越来越普遍,想想庞大的Google提供的多样的服务吧。
所以,如果你使用URI你永远在技术上是正确的,但URL可能不会。最后,有明显的议论“URL”或成为过时的。所以URI在准确度上是相当安全的选择。
尽管如此,Dafydd Stuttard持有不同的观点,这些术语含义非常相似,任何想要区分对待的都有些卖弄学问的嫌疑。在The Web Application Hacker’s Handbook 书中,它描述到:
对于一个URL正确的术语是URI(或统一资源标识符),但这术语只会被那些卖弄的人用在形式化的文章中。
确实如此。
[ NOTE: If someone actually gives a full URL then the more correct technical term is still URL, but I think I know what he meant. ]
最后的话
If you don’t mind being “that guy”, URI is probably the more accurate term to use. But if you are in the linguist / “use what’s understood” camp, feel free to go with URL.
Notes and references
- RFC 2396.
- Wikipedia | URI.
- An explanation of the differences from damnhandy.com.
- Another interesting point is the fact that Google Chrome is now purposely dropping the protocol from the display within the browser–which is in effect visually turning URLs into URIs.