欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

URI、 URL 和 URN 的区别 有大用

URI、 URL 和 URN 的区别

       
jijs
字数 895阅读 4,380            


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页面中片段则是描点。例如一个网页中有多个名词解释,可使用片段可直接定位到某一名词解释(描点的位置)。

想了解更多精彩内容请关注我的公众号    

来自 https://www.jianshu.com/p/09ac6fc0f8cb    


   

请问URI和URL有什么区别?        

 我来答 
分享
 举报
壁纸微甜
推荐于2019-08-03 · TA获得超过5080个赞                
关注                

1、含义不同

URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。

URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。

2、位置不同

绝对URL(absolute URL)显示文件的完整路径,这意味着绝对URL本身所在的位置与被引用的实际文件的位置无关。

绝对的URI指以scheme(后面跟着冒号)开头的URI,你可以把绝对的URI看作是以某种方式引用某种资源,而这种方式对标识符出现的环境没有依赖。如果使用文件系统作类比,绝对的URI类似于从根目录开始的某个文件的径。

                       

3、表现形式不同

URL:目前URI的最普遍形式就是无处不在的URL或统一资源定位器。

URI是以某种统一的(标准化的)方式标识资源的简单字符串。

参考资料来源:百度百科-URL百度百科-URI
                       

 39                               
 评论 
分享
 举报收起                        
科普小星球                     
高粉答主

推荐于2019-10-19 · 学生                    
关注                    

1、URI是以一种抽象的,高层次概念定义统一资源标识,而URL则是具体的资源标识的方式。URL是一种URI。

2、格式不同:URL的格式一般由下列三部分组成:第一部分是协议(或称为服务方式);第二部分是存有该资源的主机IP地址(有时也包括端口号);第三部分是主机资源的具体地址。URI一般由三部分组成:访问资源的命名机制;存放资源的主机名;资源自身的名称,由路径表示。

3、在Java的URI中,一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则。而URL类则不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的,schema(protocol)必须被指定。

URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。

因此,URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,所以,是绝对的,而通常说的relative URL,则是针对另一个absolute URL,本质上还是绝对的。

                           

扩展资料   

当我们替代web地址的时候,URI和URL中,URI更准确。我们经常使用的URI不是严格技术意义上的URL。例如:你需要的文件在files.hp.com. 这是URI,但不是URL--系统可能会对很多协议和端口都做出正确的反应。                        

http://blog.csdn.net/koflance 是个URL,通过这个网址可以告诉我们用HTTP协议访问,而isbn:0-395-36341-1是RUN,一个国际标准书号,可以唯一确定哪本书。目前HTTP规范已经不使用URL,而是使用URI了,所以URI更具有前景。                        

来自 https://zhidao.baidu.com/question/68016373.html                                                          


                       

image.png     
                       


   



URL和URI之间的区别是什么?本篇文章就给大家介绍URL和URI分别是什么?有什么用?让大家了解URL和URI之间的区别,希望对你们有所帮助。

       

 

打造全网web前端全栈资料库(总目录)看完学的更快,掌握的更加牢固,你值得拥有(持续更新)        

URL是什么?有什么用?        

URL(统一资源定位符)是Internet上资源的地址,可以定义为引用地址的字符串,用于指示资源的位置以及用于访问它的协议。

URL是在网络上定位资源的最普遍使用的方式,它提供了一种通过描述其网络位置或主要访问机制来检索物理位置的表示的方法。

URL中描述了协议,该URL用于检索资源和资源名称。如果资源是Web类型资源,则URL在开头包含http / https。同样,如果资源是文件,则以ftp开头,如果资源是电子邮件地址,则以mailto开头。

URL包含以下信息:        

1、用于访问资源的协议

2、服务器的位置(无论是通过IP地址还是域名)

3、服务器上的端口号(可选)

4、资源在服务器目录结构中的位置

5、片段标识符(可选)

例:

 

       

如上图所示,其中第一部分用于协议,部分的其余部分用于由域名或程序名称组成的资源。

URI是什么?有什么用?        

URI(统一资源标识符)是标识逻辑或物理资源的字符序列,与URL类似,也是一串字符。通过使用位置,名称或两者来标识Internet上的资源;它允许统一识别资源。

有两种类型的URI,统一资源标识符(URL)和统一资源名称(URN)。

       

任何URI的通用形式都是:

1scheme:[// [user:password @] host [:port]] [/] path [?查询] [#片段]

Scheme(方案):该方案列出了具体语法和URI的任何相关协议。方案不区分大小写,后跟冒号。理想情况下,URI方案应该在互联网号码分配机构(IANA)注册,但也可以使用非注册方案。

权限组件:权限组件由多个部分组成:可选的身份验证部分,主机(由注册名称或IP地址组成) , 以及可选的端口号。身份验证部分包含用户名和密码,用冒号分隔,后跟at(@)符号。在@之后是主机名,然后是冒号,然后是一个端口号。请务必注意,IPv4地址必须采用点十进制表示法,并且IPv6地址必须括在括号中。

查询(可选):查询包含一串非分层数据。虽然语法没有明确定义,但通常是由分隔符分隔的属性值对序列,例如&符号或分号。查询通过问号与前一部分分开。

片段(可选):片段包含片段标识符,该标识符为辅助资源提供方向。

URL和URI之间的主要区别        

URL是统一资源定位器,用于标识资源;URI(统一资源标识符)提供了更简单和可扩展的标识资源的方法。URL是URI的子集,下面我们就来看看一下URL和URI的主要区别是什么。

1、作用的区别        

URL(统一资源定位符)主要用于链接网页,网页组件或网页上的程序,借助访问方法(http,ftp,mailto等协议)来检索位置资源。

URI(统一资源标识符)用于定义项目的标识,此处单词标识符表示无论使用的方法是什么(URL或URN),都要将一个资源与其他资源区分开来。

2、可以说URL是URI(URL是URI的子集),但URI永远不能是URL。        

3、协议区别        

URL指定要使用的协议类型,而URI不涉及协议规范。

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

以上就是URL和URI之间的区别是什么的详细内容,更多请关注我!!!

来自 https://blog.csdn.net/lin123_00/article/details/106149842        


       

URI与URL区别        

URL 与 URI

很多人会混淆这两个名词。

URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符)。

URI:(Uniform Resource Identifier 的缩写,统一资源标识符)(代表一种标准)。

关系:

URI 属于 URL 更高层次的抽象,一种字符串文本标准。

就是说,URI 属于父类,而 URL 属于 URI 的子类。URL 是 URI 的一个子集。

二者的区别在于,URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源(http://)。

               

URI 示例

  大家把浏览器地址栏里访问网站的地址认为是URL就好了,也就是以HTTP/HTTPS开头的URI子集。    

 

端口 与 URL标准格式

何为端口?端口(Port),相当于一种数据的传输通道。用于接受某些数据,然后传输给相应的服务,而电脑将这些数据处理后,再将相应的回复通过开启的端口传给对方。

端口的作用:因为 IP 地址与网络服务的关系是一对多的关系。所以实际上因特网上是通过 IP 地址加上端口号来区分不同的服务的。

端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。

URL 标准格式

通常而言,我们所熟悉的 URL 的常见定义格式为:

                    scheme://host[:port#]/path/.../[;url-params][?query-string][#anchor]
               
复制代码                        
scheme //有我们很熟悉的http、https、ftp以及著名的ed2k,迅雷的thunder等。
host   //HTTP服务器的IP地址或者域名
port#  //HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如tomcat的默认端口是8080 http://localhost:8080/
path   //访问资源的路径
url-params  //所带参数 
query-string    //发送给http服务器的数据
anchor //锚点定位
                       
复制代码                        

利用 a 标签自动解析 url

开发当中一个很常见的场景是,需要从 URL 中提取一些需要的元素,譬如 host 、 请求参数等等。

通常的做法是写正则去匹配相应的字段,但是这里参考James 的 blog,原理是动态创建一个 a 标签,利用浏览器的一些原生方法及一些正则(为了健壮性正则还是要的),完美解析 URL ,获取我们想要的任意一个部分。

代码如下:

复制代码                        
// This function creates a new anchor element and uses location
// properties (inherent) to get the desired URL data. Some String
// operations are used (to normalize results across browsers).

function parseURL(url) {
    var a =  document.createElement('a');
    a.href = url;
    return {
        source: url,
        protocol: a.protocol.replace(':',''),
        host: a.hostname,
        port: a.port,
        query: a.search,
        params: (function(){
            var ret = {},
                seg = a.search.replace(/^\?/,'').split('&'),
                len = seg.length, i = 0, s;
            for (;i<len;i++) {
                if (!seg[i]) { continue; }
                s = seg[i].split('=');
                ret[s[0]] = s[1];
            }
            return ret;
        })(),
        file: (a.pathname.match(/([^/?#]+)$/i) || [,''])[1],
        hash: a.hash.replace('#',''),
        path: a.pathname.replace(/^([^/])/,'/$1'),
        relative: (a.href.match(/tps?:\/[^/]+(.+)/) || [,''])[1],
        segments: a.pathname.replace(/^\//,'').split('/')
    };
}
                       
复制代码                        

 

Usage 使用方法:

复制代码                        
var myURL = parseURL('http://abc.com:8080/dir/index.html?id=255&amp;m=hello#top');

myURL.file;     // = 'index.html'
myURL.hash;     // = 'top'
myURL.host;     // = 'abc.com'
myURL.query;    // = '?id=255&amp;m=hello'
myURL.params;   // = Object = { id: 255, m: hello }
myURL.path;     // = '/dir/index.html'
myURL.segments; // = Array = ['dir', 'index.html']
myURL.port;     // = '8080'
myURL.protocol; // = 'http'
myURL.source;   // = 'http://abc.com:8080/dir/index.html?id=255
                       
复制代码                        

 

利用上述方法,即可解析得到 URL 的任意部分。

 

参考:https://github.com/chokcoco/cnblogsArticle/issues/6

来自  https://www.cnblogs.com/haore147/p/5507662.html        


       

HTTP 协议中 URI 和 URL 有什么区别?

HTTP = Hyper Text Transfer Protocol
URI = Universal Resource Identifier
URL = Universal Resource Locator

类似问题:URL 和 URI 有什么不同? - 前端开发
                                   
关注者
541                                            
被浏览
289,785                                            

25 个回答

                                                   

统一资源标志符URI就是在某一规则下能把一个资源独一无二地标识出来。
拿人做例子,假设这个世界上所有人的名字都不能重复,那么名字就是URI的一个实例,通过名字这个字符串就可以标识出唯一的一个人。
现实当中名字当然是会重复的,所以身份证号才是URI,通过身份证号能让我们能且仅能确定一个人。
那统一资源定位符URL是什么呢。也拿人做例子然后跟HTTP的URL做类比,就可以有:

动物住址协议://地球/中国/浙江省/杭州市/西湖区/某大学/14号宿舍楼/525号寝/张三.人

可以看到,这个字符串同样标识出了唯一的一个人,起到了URI的作用,所以URL是URI的子集。URL是以描述人的位置来唯一确定一个人的。
在上文我们用身份证号也可以唯一确定一个人。对于这个在杭州的张三,我们也可以用:

身份证号:123456789                                                        

来标识他。
所以不论是用定位的方式还是用编号的方式,我们都可以唯一确定一个人,都是URl的一种实现,而URL就是用定位的方式实现的URI。

回到Web上,假设所有的Html文档都有唯一的编号,记作html:xxxxx,xxxxx是一串数字,即Html文档的身份证号码,这个能唯一标识一个Html文档,那么这个号码就是一个URI。
而URL则通过描述是哪个主机上哪个路径上的文件来唯一确定一个资源,也就是定位的方式来实现的URI。
对于现在网址我更倾向于叫它URL,毕竟它提供了资源的位置信息,如果有一天网址通过号码来标识变成了http://741236985.html,那感觉叫成URI更为合适,不过这样子的话还得想办法找到这个资源咯…
                                                   
发布于 2017-03-29                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   
URI 在于I(Identifier)是统一资源标示符,可以唯一标识一个资源。
URL在于Locater,一般来说(URL)统一资源定位符,可以提供找到该资源的路径,比如http://www.zhihu.com/question/21950864,但URL又是URI,因为它可以标识一个资源,所以URL又是URI的子集。
举个是个URI但不是URL的例子:urn:isbn:0-486-27557-4,这个是一本书的isbn,可以唯一标识这本书,更确切说这个是URN。
总的来说,locators are also identifiers, so every URL is also a URI, but there are URIs which are not URLs.
                                                   
编辑于 2014-08-06                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   

从JDK1.5开始

http://java.net包对统一资源定位符(uniform resource locator URL)

和统一资源标识符(uniform resource identifier URI)

作了非常明确的区分。

(1)URI是个纯粹的句法结构,用于指定标识Web资源的字符串的各个不同部分。URL是URI的一个特例,它包含了定位Web资源的足够信息。其他URI,比如

mailtocay@horstman.com
                                                       

则不属于定位符,因为根据该标识符无法定位任何资源。

URI 是统一资源标识符,而 URL 是统一资源定位符。因此,笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。

URI 和 URL 概念上的不同反映在此类和 URL 类的不同中。

此类的实例代表由 RFC 2396 定义的语法意义上的一个 URI 引用。URI 可以是绝对的,也可以是相对的。对 URI 字符串按照一般语法进行解析,不考虑它所指定的方案(如果有)不对主机(如果有)执行查找,也不构造依赖于方案的流处理程序。相等性、哈希计算以及比较都严格地根据实例的字符内容进行定义。换句话说,一个 URI 实例和一个支持语法意义上的、依赖于方案的比较、规范化、解析和相对化计算的结构化字符串差不多。                                                        


                                                       

作为对照,URL 类的实例代表了 URL 的语法组成部分以及访问它描述的资源所需的信息。URL 必须是绝对的,即它必须始终指定一个方案。URL 字符串按照其方案进行解析。通常会为 URL 建立一个流处理程序,实际上无法为未提供处理程序的方案创建一个 URL 实例。相等性和哈希计算依赖于方案和主机的 Internet 地址(如果有);没有定义比较。换句话说,URL 是一个结构化字符串,它支持解析的语法运算以及查找主机和打开到指定资源的连接之类的网络 I/O 操作。                                                        

在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析。                                                        

相反的是,URL类可以打开一个到达资源的流。                                                        

因此URL类只能作用于那些 Java类库知道该如何处理的模式,

例如http:,https:,ftp:,本地文件系统(file:),和Jar文件(jar:)。


                                                       

URI—Uniform Resource Identifier通用资源标志符
Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的
URI一般由三部组成
①访问资源的命名机制
②存放资源的主机名
③资源自身的名称,由路径表示,着重强调于资源。


                                                       

URL—Uniform Resource Location统一资源定位符
URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
URL一般由三部组成
①协议(或称为服务方式)
②存有该资源的主机IP地址(有时也包括端口号)
③主机资源的具体地址。如目录和文件名等


                                                       


                                                       


                                                       

应用:

一 、 URI                                                        

比如在JDK中sun公司提供的简易HttpServer实现中

public void handle(final HttpExchange exchange)throws Exception                                                        

方法中,根据exchange对象可以拿到访问Http请求的URI对象,                                                        

ps:                                                        

http://127.0.0.1:8080/cmd_helloworld/?name=guowuxin
                                                       


                                                       

此时URI uri = exchange.getRequestURI();                                                        

通过uri可以拿到连接的各部分内容:                                                        

uri.getPath() --------------------> /cmd_helloworld 注意有斜杠                                                        

uri.getQuery()----------------------> name=guowuxin                                                        


                                                       

当然如果是post请求,请求内容在请求body当中                                                        


                                                       

二、 URL                                                        

上面说了,URL 是一个结构化字符串,它支持解析的语法运算以及查找主机和打开到指定资源的连接之类的网络 I/O 操作。                                                        

重要的,URL不仅仅可以进行语法解析运算,还可以查找主机,并且打开指定资源的连接进行网络IO操作。


                                                       

介绍URL类的两个重要方法

openStream()

打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。
                                                       

openConnection()

返回一个 URLConnection 对象,它表示到 URL
所引用的远程对象的连接。
                                                       

 URL url = new URL("http://www.baidu.com");
 InputStream in = url.openStream();
 ByteArrayOutputStream output = new ByteArrayOutputStream();
 byte[] buffer = new byte[1024];
 int len = -1;
 while ((len = in.read(buffer)) != -1)
 {
    output.write(buffer, 0, len);
 }
 System.err.println(new String(output.toByteArray()));
                                                       

上面的程序通过openStream()方法获取访问URL获取的输入流,从而读取响应内容,ps响应内容是过滤掉响应头了的。


                                                       

openConnection()方法就可以getOutputStream()以及 getInputStream()

可以更灵活的进行request和response

                                                   
编辑于 2019-02-15                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
logo扇贝编程                                                    
                                               
广告
                                                       
知乎广告介绍                                                        

零基础编程入门成本究竟有多低?

零基础编程入门体验课,涵盖前端、Java、Python 3个热门方向,以案例为导向学习编程基础知识,4天入门快速上手,3.9元零基础轻松入门。查看详情                                                
                                           
                                                   

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


URL = Uniform Resource Locator 统一资源定位符
URN = Uniform Resource Name 统一资源名称                                                        


                                                       

大白话,就是URI是抽象的定义,不管用什么方法表示,只要能定位一个资源,就叫URI,本来设想的的使用两种方法定位:1,URL,用地址定位;2,URN 用名称定位。

举个例子:去村子找个具体的人(URI),如果用地址:某村多少号房子第几间房的主人 就是URL, 如果用身份证号+名字 去找就是URN了。

结果就是 目前WEB上就URL流行开了,平常见得URI 基本都是URL。

                                                   
编辑于 2019-11-11                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   
原来uri包括url和urn,后来urn没流行起来,导致几乎目前所有的uri都是url                                                    
发布于 2014-10-08                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   
URI可被视为定位符(URL),名称(URN)或两者兼备。统一资源名(URN)如同一个人的名称,而统一资源定位符(URL)代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。

URL是一种URI,它标识一个互联网资源,并指定对其进行操作或获取该资源的方法。可能通过对主要访问手段的描述,也可能通过网络“位置”进行标识。例如,http://www.wikipedia.org/这个URL,标识一个特定资源(首页)并表示该资源的某种形式(例如以编码字符表示的,首页的HTML代码)是可以通过HTTP协议从http://www.wikipedia.org这个网络主机获得的。URN是基于某命名空间通过名称指定资源的URI。人们可以通过URN来指出某个资源,而无需指出其位置和获得方式。资源无需是基于互联网的。例如,URN urn:isbn:0-395-36341-1 指定标识系统(即国际标准书号ISBN)和某资源在该系统中的唯一表示的URI。它可以允许人们在不指出其位置和获得方式的情况下谈论这本书。

引用自https://zh.wikipedia.org/wiki/%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E6%A0%87%E5%BF%97%E7%AC%A6                                                        

简单理解是这样的:
理解URI和URL的区别,我们引入URN这个概念。

URI = Universal Resource Identifier 统一资源标志符
URL = Universal Resource Locator 统一资源定位符
URN = Universal Resource Name 统一资源名称                                                        

这三者的关系如下图:
                                                       
                                                       
也就是说,URI分为三种,URL or URN or (URL and URI)
URL代表资源的路径地址,而URI代表资源的名称。
通过URL找到资源是对网络位置进行标识,如:
                                                       通过URI找到资源是通过对名称进行标识,这个名称在某命名空间中,并不代表网络地址,如:
                                                       
  • urn:issn:1535-3613

                                                   
编辑于 2016-03-09                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   

从鄙人程序员的角度理解,URI属于URL更高层次的抽象,一种字符串文本标准。
                                                       

就是说,URI属于父类,而URL属于URI的子类。URL是URI的一个子集。

在《HTTP权威指南》一书中,对于URI的定义是:统一资源标识符;对于URL的定义是:统一资源定位符。

二者的区别在于,URI表示请求服务器的路径,定义这么一个资源。而URL同时说明要如何访问这个资源(http://)。

例如,一个URL通常包括三部分:

方案部分(scheme):http://

地址部分:CEALER | 一些瞬间、一些回忆、一些经典、一些原创、一些愤怒、一些感动                                                        

资源部分:/1.png

而在C#中,URL类属于System.Security.Policy命名空间,Uri属于System。在MSDN对Url类的备注中,能更好的说明Url与Uri的区别:

Url 证据的存在将在授予集内生成 UrlIdentityPermission。如果有对 UrlIdentityPermission 的 Demand,则与 Url 证据对应的 UrlIdentityPermission 将与请求的权限进行比较。

考虑完整的 URL,包括协议(HTTP、HTTPS、FTP)和文件。例如,Microsoft Home Page 就是一个完整的 URL。

URL 可以精确匹配,也可在最后一个位置使用通配符来匹配。例如,Microsoft Home Page* 就是一个含通配符的 URL。

而Uri类在实例化的时候,可以指定为绝对路径,相对路径,但可以不指定到具体的某个资源。

那么我理解的二者的区别就是:

URI可以表示一个域,也可以表示一个资源。

URL只能表示一个资源。
                                                       


同样的,URN(统一资源名称)也是URI的一个子集,目前没有大规模运用。

                                                       
PS:

URI是一个字符串格式规范 并没有指定它的用途
URL是资源定位的规范 包括网址 ftp服务器 文件路径
                                                       
                                                   
编辑于 2016-08-30                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   

Mozilla官方解释的特别好。

标识互联网上的内容                                                        

                                                   
发布于 2017-10-13                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   

通过例举的方式可以生动形象的诠释两者之间的关系与区别,这里将从两者的组成与所代表的含义来更好的帮助我们理解 URL 和 URI 的区别。

URI 的组成

URI(Uniform Resource Identifier)称为统一资源标识符,是一个用于标识某一互联网资源名称的字符串,一个完整的 URI,由四个主要的部分构成:

                                                       

scheme :表示协议,如 http,ftp 等。

authority:通过 :// 来和 scheme 区分,由字面意思看表示“认证”,“鉴权”的含义,这里引用网上的一句话:

This authority component is typically defined by an Internet-based server or a scheme-specific registry of naming authorities.

这个“认证”部分,由一个基于 Internet 的服务器定义或者由命名机关注册登记(和具体的协议有关)。而常见的 authority 则是:“由基于 Internet 的服务器定义”,其格式如下:

<userinfo>@<host>:<port>

  • userinfo:这个域用于填写一些用户相关的信息,比如可能会写 “user:password”,当然这是不被建议的。

  • 后面的 <host>:<port> 则是熟知的服务器地址,host 可以是域名或对应的 IP 地址。

  • port 表示端口,为可选项,如果不填写,会使用默认端口(也是和协议相关,比如 http 协议默认端口是 80)。

path:在 scheme 和 authority 确定下来的情况下标识资源,path 由几个段组成,每个段用 / 来分隔。注意:path 不等同于文件系统定义的路径。

query:查询串(或者说参数串),用 ? 和 path 区分开来,其具体的含义由这个具体资源来定义。

URL的组成

URL(Uniform Resource Locator),是互联网中的一个核心概念,官方名称为统一资源定位符。它就是一个由网站开发者给资源在互联网上分配的地址,一般来说,每个有效的 URL 都指向单独的一个资源,这个资源可以是HTML 页面、CSS 文档,又或者是一幅图像等。

一个 URL 的组成包括必须的和可选的两部分。下面我们来看下 URL 的具体组成部分:

                                                       

上图就是完整的 URL 结构展示。很多时候里面的某些部分是用不到的,例如 user information。作为参考,我们来看一下又拍云存储的 URL 地址:

http://www.upyun.com/products/file-storage                                                        

  • http:// ,请求协议(scheme),指定了浏览器需要使用何种协议来与目标服务器进行通讯。(常见的协议有 HTTP 和 HTTPS)

  • www.upyun.com,域名(host),表明请求的资源所在的服务器地址。

  • /products/file-storage ,资源路径地址(path),服务器通过路径来确认访问资源在服务器上的哪个位置。

常见的 URL 地址主要由这三个部分组成,其余部分可根据开发的需要进行自定义。

从组成部分可以看出两者都定义了资源是什么,但 URL 还定义了该如何访问到资源,URI 的组成部分中包含了 URL,URL 是一种具体的 URI,属于 URI 的子集,它不仅唯一标识资源,而且还提供了定位该资源的信息,是绝对的,所以 URL 一定是 URI,而 URI 不一定是 URL。

推荐阅读:                                                        

大侠稍等!URL 中为何出现奇怪的字符www.upyun.com图标浅谈 URI 及其转义www.upyun.com                                                        


                                                       

                                                   
编辑于 01-28                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   
有篇感觉还不错的文章,我翻译了下,有兴趣的可以看下:[译]URL和URI的区别                                                    
发布于 2015-08-12                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   

URI字段:指浏览器输入域名/开始后的内容,如http://www.abc.com.cn/aaa,URI字段为/aaa;

HOST字段:指浏览器输入地址http://之后URI/之前的内容,如http://www.abc.com.cn/cba/aaa.php HOST字段为www.abc.com                                                        

URL-HOST=URI.(●'◡'●)

                                                   
发布于 2018-01-31                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   

参考了                                                         

 的答案,又看了一些资料,自己总结了一下,希望有帮助吧。


                                                       

  1. 画图说明

  2. URI(Uniform Resource Identifier,统一资源标识符):一个资源的唯一标识,可以是一个名字、一串编号、一个URL(说明URL是一种URI)......

  3. URL(Uniform Resource Locator,统一资源定位符):一个资源的网络地址

    1. 格式一般是:网络协议://域名/子目录[/子目录.....]/文件名[.文件名后缀]

    2. 例子

      1. https://www.zhihu.com/question/21950864

      2. http://example.com/mypage.html

      3. ftp://example.com/download.zip

      4. mailto:user@example.com

      5. file:///home/user/file.txt

      6. tel:1-888-555-5555

      7. http://example.com/resource?fo

      8. /other/link.html (相对URL,仅在另一个URL的语境下有用)

  4. 两者关系

    1. URI负责识别,URL负责定位

    2. URL是URI的子集(URL一定是URI,但URI不一定是URL)

      1. URI是一个唯一字符串

      2. URL是一个表示位置(或地址)的唯一字符串

  5. 举例说明

    1. 我要找到这个骚扰如花的油腻大叔!谁能提供他的信息?

    2. 普通URI的告知方式

      1. 他的身份证号是442736199706268734 或者

      2. 这是他的指纹图案 或者

      3. 这是他的DNA检测报告

    3. URL(一种特殊的URI)的告知方式

      1. 动物住址协议://地球/中国/广东省/深圳市/南山区/XX小区/X栋X座24楼/5号座位/陈狗蛋.人(例子参考:HTTP 协议中 URI 和 URL 有什么区别?

  6. 引申领域:URI还有其他种类,类似于URN、URC......这些平时接触不多,有兴趣的可以自己另外寻找文章了解一下

  7. 画图说明

                                                       


                                                       

编辑于 2019-12-11                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
logo扇贝编程                                                    
                                               
广告
                                                       
知乎广告介绍                                                        

零基础编程入门成本究竟有多低?

零基础编程入门体验课,涵盖前端、Java、Python 3个热门方向,以案例为导向学习编程基础知识,4天入门快速上手,3.9元零基础轻松入门。查看详情                                                
                                           
                                                   
URI :树
URL:杨树
--or--
URI :花
URL:桂花
                                                   
发布于 2016-11-24                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   

详细规范:https://tools.ietf.org/html/rfc3986                                                        

                                                   
编辑于 2017-08-29                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   

1.URL是 包含URI的

2.URL就是整个URL地址

3.比如:localhost:8443//servlet/hi?name=kitty&age=3 整个链接就是URL,servlet/hi部分是URI

                                                   
编辑于 2017-08-22                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
                                                   
URI可被视为定位符(URL),名称(URN)或两者兼备。
                                                       
统一资源标识符(URI)用于标识某一互联网资源,而统一资源定位符(URL)表示资源的地点(互联网上所处的位置)。所以 URL 是 URI 的子集。
                                                   
编辑于 2015-10-27                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续

我的理解

在某一上下文环境中(通常是万维网,或在自己电脑中)能够标识出某一资源的位置为 uri ,如上面回答中的(url & uri)合体,以及为什么web中getUri 是/xxx(上下文已经是某台具体的计算机了,classpath)


                                                       

url 重心放在定位 需要通过具体某种方式定位到目标资源(上下问环境) 如http://host找到某计算机的资源 

urn 很容易理解..

                                                   
编辑于 2018-04-23                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续

这个问题很简单,直接参考下最原始的 URI 官方文档中的一段说明吧: https://tools.ietf.org/html/rfc1630                                                        

URIs

This document defines a way to encapsulate a name in any
registered name space, and label it with the the name space,
producing a member of the universal set. Such an encoded and
labelled member of this set is known as a Universal Resource
Identifier, or URI.

The universal syntax allows access of objects available using
existing protocols, and may be extended with technology.

The specification of the URI syntax does not imply anything about
the properties of names and addresses in the various name spaces
which are mapped onto the set of URI strings. The properties
follow from the specifications of the protocols and the associated
usage conventions for each scheme.

URLs

For existing Internet access protocols, it is necessary in most
cases to define the encoding of the access algorithm into
something concise enough to be termed address. URIs which refer
to objects accessed with existing protocols are known as "Uniform
Resource Locators" (URLs) and are listed here as used in WWW, but
to be formally defined in a separate document.

URNs

There is currently a drive to define a space of more persistent
names than any URLs. These "Uniform Resource Names" are the
subject of an IETF working group's discussions. (See Sollins and
Masinter, Functional Specifications for URNs, circulated
informally.)

The URI syntax and URL forms have been in widespread use by
World-Wide Web software since 1990.


                                                       

结论就是:URI 定义了一个抽象的统一资源的表示规则,URL 是 URL 针对已经存在的协议的一种具体应用.

同时补充一点的是,URN 定义了 URI 中的各个元素的命名规则。


                                                       

所以从直观感受来说是: URI > URL > URN。

                                                   
编辑于 2018-03-27                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续

你在浏览器输入一个网址,协议啊,域名,资源的路径,敲下回车,服务器反馈一个页面给你,这个页面叫资源,这种方式叫URL,还有种获取资源方式叫URN,即这个资源有个唯一识别的名字,就如你的省份证号码,独一无二……那URI呢?URL或URN实现了URI,URL更具体【如何找到资源的具体,注重过程】,URI更抽象【获取资源的抽象,注重结果】

                                                   
发布于 2017-06-17                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续

URI是指在某个规则下让某个资源能被唯一标识出来,

而URL则是URI的子集, 其用定位的方式(规则)将某个资源唯一的标识出来.

如最高赞的, 通过地址标记张三

动物住址协议://地球/中国/浙江省/杭州市/西湖区/某大学/14号宿舍楼/525号寝/张三                                                        

这个即是URI又是URL, 而身份证号

身份证协议://123456                                                        

这个则不是URL因为我不能通过身份证协议和身份证号找到张三

我的理解是这样, 如有错误请指正
                                                   
编辑于 2020-11-09                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续


                                                       

                                                       


                                                       

                                                   
发布于 2020-10-15                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续
logo扇贝编程                                                    
                                               
广告
                                                       
知乎广告介绍                                                        

零基础编程入门成本究竟有多低?

零基础编程入门体验课,涵盖前端、Java、Python 3个热门方向,以案例为导向学习编程基础知识,4天入门快速上手,3.9元零基础轻松入门。查看详情                                                
                                           

http URL 是 RFC2616 及之前版本中的描述,最新的 HTTP /1.1 标准(RFC7230)中,已经没有 URL 的概念了,首行中用的是基于标准 URI(RFC3986)的 http URI。

http://tools.ietf.org/html/rfc7230
                                                   
发布于 2016-01-16                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续


                                                       

                                                           
URN和URL是URI的子集

URI就是用来标识互联网中资源的字符串,其有两种实现形式

一是URL,这是目前最普遍得形式,其一缺点就是URL所对应资源的位置发生变化会导致URL失效。

二是URN,是由于URL的缺点才延申出这种技术,该技术理论很好,但实现起来困难很多;给互联网中每个资源命名一个唯一字符串,并且字符串所对应该资源的URL发生变化的时候也能及时更替最新URL,这时就需要一个字符串解析器,由于互联网资源如此庞大,所需这个解析器要更精密的软件支持,所以URN流行还需要一定时间。

                                                   
发布于 2020-08-02                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续

URI抽象

URL具体


                                                       

不应被体重定义快乐,美国肥妹靠健身变阳光美女jianshenkfit.club图标                                                        

http://jianshenkfit.club/category/plan/post/86 《不应被体重定义快乐,美国肥妹靠健身变阳光美女》

这是一个完整的URL,那么我们来说了:

URIcategory/plan/post/86/ ,我们是想找这篇文章,如果通过URI,意思是,我知道这个标识的就是这篇文章.

但是,我不知道是

ftp://jianshen/category/plan/post/86/                                                        

还是

http://baidu/category/plan/post/86/                                                        

能访问这篇文章

URL:给出了具体路径,http://jianshenkfit.club/category/plan/post/86/ 访问这个具体的地址,就可以找到这篇文章


                                                       


                                                       


                                                       

                                                   
编辑于 2020-06-24                                                        
继续浏览内容
                                                               
知乎
发现更大的世界
打开
                                                               
Chrome
继续

看一下W3C关于这个的澄清:

URIs, URLs, and URNs: Clarifications and Recommendations 1.0www.w3.org                                                        


                                                       

                                                   

来自 https://www.zhihu.com/question/21950864  

                                                 


       

普通分类: