【思考】URI和URL的区别?以及URL的结构
URI = Universal Resource Identifier
URL = Universal Resource Locator
在学习中,我们难免会遇到 URI 和 URL,有时候都傻傻分不清,为啥这边是 URI 那边又是 URL,这两者到底有什么区别呢?
我们从名字上看
- 统一资源标识符(Uniform Resource Identifier, URI):是一个用于标识某一互联网资源名称的字符串。
- 统一资源定位符(Uniform Resource Locator, URL):是一个用于标识和定位某一互联网资源名称的字符串。
可能大家就比较困惑了,这俩好像是一样的啊?那我们就类比一下我们现实生活中的情况:
我们要找一个人——张三,我们可以通过他的唯一的标识来找,比如说身份证,那么这个身份证就唯一的标识了一个人,这个身份证就是一个 URI;
而要找到张三,我们不一定要用身份证去找,我们还可以根据地址去找,如 在清华大学18号宿舍楼的404房间第一个床铺的张三,我们也可以唯一确定一个张三,而这个地址就是我们用于标识和定位的 URL。
我们从上面可以很明显的看出,URI 通过任何方法标识一个人即可,而 URL 虽然也可以标识一个人,但是它主要是通过定位地址的方法标识一个人,所以 URL 其实是 URI 的一个子集,即 URL 是靠标识定位地址的一个 URI。
Url 的构成
URL(Uniform Resource Locator,统一资源定位符),用于定位网络上的资源,每一个信息资源都有统一的且在网上唯一的地址。
Url一般有以下部分组成
scheme://host:port/path?query#fragment
Scheme: 通信协议,一般为http、https等;
Host: 服务器的域名主机名或ip地址;
Port: 端口号,此项为可选项,默认为80;
Path: 目录,由“/”隔开的字符串,表示的是主机上的目录或文件地址;
Query: 查询,此项为可选项,可以给动态网页传递参数,用“&”隔开,每个参数的名和值用“=”隔开;
Fragment: 信息片段,字符串,用于指定网络资源中的某片断;
其实,把 URL 说成是网址其实是很不严谨的说法,因为 URL 有很严格的结构,表示也很灵活、有弹性。
在 RFC 3986: Uniform Resource Identifier (URI): Generic Syntax 的 Syntax Components 把 URL 描述为如下图:

如图所示,把 URL 分成几个部分,这样便可以了解URL的构成。 在 URI scheme - Wikipedia 页面中对 URL 的描述更为详细,如下图:

【思考】URI和URL的区别?以及URL的结构的更多相关文章
- 爬虫技术 -- 基础学习(三)理解URL和URI的联系与区别
网络爬虫的基本操作是抓取网页.首先要了解下URL~~ 在理解URL之前,先了解下URI,这两个概念我曾经混淆过~@_@|| 什么是URI? Web上每种可用的资源,如:html文档.视频,图片等都由一 ...
- URI与URL的区别
(原网址:http://zhidao.baidu.com/question/38764759.html) Web上可用的每种资源 - HTML文档.图像.视频片段.程序等 - 由一个通过通用资源标志符 ...
- URI跟URL的区别
关于URL和URI的区别,个人见解. 初学java,最近被一个概念搞得头晕脑胀,就是url和uri的概念和区别,网上查了一大通,发现各种回答眼花缭乱,有百科直接粘贴的,有胡说八道的,有故意绕来绕 ...
- Web基础-Uri跟Url的区别
关于URL和URI的区别,个人见解. 初学java,最近被一个概念搞得头晕脑胀,就是url和uri的概念和区别,网上查了一大通,发现各种回答眼花缭乱,有百科直接粘贴的,有胡说八道的,有故意绕来绕 ...
- URI和URL的区别
这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等.但是,每次定义的时候,心里都很纠结,是该用imgU ...
- (转)URI与URL的区别
这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等.但是,每次定义的时候,心里都很纠结,是该用imgU ...
- android里uri和url的区别
URI :是从虚拟根路径开始的 URI,是uniform resource identifier URL:是整个链接 URI,是uniform resource location uri:file: ...
- URI和URL的区别 【转】
源地址:http://www.cnblogs.com/gaojing/archive/2012/02/04/2413626.html 这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java ...
- URI和URL的区别(转)
1说明: 这段时间写android的时候用到了URL和URI,有点分不清楚,于是做了一个系统性的学习.在这里将自己的学习笔记粘贴出来,希望对大家有帮助. 1)Java类库里有两个对应的类java.ne ...
随机推荐
- 【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手
[摘要]本文重点分析计算机网络中TCP协议中的握手和挥手的过程. [前提说明] 前段时间突然看到了一篇关于TCP/IP模型的文章,心想这段时间在家里也用wireshark抓了点包,那么想着想着就觉得需 ...
- TCP / IP 精彩回顾-必看
TCP/IP 协议出现的原因是互联网世界各个主机作为一个个独立的个体,如何制定统一的规则让他们互相通信是达成万物互联的纽带.基于此,设定了 TCP/IP 协议来规范网络访问行为.TCP/IP 并不是一 ...
- SSM 的 基本原理与面试相关
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.MyBatis 1.Mybatis出现最多的问题是什么? 问题: 在XML配置文件中语句的书写与对象 ...
- Java实现 LeetCode 715 Range 模块(选范围)
715. Range 模块 Range 模块是跟踪数字范围的模块.你的任务是以一种有效的方式设计和实现以下接口. addRange(int left, int right) 添加半开区间 [left, ...
- Java实现微生物增殖
微生物增殖 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍). 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y. ...
- java实现第七届蓝桥杯压缩变换
压缩变换 压缩变换 小明最近在研究压缩算法. 他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比. 然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这些序列的特 ...
- Linux用户管理命令useradd、passwd、who详解
创建用户命令useradd 命令useradd,所在路径为: 可以看到命令useradd的路径为:/usr/sbin/useradd,因此它的执行权限是root 命令的功能是创建一个新用户,例如:us ...
- shell命令:命令置换、进程管理
1:命令置换 command1 `command2` 将command2的结果作为command1的参数 注意:command2的引号为esc键下的单引号 2:进程管理 1)命令 (1)ps -a ...
- 如何将自己在github写的android library开源,让大家依赖使用
编写library并上传至github后,让别人可以通过gradle的方式添加依赖 http://www.jianshu.com/p/9aedfd749cec
- 介绍几种给你的Python代码加上酷炫的进度条的方式
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 大家好,在下载某些文件的时候你一定会不时盯着进度条,在写代码的时候使用进度 ...