如果要说URI和URL和URN的区别,那就得先从Web服务器和Web资源说起。
Web服务器是Web资源的宿主。Web资源可以是Web服务器中的那些静态文件,也可以是一段可以生成动态内容的程序。
一.URI
每个Web资源都有能用来唯一标识并定位自己的名字,这样客户端在请求时才能获取到指定的Web资源。
其中这个Web资源名就是URI:统一资源标识符(Uniform Resource Identifier)
URI提供了两种访问Web资源的具体实现形式:URL、URN。
二.URL
第一种形式就是最常见的URL:统一资源定位符(Uniform Resource Location)
URL可以明确指出怎么从一个精确、固定的位置获取资源。
比如一个URL为:https://dss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/topnav/baiduyun@2x-e0be79e69e.png
它表明使用HTTPS协议,进入dss0.bdstatic.com,获取名为/static/superman/img/topnav/baiduyun@2x-e0be79e69e.png的资源。
大部分URL都遵循这样的格式,包含了3个部分:
1.第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。
2.第二部分给出了服务器的域名或是IP地址。
3.第三部分指定了Web服务器上的某个资源。
三.URN
第二种形式是URN:统一资源名(Uniform Resource Name)
URN是作为特定内容的唯一名称使用的,与目前资源的所在地无关。所以它的优势就是:即使资源文件发生位置上的转移,也不会影响线上正常访问。而且通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。
由于它的这种特性,就需要在搜索过程中加入一个中间层,将URN重定向到实际的URL上去。但目前还比较缺乏这样的支撑架构,所以可以说,URN是一个未来的展望。