URI、 URL 和 URN 的区别

1. URI

URI = Universal Resource Identifier 统一资源标志符

URI采用一种特定语法标识一个资源的字符串。所标识的资源可能是服务器上的一个文件。不过,也可能是一个邮件地址、新闻消息、图书、人名、Internet主机或者任何其它内容。

通过URI找到资源是通过对名称进行标识,这个名称在某命名空间中,并不代表网络地址。

它包含URL和URN。 支持的协议有http、https、ftp、mailto、magnet、telnet、data、file、nfs、gopher、ldap等

java还大量使用了一些非标准的定制模式,如rmi,jar、jndi和doc,来实现各种不同用途。

2. URL

URL = Universal Resource Locator 统一资源定位符

URL唯一地标识一个资源在Internet上的位置。不管用什么方法表示,只要能定位一个资源,就叫URL。

示例:

http://www.jianshu.com/u/1f0067e24ff8 ftp://www.example.com/resource.txt

3. URN

URN = Universal Resource Name 统一资源名称

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

比如 urn:issn:1535-3613 则不属于URL(统一资源定位符),因为根据该标识符无法定位任何到资源。

示例:

urn:issn:1535-3613 (国际标准期刊编号) urn:isbn:9787115318893 (国际标准图书编号) mailto:jijs@jianshu.com (简单邮件传输协议) tel:+1-81-555-1212

URI、URL和URN区别

  1. URI 指的是一个资源
  2. URL 用地址定位一个资源;
  3. URN 用名称定位一个资源。 举个例子: 去寻找一个具体的人(URI);如果用地址:XX省XX市XX区...XX单元XX室的主人 就是URL;如果用身份证号+名字去找就是URN(身份证号+名字 无法确认资源的地址) 。

在Java类库中,URI类不包含任何访问资源的方法,只能标识资源。URL类可以访问资源,可以获取指定资源的流信息。

URL格式

URL格式

1. 协议

指定使用的传输协议,如:http、https、ftp等

2. 登录信息

可选,指用户名和密码作为从服务器端获取资源时必要的登录信息(身份认证)。

3. 服务器地址

可以是域名www.jianshu.com,也可以是ip:192.168.1.10

4. 服务器端口

可选,指定服务器连接的网络端口。,若省略则使用该协议的默认端口。

5. 文件路径

指定服务器上的路径来定位指定的资源。

6. 参数:

可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。

7. 片段:

可选,片段用于指定网络资源中的片断。html页面中片段则是描点。例如一个网页中有多个名词解释,可使用片段可直接定位到某一名词解释(描点的位置)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏白驹过隙

进程同步(一)—— 管道

449100
来自专栏熊二哥

FreeMarker快速入门

虽然当前比较推荐使用thymeleaf替代jsp作为java网页开发的模板语言,不过公司推荐使用freemarker,那就顺势而为,速度学一发,然后迅速开始新项...

26590
来自专栏乐百川的学习频道

做一个自动配置JDK环境变量的Powershell脚本

本来想把这篇的内容包括在我的Powershell系列文章之内的,后来写完之后才想起来,这时候我已经复制粘贴到简书、CSDN和SegmentFault三个地方了。...

26950
来自专栏老码农专栏

ActFramework r1.3.0 - 激动人心的特性一览

13520
来自专栏http://www.cnblogs.com

centos6.5编译安装php7

1.安装依赖软件库:   yum install -y libxml2-devel libtool* curl-devel libjpeg-devel libp...

508110
来自专栏Porschev[钟慰]的专栏

Nodejs学习笔记(九)--- 与Redis的交互(mranney/node_redis)入门

简介和安装 redis简介: 开源高性能key-value存储;采用内存中(in-memory)数据集的方式,也可以采用磁盘存储方式(前者性能高,但数据可能丢失...

41580
来自专栏Java架构

Java程序员必知的并发编程艺术——并发机制的底层原理实现

Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。

8610
来自专栏帘卷西风的专栏

使用Cmake生成跨平台项目编译解决方案

    项目最近有需求在windows下面运行,我花了几周时间将linux的服务器移植到windows下面,目前已经能够正常运行服务器,目前又有了新需求,两边的...

64820
来自专栏SpringBoot 核心技术

SpringCloud组件:Eureka服务注册中心内置的REST节点列表

你有没有考虑过Eureka Client与Eureka Server是通过什么方式进行通讯的? 为什么Client启动成功后Server就会被注册到Serve...

89820
来自专栏乐沙弥的世界

Linux 内核参数优化(for oracle)

    Oracle 不同平台的数据库安装指导为我们部署Oracle提供了一些系统参数设置的建议值,然而建议值是在通用的情况下得出的结论,并非能完全满足不同的需...

19620

扫码关注云+社区

领取腾讯云代金券