深入解析统一资源标识符(URI):互联网资源寻址的核心技术

本文详细介绍了统一资源标识符(URI)的定义、功能、语法结构及其在互联网资源定位中的关键作用,涵盖URL、URN和URC的区别,以及URI解析和引用的技术细节,帮助读者全面理解网络资源标识机制。

什么是统一资源标识符(URI)?

统一资源标识符(URI)是一个字符序列,用于标识逻辑(抽象)或物理资源——通常(但并非总是)与互联网连接。URI中包含的字符串(如方案名称和文件路径)充当标识符。

URI可以标识不同类型的资源,包括:

  • 电子文档
  • 网页
  • 图像
  • 具有一致用途的信息源

URI包括URL和URN。

URI的用途是什么?

URI用于区分不同资源,在全球互联网中尤为重要。URI使互联网协议能够促进二进制数据、照片、视频和文本等资源之间的交互。

URI为每个资源打上标签,使互联网协议能够识别需要获取的资源,以便用户在浏览互联网时访问它们。

除了识别和获取网络资源外,URI还用于以下情况:

  • 用户打开电子邮件客户端
  • 用户想要发送短信
  • 需要执行JavaScript

统一资源标识符的示例是什么?

URI仅是一系列特定字符,用于标识互联网上的特定资源。这些字符根据资源类型而变化。

例如,指定访问远程计算机的URI可能如下所示:

1
telnet://192.0.2.16:80

指定TechTarget网站上电子书的URI可能如下所示:

1
http://www.techtarget.com/white-paper-ebook/educating-customers-on-genai-using-content-to-build-engagement-for-ai-enhanced-services/

博客的URI可能采用以下形式:

1
https://www.techtarget.com/blog/this-is-the-blog-title

URI还可以指定电话号码:

1
tel:+1-617-431-XXXX

或者指定电子邮件地址:

1
mailto:example@techtarget.com

什么是文件URI?

文件URI用于标识主机计算机上的文件。它始终具有以下语法:

1
file://host/path

其中,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关联。工作流程如下:

  1. 用户在Chrome地址栏中输入URI:https://www.techtarget.com/white-paper-ebook/educating-customers-on-genai-using-content-to-build-engagement-for-ai-enhanced-services/
  2. Chrome识别URI的各个组件
  3. Chrome向TechTarget服务器发送请求
  4. 服务器在用户设备上显示资源内容

在这种情况下,资源是电子书,因此用户将看到如图1所示的下载表单。

图1. 电子书下载表单

如果所需资源是视频,其URI将不同,但工作方式相同。当服务器获取资源时,它将显示在浏览器屏幕上,如图2所示。

图2. 排队播放的视频资源

统一资源标识符语法

任何URI方案的通用形式为:

1
scheme://authority:port/URL path?URL query#URL fragment

大多数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中也是可选的。

网络使互联网能够运行,依赖于几个关键协议。这些基本的网络协议促进了整个互联网的通信和连接。了解常见的网络协议及其功能。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计