什么是统一资源标识符(URI)?
统一资源标识符(URI)是一个字符序列,用于标识逻辑(抽象)或物理资源——通常(但并非总是)与互联网连接。URI中包含的字符串(如方案名称和文件路径)充当标识符。
URI可以标识不同类型的资源,包括:
- 电子文档
- 网页
- 图像
- 具有一致用途的信息源
URI包括URL和URN。
URI的用途是什么?
URI用于区分不同资源,在全球互联网中尤为重要。URI使互联网协议能够促进二进制数据、照片、视频和文本等资源之间的交互。
URI为每个资源打上标签,使互联网协议能够识别需要获取的资源,以便用户在浏览互联网时访问它们。
除了识别和获取网络资源外,URI还用于以下情况:
- 用户打开电子邮件客户端
- 用户想要发送短信
- 需要执行JavaScript
统一资源标识符的示例是什么?
URI仅是一系列特定字符,用于标识互联网上的特定资源。这些字符根据资源类型而变化。
例如,指定访问远程计算机的URI可能如下所示:
|
|
指定TechTarget网站上电子书的URI可能如下所示:
|
|
博客的URI可能采用以下形式:
|
|
URI还可以指定电话号码:
|
|
或者指定电子邮件地址:
|
|
什么是文件URI?
文件URI用于标识主机计算机上的文件。它始终具有以下语法:
|
|
其中,host指系统的完全限定域名。如果未指定主机名,则假定为localhost(解释URL的系统)。URI也可以包含空主机名。
path是分层目录路径,指向该系统上文件的位置。在URI语法中,单个斜杠始终分隔主机名和路径名。如果未指定主机名,URI语法将为file:/path。如果目录包含子目录,可以使用额外的斜杠包含在语法中。
文件URI示例:
- UNIX:
file://localhost/etc/fstab
- Windows:
file://localhost/c:/WINDOWS/clock.avi
统一资源标识符如何工作
URI提供了一种简单、可扩展的方式来标识互联网资源。由于提供统一性,不同类型的资源标识符可以在相同上下文中使用,无论访问这些资源的机制如何。资源标识符还可以在不同上下文中重复使用。
假设用户想要通过Google Chrome浏览器访问www.techtarget.com上的电子书。该电子书与特定URI关联。工作流程如下:
- 用户在Chrome地址栏中输入URI:
https://www.techtarget.com/white-paper-ebook/educating-customers-on-genai-using-content-to-build-engagement-for-ai-enhanced-services/
- Chrome识别URI的各个组件
- Chrome向TechTarget服务器发送请求
- 服务器在用户设备上显示资源内容
在这种情况下,资源是电子书,因此用户将看到如图1所示的下载表单。
图1. 电子书下载表单
如果所需资源是视频,其URI将不同,但工作方式相同。当服务器获取资源时,它将显示在浏览器屏幕上,如图2所示。
图2. 排队播放的视频资源
统一资源标识符语法
任何URI方案的通用形式为:
|
|
大多数URI包含以下部分或全部元素:方案名称、权限、文件路径、查询和片段。在TechTarget电子书示例中,语法可以分解如下:
- 方案:
http://
- 权限:
www.techtarget.com
- URL路径:
white-paper-ebook/educating-customers-on-genai-using-content-to-build-engagement-for-ai-enhanced-services/
在URI中,文件路径可能为空。只要提供方案名称,URI就能完成区分资源的工作。此外,端口、查询和片段是可选组件,在TechTarget电子书URI中不可见。
以下是URI主要元素的分解:
方案(非可选)
URI中的第一个元素是方案名称。方案不区分大小写,并通过冒号与对象的其余部分分隔。方案建立具体语法,并指示浏览器必须对该URI使用哪些协议。
理想情况下,URI方案应在互联网名称与数字地址分配机构(ICANN)注册,但也可以使用未注册的方案。
示例:如果URI是telnet://192.0.2.16:80
,方案名称为"telnet"。
权限(非可选)
URI的权限组件由多个部分组成:包含注册名称或IP地址的主机、可选的身份验证部分和可选的端口号。
身份验证部分包含用户名和密码,用冒号分隔,后跟at符号(@)。@之后是主机名,后跟冒号和端口号。IPv4地址通常采用点分十进制表示法,IPv6地址需要放在括号中,通常采用十六进制形式。
IPv6地址不同段的示例
包含数据的路径由一系列用斜杠分隔的段表示。这些斜杠暗示分层结构。无论权限是否存在,路径都以单个斜杠开始。但是,路径不能以双斜杠开始。语法的这一部分可能类似于特定的文件路径,但并不总是暗示与该文件系统路径的关系。
在前面的URI示例(telnet://192.0.2.16:80
)中,存在方案名称。双斜杠后的数字构成权限。由于斜杠后没有字符,表明路径为空。
对于网络资源,权限是URI的主机名或域名(网站)。它也可以是IP地址,指示正在请求哪个Web服务器。
路径(非可选)
URI路径是请求资源在域Web服务器上的特定位置。它可能看起来像这样:file:///C:/Users/Blogs/Documents/revolutionizing-content-with-intent-driven-insights/.txt
。
这里,“file:///“之后的所有内容指向特定文档。
查询(可选)
查询包含一串非分层数据。它通常是一系列属性-值对,用分隔符(如&或分号)分隔。问号将查询与之前的部分分开。
该字符串表示对可查询对象应用的某些操作。
示例:在URI foo://techtarget.com:8042/over/there?name=parrot#beak
中,查询是"name=parrot#beak”。
但是,由于语法的这一部分是可选的,它可能并不总是存在。
片段(可选)
片段包含一个标识符,提供对次要资源的方向。哈希(#)将其与URI的前面部分分开。
如果主要资源是超文本标记语言(HTML)文档或文章,片段可以是该资源特定元素的ID属性。在这种情况下,Web浏览器将滚动到该特定元素。
但是,如果片段ID为空,则表示URI引用整个对象。在这种情况下,可以省略哈希符号。
端口(可选)
URI还可以包含端口号。但是,如果Web服务器使用HTTP(80)或HTTPS(443)协议的标准端口,通常会省略。如果使用其他端口,必须指定以便浏览器能够获取所需资源。
通用语法的需求
万维网发明者Tim Berners-Lee于1994年6月在互联网工程任务组(IETF)RFC 1630中首次记录了URI。在创建本文档时,Berners-Lee的主要目标是定义用于识别和访问万维网上对象的通用语法。
根据Berners-Lee的说法,文档搜索和检索使用多种协议和系统。为了实现这些文档的全球访问,即使使用不同的数据格式,在所有名称空间中拥有通用的名称和地址集至关重要。这套系统将允许以通用方式处理不同空间中的对象名称,从而允许使用现有和未来/提议的协议访问这些对象。正是这一目标导致了URI的发展。
如今,URI及其通用语法在IETF RFC 3986中定义。RFC 3986于2005年1月发布,定义了互联网的通用URI语法以及在互联网上使用URI的安全考虑。RFC 3986在一般意义上使用术语"资源”,这意味着由URI标识的资源不必在互联网上可访问。
统一资源标识符解析和引用
URI的两个附加方面是解析和引用。
URI解析是对也是URL的URI执行的几种常见操作之一。它涉及确定定位和检索URI所表示资源所需的适当数据访问方法和参数。
URI引用用于确定URI的常见用法,可能显示为完整URI、完整URI的一部分或空字符串。如果有片段标识符,它将标识URI其余部分引用的资源的一部分。
URI引用可以是URI和相对引用。在这种情况下,URI引用的前缀与方案后跟其冒号分隔符的语法不匹配。为了确定哪些组件存在以及引用是否是相对的,每个URI组件都被解析为其子部分并进行验证。
统一资源标识符的类型
URL、统一资源名称(URN)和统一资源特征(URC)是三种类型的URI。
统一资源定位符(URL)
URL用于识别和定位网页。
URI标识资源但不暗示或保证对其的访问。然而,URL标识资源并指定如何访问或定位它。这就是为什么URL包含独特组件,如协议、域和/或子域以及其他URI组件。
URL是URI的子集。这意味着所有URL都是URI,但并非所有URI都是URL。URL首先声明应用于特定网络上访问和定位逻辑或物理资源的协议。因此,以下适用于URL:
- 如果资源是网页,URL以协议HTTP或HTTPS开头
- 如果资源是文件,URL以协议FTP开头
- 对于电子邮件地址,URL以协议"mailto"开头
URL是位置相关的URI,可能持久也可能不持久。这意味着如果资源的位置发生变化,URL也会更改以反映并指向新位置。
URL示例:
https://www.techtarget.com/whatis/definition/URI-Uniform-Resource-Identifier
https://datatracker.ietf.org/doc/html/rfc3986
https://www.w3.org/Addressing/URL/uri-spec.html
统一资源名称(URN)
与URL一样,URN标识资源。但与URL不同,URN是位置无关且持久的,意味着它随时间推移始终标识相同的资源。即使资源不再存在或变得不可用,URN仍然持续存在。
URN不说明应使用哪种协议来定位和访问资源。相反,它用持久、位置无关和唯一的标识符标记资源。
URN有三个组件:
- 标签"urn"
- 冒号
- 作为唯一标识符的字符串
URN示例(由IETF RFC 2986提供):
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
urn:example:animal:ferret:nose
统一资源特征(URC)
URC是描述特定资源的元数据。此元数据通常采用属性/值对的形式。它可能引用资源的各种属性,例如:
- 作者姓名
- 出版商名称
- 编码
- 版权状态
- 访问限制
URC可由人类和计算机读取,旨在描述资源以表示其知识。
URI与URL的区别
尽管经常互换使用,但术语URI和URL是不同的。URI标识特定资源,而URL是一种特殊类型的URI,既标识资源又指定如何访问它。换句话说,URI是资源标识符,而URL是资源定位器。
人名和地址的类比可以解释这种差异。在这种情况下,名称就像URI,因为它标识了人。然而,它没有解释如何找到该人或他们住在哪里。为此,需要地址,就像在谈论互联网资源时需要URL一样。
此外,URI可用于识别和区分各种类型的文件和资源,包括HTML和可扩展标记语言(XML)。但是,URL只能用于识别和定位网页和资源。如果域存在或暗示协议(如FTP或HTTPS),则称为URL,即使它也是URI。
尽管存在这些差异,URI和URL有一个重要的共同点:语法。与URI一样,URL也包括方案(协议)、域和路径。其他部分,如URI中可选的查询和片段,在URL中也是可选的。
网络使互联网能够运行,依赖于几个关键协议。这些基本的网络协议促进了整个互联网的通信和连接。了解常见的网络协议及其功能。