【思考】URI和URL的区别?以及URL的结构
2020-06-27 17:38
501 查看
URI = Universal Resource Identifier
URL = Universal Resource Locator
在学习中,我们难免会遇到 URI 和 URL,有时候都傻傻分不清,为啥这边是 URI 那边又是 URL,这两者到底有什么区别呢?
我们从名字上看
- **统一资源标识符**(Uniform Resource Identifier, URI):是一个用于标识某一互联网资源名称的字符串。
- **统一资源定位符**(Uniform Resource Locator, URL):是一个用于标识和定位某一互联网资源名称的字符串。
可能大家就比较困惑了,这俩好像是一样的啊?那我们就类比一下我们现实生活中的情况:
我们要找一个人——张三,我们可以通过他的唯一的标识来找,比如说身份证,那么这个身份证就唯一的标识了一个人,**这个身份证就是一个 URI**;
而要找到张三,我们不一定要用身份证去找,我们还可以根据地址去找,如 在清华大学18号宿舍楼的404房间第一个床铺的张三,我们也可以唯一确定一个张三,
**动物住址协议://地球/中国/北京市/清华大学/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](http://tools.ietf.org/html/rfc3986) 的 [Syntax Components](http://tools.ietf.org/html/rfc3986#section-3) 把 URL 描述为如下图:
![](https://img2020.cnblogs.com/blog/1542615/202006/1542615-20200621205948051-1435006716.png)
如图所示,把 URL 分成几个部分,这样便可以了解URL的构成。 在 [URI scheme - Wikipedia](http://en.wikipedia.org/wiki/URI_scheme) 页面中对 URL 的描述更为详细,如下图:
![](https://img2020.cnblogs.com/blog/1542615/202006/1542615-20200621210030686-1840443690.png)
相关文章推荐
- JSP里面URI和URL的区别和联系以及几个内置对象的概述
- Java中路径的获取总结以及URL和URI的区别
- Java中路径的获取总结以及URL和URI的区别
- HttpUtility.UrlDecode(),HttpUtility()escape()、encodeURI()、encodeURIComponent()区别详解以及相应的前台解码和.net后台解码
- uri,url和urn的区别以及URLEncoder
- URL解析以及URL和URI的区别
- [Struts2] URL、URI以及ServletPath之间的区别
- ArrayList和LinkedList的区别以及对程序员缺乏数据结构知识的思考
- URL、URI以及URN的区别
- URI和URL的区别以及Javascript编码
- URI和URL区别以及相对路径和绝对路径的区别
- URL,URI以及ServletPath的区别
- (转)URI和URL区别以及相对路径和绝对路径的区别
- Java中路径的获取总结以及URL和URI的区别_Java大本营_职场_西祠胡同 http://www.xici.net/d174934654.htm
- 你知道URL、URI和URN三者之间的区别吗?
- URI和URL的区别
- url与uri的区别
- perl下十种fetch数据的区别以及返回数据结构
- URI和URL的区别
- URI和URL的区别