URI包括URL和URN两个类别,URL是URI的子集,所以URL一定是URI,而URI不一定是URL
URI = Universal Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。 通过使用位置,名称或两者来标识Internet上的资源;它允许统一识别资源。有两种类型的URI,统一资源标识符(URL)和统一资源名称(URN)。同样定义了资源的标识。但不同点在于URI通常不会包含获取资源的方式。
URL = Universal Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串,用于指示资源的位置以及用于访问它的协议。通俗来说,就是对于某种web资源的引用,并且包含了如何获取该资源的方式。 最常见到的场景就是指一个网站的地址,也就是你在浏览器地址栏见到的那个东西。URL,用地址定位
URN = Universal Resource Name 统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源。URN 用名称定位。
urI包括url和urn,后来urn没流行起来,导致几乎目前所有的uri都是url。
EX:
个人的身份证号就是URN,个人的家庭地址就是URL,URN可以唯一标识一个人,而URL可以告诉邮递员怎么把货送到你手里。
EX:
https://blog.csdn.net/ 是个URL,通过这个网址可以找到CSDN,并且还告诉用HTTP协议访问。
URI:
URI, 指能够唯一的标记一个网络资源的符号。不管用什么方法表示,只要能唯一标记某个资源,它就叫URI。
URI的组成: 主要由资源的标志符,主机名以及相对URI。
1.主机名:
主机名是由路径表示,一般是指存放资源的名称,例如:http://php.cn/a/b
就表示在php主机上,通过URI的字符串去访问主机上的a中的文件夹,并且b要求访问主机上的/a/b文件。
2.标识符:
在一般情况下,有的URI是指向内部,一定要以"#"进行结束,并且紧跟着anchor。
3.相对URI
相对URI是没有规范信息的,是指主机上的同一个资源,一个相对URI可能会包含片段标识符和相对路径。
(注意:这只是一般URI资源的命名方式,只要是可以唯一标识资源的都被称为URI,上面三条合在一起是URI的充分不必要条件)
URI举例:
如:https://blog.csdn.net/qq_32595453/article/details/79516787
我们可以这样解释它:
①这是一个可以通过https协议访问的资源,
②位于主机 blog.csdn.net上,
③通过“/qq_32595453/article/details/79516787”可以对该资源进行唯一标识(注意,这个不一定是完整的路径)
注意:以上三点只不过是对实例的解释,以上三点并不是URI的必要条件,URI只是一种概念,怎样实现无所谓,只要它唯一标识一个资源就可以了。
URL:
URL, 是通过网络路径地址标记资源的符号。可以理解为:URL就是资源的地址。这个资源可以是一个 HTML 页面,一个 CSS 文档,一幅图像等等。
URL只是URI的实现方法之一。当然也可以使用其他方法实现URI,只是URL现在比较流行而已。可见,URL是URI的子集。
URL的一般格式为(带方括号[]的为可选项):
protocol : // hostname[:port] / path / [;parameters][?query]#fragment
URL的格式由三部分组成:( 协议+//+域名+端口+路径+文件+?+参数+#+锚定 )
①第一部分是协议(或称为服务方式)。
②第二部分是存有该资源的主机IP地址(有时也包括端口号)。
③第三部分是主机资源的具体地址,如目录和文件名等。
第一部分和第二部分用“: //”符号隔开,
第二部分和第三部分用“/”符号隔开。
第一部分和第二部分是不可缺少的,第三部分有时可以省略。
URL举例:
http://www.aspxfans.com:8080/news/day01/index.asp?boardID=5&pwd=24618&page=1#name
协议部分 http:
域名部分 www.aspxfans.com
端口部分 :8080
目录部分 /news/day01/
文件部分 index.asp
参数部分 boardID=5&pwd=24618&page=1
锚定部分 name
URL的分类:
URL一般是分大小写的,但是服务器收到不同大小写请求的时候,服务器的回复是相同的。
1.相对URL
文件所在路径和其他文件的路径关系,用于表示文件的位置,如果在同一个目录下,这个文件的url就是当前文件的名字,相对路径的url比较简短。
2.绝对URL
绝对的URL会显示文件的完整路径,前面一般会包含一个域名。
URI和URL的区别:
URI和URL都定义了资源是什么,但URL还定义了该如何访问资源。URL是一种具体的URI,它是URI的一个子集,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,是绝对的。
协议区别:URL指定要使用的协议类型,而URI不涉及协议规范。
通俗来讲:
那人做例子:身份证号才是URI,通过身份证号能让我们能且仅能确定一个人。
那统一资源定位符URL是什么呢。也拿人做例子然后跟HTTP的URL做类比,就可以有:动物住址协议://地球/中国/浙江省/杭州市/西湖区/某大学/14号宿舍楼/525号寝/张三.人
可以看到,这个字符串同样标识出了唯一的一个人,起到了URI的作用,所以URL是URI的子集。URL是以描述人的位置来唯一确定一个人的。
参考链接:https://blog.csdn.net/zhangzhanbin/article/details/115337251