【每天5分钟,了解一个知识点】
我们经常听到 URI、URL 和 URN 这三个术语。它们到底是什么呢?让我们一起来揭开它们的神秘面纱。
一、URI:统一资源标志符
URI,全称为 Universal Resource Identifier,即统一资源标志符。它是采用一种特定语法标识一个资源的字符串。这个资源可以是各种各样的东西,可能是服务器上的一个文件,也可能是一个邮件地址、新闻消息、图书、人名、Internet 主机或者任何其它内容。
简单来说,URI 就是通过对名称进行标识来找到资源,这个名称在某命名空间中,但并不代表网络地址。比如,我们可以用一个特定的字符串来表示一本书,这个字符串就是这本书的 URI,但它本身并不能告诉我们这本书在哪里。
URI 支持很多协议,像常见的 http、https、ftp 等,还有一些不太常见的如 mailto、magnet、telnet、data、file、nfs、gopher、ldap 等。此外,Java 还大量使用了一些非标准的定制模式,如 rmi、jar、jndi 和 doc,来实现各种不同用途。
二、URL:统一资源定位符
URL,全称 Universal Resource Locator,即统一资源定位符。它唯一地标识一个资源在 Internet 上的位置。不管用什么方法表示,只要能定位一个资源,就叫 URL。
例如:
http://www.jianshu.com/u/1f0067e24ff8
,这是一个简书用户的 URL。ftp://www.example.com/resource.txt
,这是通过 FTP 协议定位的一个文件的 URL。
三、URN:统一资源名称
URN,全称 Universal Resource Name,即统一资源名称。它命名资源但不指定如何定位资源。就好比只告诉你一个人的姓名,不告诉你这个人在哪。
例如:
urn:issn:1535-3613
,这是国际标准期刊编号,属于 URN,因为根据该标识符无法定位到资源。urn:isbn:9787115318893
,国际标准图书编号,也是 URN。mailto:jijs@jianshu.com
,简单邮件传输协议,同样是 URN。tel:+1-81-555-1212
。
四、URI、URL 和 URN 的区别
URI 指的是一个资源:URI 是一个宽泛的概念,它可以是任何资源的标识符,不管这个资源在哪里,也不管如何找到它。
URL 用地址定位一个资源:URL 就像一个具体的地址,它明确地告诉我们资源在哪里,可以通过这个地址直接找到资源。
URN 用名称定位一个资源:URN 只是给资源起了一个名字,但不能直接通过这个名字找到资源。
举个例子,去寻找一个具体的人可以看作是寻找一个资源(URI)。如果用地址“XX 省 XX 市 XX 区...XX 单元 XX 室的主人”,这就是 URL,因为它明确地给出了这个人的位置。如果用身份证号+名字去找这个人,这就是 URN,因为虽然有了这个人的身份信息,但无法直接确认这个人的地址。
在 Java 类库中,URI 类不包含任何访问资源的方法,只能标识资源。而 URL 类可以访问资源,可以获取指定资源的流信息。
总之,URI、URL 和 URN 都是在网络世界中用来标识资源的重要概念,它们各有特点,在不同的场景中发挥着重要作用。了解它们的区别和用途,有助于我们更好地理解和使用网络资源。
【关联阅读】
关注公众号,回复【Java面试】,获取更多面试资料




