URL与URI,有联系有区别

当我们在学习web知识时,通常会听到两个专业术语,URL 和 URI ,那么它们到底是什么?它们有什么联系? 又有什么区别?

URL

URL:(全称:Uniform Resource Locator) 统一资源定位符

它是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址

URL 的常见定义格式为

scheme://host[:port#]/path/…/[;url-params][?query-string][#anchor]

scheme //有我们很熟悉的http、https、ftp以及著名的ed2k,迅雷的thunder等。
host   //HTTP服务器的IP地址或者域名
port#  //HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,
例如tomcat的默认端口是8080  http://localhost:8080/
path   //访问资源的路径
url-params  //所带参数 
query-string    //发送给http服务器的数据
anchor //锚点定位

URL的格式一般由下列三部分组成:

  1. 协议(或称为服务方式);
  2. 存有该资源所在的服务器的名称或IP地址(包括端口号);
  3. 主机资源的具体地址。

一个简单的url :例如:

1 — 协议

常见的协议

    http     超文本传输协议资源

    https    用安全套接字层传送的超文本传输协议

    ftp      文件传输协议

    mailto   电子邮件地址

2 — 存有该资源所在的服务器的名称或IP地址(包括端口号)

端口:相当于一种数据的传输通道。用于接受某些数据,然后传输给相应的服务,而电脑将这些数据处理后,再将相应的回复通过开启的端口传给对方。

端口的作用:因为 IP 地址与网络服务的关系是一对多的关系。所以实际上因特网上是通过 IP 地址加上端口号来区分不同的服务的。

端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535

例如: 127.0.0.1:8080  表示 本机地址 端口号为 8080   

3 — 主机资源的具体地址

例如:  /webProject/index.html 

一般的URL为:

 URL:  http://127.0.0.1:8080/webProject/index.html 

URI

URI:(全称:Uniform Resource Identifier) 统一资源标识符,它是一个字符串用来标示抽象或物理资源

Web上可用的每种资源( HTML文档、图像、音频、视频片段、程序等)都由一个通用资源标识符(Uniform Resource Identifier, 简称”URI”)进行定位。

URI的格式也由三部分组成:

  1. 访问资源的命名机制。
  2. 存放资源的主机名。
  3. 资源自身的名称,由路径表示。

联系与区别

URI :Uniform Resource Identifier,统一资源标识符;
URL:Uniform Resource Locator,统一资源定位符;
URN:Uniform Resource Name,统一资源名称。

URI 属于 URL 更高层次的抽象,一种字符串文本标准。

就是说,URI 属于父类,而 URL 属于 URI 的子类。URL 是 URI 的一个子集

URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源(http://)。

URI可以分为URL,URN,或同时具备locators 和names特性的一个东西。URN作用就好像一个人的名字,URL就像一个人的地址。换句话说:URN确定了东西的身份,URL提供了找到它的方式。”

总结

URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位。

URI:统一资源标识
URL:统一资源定位
URN:统一资源名称

例如:
www.baidu.com是URL.
www.baidu.com/index.html 是URL 同时也是URI。
所以,URL 就是 URI 的 定位。

但 URI 不一定是 URL。
因为 URI有一类子集是 URN,它是命名资源 但不指定如何定位资源。
如: mailto 需要 加上 相应的结构参数,才能进行 统一资源定位。
如: mailto: xxxxx@qq.com

因此,三者之间的关系是:
URI 一定是 URL
URN + URL 就是 URI。