URI、URL和URN的区别

1. URI:统一资源标识符

URI(Uniform Resource Identifier)是统一资源标识符,是用于标识资源的通用术语。
URI采用一种特定语法标识一个资源的字符串。所标识的资源可能是服务器上的一个文件。不过,也可能是一个邮件地址、新闻消息、图书、人名、Internet主机或者任何其它内容。
通过URI找到资源是通过对名称进行标识,这个名称在某命名空间中,并不代表网络地址。
它包含URL和URN。
支持的协议有http、https、ftp、mailto、magnet、telnet、data、file、nfs、gopher、ldap等。
URI的格式为:

scheme:[//authority]path[?query][#fragment]

其中:

  • scheme 指定了访问资源的协议(如 http、ftp 等)。
  • authority 是可选的,通常包括 user:password@host:port。
  • path 指定了资源的路径。
  • query 是可选的,提供额外的参数。
  • fragment 是可选的,用于指定资源的子部分。

2. URL:统一资源定位符

URL(Uniform Resource Locator)是统一资源定位符,是 URI 的一个子集,唯一地标识一个资源在Internet上的位置。不管用什么方法表示,只要能定位一个资源,就叫URL。
两个例子:

https://www.baidu.com
ftp://www.example.com/resource.txt

3. URN:统一资源名称

URN(Uniform Resource Name)是统一资源名称。它命名资源但不指定如何定位资源,比如:只告诉你一个人的姓名,不告诉你这个人在哪。例如:telnet、mailto、news 和 isbn URI 等都是URN。
URN的格式为:

urn:<NID>:<NSS>

其中:

  • urn 是固定的前缀。
  • 是命名空间标识符(Namespace Identifier)。
  • 是命名空间内的字符串(Namespace Specific String)。

4. 三者的区别

  1. URI 指的是一个资源
  2. URL 用地址定位一个资源;
  3. URN 用名称定位一个资源。

举个例子:
去寻找一个具体的人(URI);
如果用地址:XX省XX市XX区…XX单元XX室的主人,就是URL;
如果用身份证号+名字去找就是URN(身份证号+名字,无法确认资源的地址) 。
在Java类库中,URI类不包含任何访问资源的方法,只能标识资源。URL类可以访问资源,可以获取指定资源的流信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值