URI :Uniform Resource Identifier,统一资源标识符
URL:Uniform Resource Locator,统一资源定位符
URN:Uniform Resource Name,统一资源命名
URL和URN是URI的子集
资源:在互联网上表示为文本、图像、音频、视频等所有发布到互联网上的东西。
如果拓展到日常生活中,资源表示客观存在的各种东西
URL 统一资源定位符
URL,关键词是“定位”,换句话说,“可以找到”。互联网上,URL提供了一种方式去唯一的定位某个资源。
用现实来比喻,“xx省xx市xx区xx路xx弄xx号几零几父亲/母亲/长子”,这个字符串可以准确且唯一的定位到一个人,可以说这就是一个现实版的URL。
举个互联网的例子:
https://dss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/css/super_min-fe4f97903e.css
这是百度某个css文件的url地址,通过这个地址,浏览器可以在互联网上“唯一的定位”到一个css文件,并且下载下来。
再举个例子:
thunder://QUFodHRwOi8veGlhb2JhaS5ydWFuamlhbmRvd24uY29tOjc0NTcvd2luZG93cyBTZXJ2ZXIgMjAwOC5pc29aWg==
这是一个迅雷的下载链接(全年龄),迅雷通过解析这个地址,唯一的匹配一个下载目标。
上面那个url为浏览器、路由器、DNS、https服务器共同解析,而下面这个迅雷下载url由迅雷客户端、路由器、DNS和迅雷服务器负责解析。
URL的一般语法格式为:protocol :// hostname[:port] / path / [;parameters][?query]#fragment
,主要分为协议、主机、端口、路径、参数、查询、信息片段。
- 协议
指定使用的传输协议,最常用的是HTTP/HTTPS协议,常见的还有ftp、file、ed2k、thunder等 - 主机
存放资源的服务器的域名或者IP - 端口
可选,省略时使用本次请求协议的默认端口,比如HTTP协议的默认端口是80。服务器也可以手动指定其他端口,此时请求中必须携带指定端口号 - 路径
由零到多个“/”隔开的字符串,指定服务器上某个目录或文件地址 - 参数
用于指定特殊参数的可选项 - 查询
负责给动态网页(PHP/JSP等)传递参数,每个参数使用“&”符隔开,每个参数的key和value使用“=”隔开 - 信息片段
浏览器可以使用该字段定位到资源中的某个位置
URN 统一资源命名
URN在互联网中并不常见,但是了解URN是什么很有必要。
URN,关键词是“命名”,URN只是一个名字,只要在范围内实现唯一标识,可以使用任何方式实现。
举个现实中的例子,身份证号就是每个人的一个URN。可以唯一的标识每个人,虽然没有直接告诉你怎么去找某个人
URI 统一资源标识符
最后说URI,统一资源标识符
关键词是“标识”,也就是说,不管你是用地址还是命名,只要是能唯一的确定(不是定位)某个资源,就可以叫URI。
所以URI是整个体系的最高层,包含了URL和URN,还包括除了地址和命名之外的定位方式。
URI是一个抽象的概念,如果要落实到实际应用,总是要对应到一个URL,或者URN,或者其他什么东西。
总结
在互联网上,用的最多的就是URL,如果非要说URI那也没啥问题,URN更多的写成ID等形式。