近期在开始学习网络通信理论。 看的书是业界经典《图解HTTP》,到URI,URL这部份内容的时候,对“URL是URI的子集”这句话没有很好的理解。 百度了好些篇文章,仍是没能透彻的去区分这两者的区别。 而后google到了一篇写的比较通俗易懂的文章,打算基于这篇文章,对URI,URL的区别作一个概念上的理解,力求通俗。 网络
首先,其实这两个缩写的概念其实全称就已经很是精确的代表了含义,只不过对于初学者,仍是比较抽象而已。 ide
URL:Uniform Resource Locator 统一资源定位符;
URI:Uniform Resource Identifier 统一资源标识符;学习
咱们先从字面意思上去尝试理解, 而后对这两者的区别进行说明,正是这篇文章的内容。 google
URL: 关键词-"资源定位", 那就是经过写明路径的方式,表示出资源的位置,位置被指定,一般资源也就被指定,例如302班1列3排的同窗,身份是可以被肯定的。 url
URI: 关键词-"资源标识", 一个名为小明的男同窗。咱们明确的知道了,有这么我的,性别男,名小明。 spa
目前为止,这些都不难理解。
咱们继续讨论:“URL是URI的子集”orm
咱们看这个图:blog
Your name could be a URI because it identifies you, but it couldn't be a URL because it doesn't help anyone find your location. On the other hand, your address is both a URI and a URL because it both identifies you and it provides a location for you.
你的名字能够做为一个URI(资源标识),由于它可以标识你这我的。可是不能是一个URL,由于你的名字,不足以让别人知道你的位置,而后找到你。
你的地址既是一个URI,同时也是一个URL,由于你的地址,能够暴露你是谁,也能够告诉别人你在哪里。
简单这么说,你可能由于上图更加迷惑了。 这是因为咱们惯性的思惟误差致使的。 咱们很容易这样想:URL包含了地址和资源信息, 而URI彷佛只是指明了资源。 好像URL的范围大于URI,因此URI应该是URL的子集才对啊。
而这正是致使咱们不容易理解的根本缘由。 ip
上图咱们不是很好理解,因此咱们换一个图:
能够看到,峨眉山的猴子,即指定了位置,还指明了猴子。 可是,对于猴子这一个物种来讲,猴子并不仅是存在峨眉山中。 咱们不难理解,峨眉山的猴子只是猴子的一种。 峨眉山的猴子是猴子的子集。资源
再回到上面,对比看看, URL和URI 的关系也是如此。 URL 只是 URI 的一种。 所以URL是UIR的子集。
【参考】:https://dev.to/flippedcoding/what-is-the-difference-between-a-uri-and-a-url-4455