URI、URL 和 URN 有什么区别? [英] What is the difference between URI, URL and URN?

查看:35
本文介绍了URI、URL 和 URN 有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

URI、URL 和 URN 之间有什么区别?我读过很多网站(甚至维基百科),但我不明白.

URI: 和网址.

bar.html 不是 URN.URN 类似于人名,而 URL 类似于街道地址.URN 定义了某物的身份,而 URL 提供了一个位置.本质上,URN 与 URL 是什么"与在哪里".URN 必须采用这种形式 ::= 骨灰盒:"<NID>:"<NSS> 其中 是命名空间标识符, 是命名空间特定字符串.

换个说法:

  • URL 是标识资源的 URI,还通过描述访问资源的方式来提供定位资源的方法
  • URL 是一个 URI
  • URI 不一定是 URL

我想说让 100% 清楚的唯一事情就是有一个不是 URL 的 URI 示例.我们可以使用 RFC3986 中的示例:

网址:ftp://ftp.is.co.za/rfc/rfc1808.txt网址:http://www.ietf.org/rfc/rfc2396.txtURL: ldap://[2001:db8::7]/c=GB?objectClass?one网址:mailto:John.Doe@example.com网址:新闻:comp.infosystems.www.servers.unix网址:telnet://192.0.2.16:80/URN(不是 URL):urn:oasis:names:specification:docbook:dtd:xml:4.1.2URN(不是 URL):电话:+1-816-555-1212(有争议,见评论)

What's the difference between an URI, URL and URN? I have read a lot of sites (even Wikipedia) but I don't understand it.

URI: http://www.foo.com/bar.html
URL: http://www.foo.com/bar.html
URN: bar.html

Is this correct?

解决方案

A Uniform Resource Identifier (URI) is a string of characters used to identify a name or a resource on the Internet.

A URI identifies a resource either by location, or a name, or both. A URI has two specializations known as URL and URN.

A Uniform Resource Locator (URL) is a subset of the Uniform Resource Identifier (URI) that specifies where an identified resource is available and the mechanism for retrieving it. A URL defines how the resource can be obtained. It does not have to be a HTTP URL (http://), a URL can also start with ftp:// or smb://, specifying the protocol that's used to get the resource.

A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that uses the URN scheme, and does not imply availability of the identified resource. Both URNs (names) and URLs (locators) are URIs, and a particular URI may be both a name and a locator at the same time.

This diagram (source) visualizes the relationship between URI, URN, and URL:

The URNs are part of a larger Internet information architecture which is composed of URNs, URCs and URLs.

bar.html is not a URN. A URN is similar to a person's name, while a URL is like a street address. The URN defines something's identity, while the URL provides a location. Essentially URN vs. URL is "what" vs. "where". A URN has to be of this form <URN> ::= "urn:" <NID> ":" <NSS> where <NID> is the Namespace Identifier, and <NSS> is the Namespace Specific String.

To put it differently:

  • A URL is a URI that identifies a resource and also provides the means of locating the resource by describing the way to access it
  • A URL is a URI
  • A URI is not necessarily a URL

I'd say the only thing left to make it 100% clear would be to have an example of an URI that is not an URL. We can use the examples in RFC3986:

URL: ftp://ftp.is.co.za/rfc/rfc1808.txt
URL: http://www.ietf.org/rfc/rfc2396.txt
URL: ldap://[2001:db8::7]/c=GB?objectClass?one
URL: mailto:John.Doe@example.com
URL: news:comp.infosystems.www.servers.unix
URL: telnet://192.0.2.16:80/
URN (not URL): urn:oasis:names:specification:docbook:dtd:xml:4.1.2
URN (not URL): tel:+1-816-555-1212 (disputed, see comments)

这篇关于URI、URL 和 URN 有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆