计算机网络——统一资源标识符URI

发布时间:2024年01月15日

????????Uniform Resource Identifier(统一资源标识符,URI)定义在RFC 3986中,是一种用于标识互联网上资源的字符串。URI的主要目的是为了标识(不一定是定位)一个资源,这个资源可以是数据、服务,或者是抽象的或物理的实体,而且这个资源可能可以通过互联网访问,也可能不可以。

1. URI有两个主要的子类别

1.1 Uniform Resource Name (URN):统一资源命名符(用命名的方式标识)

????????这是资源的唯一名称,用于标识资源,但不提供任何关于如何找到或访问该资源的信息。URN不告诉你如何找到或访问它。比如,书的ISBN号就是一种URN,它唯一标识一本书,但不告诉你在哪里可以买到这本书。

????????URN是永久的、位置独立的标识符,用来确保资源即使在不同位置也能被唯一识别。

1.2 Uniform Resource Locator (URL):统一资源定位符(用定位的方式标识)

1.2.1 定义

????????这是最常见的URI类型,它不仅标识资源,还提供了找到该资源的方法。

????????URL包含了访问资源所需的所有信息,包括协议(如HTTP、FTP)、服务器位置和文件路径。

????????例如,http://www.example.com/index.html 是一个URL,它告诉你资源是通过HTTP协议在`www.example.com`上的`/index.html`路径上找到的。

????????URL包括协议(如HTTP、FTP),服务器的位置和资源在服务器上的具体位置。

1.2.2 URL的格式

????????例如:http://www.cnam.fr:8080/p?q=name=ferret#nose

????????这里是每部分的解释:

????????http:表示方案(scheme),它定义了如何访问资源。在这个例子中,它指定使用HTTP协议

????????www.cnam.fr:是授权部分(authority),通常包含域名和可选的端口号。

????????:8080:这是端口号,用于访问服务器上的特定服务。端口号紧跟在域名后面,用冒号分隔。

????????/p:路径(path),表示服务器上资源的具体位置。它是一个层次结构的路径。

?????????q=name=ferret:查询(query),包含了发送给资源的额外参数,通常用于GET请求中的数据。

????????#nose:片段(fragment),它通常用于指向资源内部的一个锚点(如网页中的一个特定位置)。

1.2.3 增强型巴科斯-诺尔范式(Augmented Backus-Naur Form)

????????另一种表达方式,用于定义或描述语言的语法。这种形式是:

????????`URI = scheme ":" [ "//" authority ] path [ "?" query ] [ "#" fragment ]`

????????这种表示方法是一种标准的方式,用来定义URI的不同部分以及它们如何结合在一起形成完整的URI。

????????简而言之,URI是一个通用的资源标识系统,它可以用URN来唯一标识一个资源,或者用URL来提供资源的位置和访问方法。

2. URI的主要部分

2.1 方案(scheme)

????????方案(Schémas):它指定了访问资源所使用的互联网协议。例如,`http`表示超文本传输协议,是网页浏览器用来请求网页的标准方式。其他常见的方案包括’https’(安全的http)、`ftp`(文件传输协议)、`mailto`(电子邮件地址)等。

2.2?层次路径(hierarchical path)

????????层次路径:URI中的“层次路径”是指定如何找到特定资源的路径部分,它根据资源在服务器上的位置不同,有几种不同的格式:

2.2.1??//authorite path-abempty

????????这种格式的路径以两个斜线`//`开头。

????????紧接着是“授权部分”,通常包括域名和可选的端口号(比如`www.example.com:80`)。

????????然后是路径部分,它可以为空,或者包含具体的路径信息。

2.2.2?/path-absolute

????????这是一个绝对路径,以单个斜线`/`开头。

????????它直接指定从服务器的根目录开始的路径,一直到资源的具体位置。

2.2.3??path-rootless

????????这是一个无根路径,不以斜线开头。

????????它不从服务器的根目录开始,而是从当前路径开始指定资源位置。

2.2.4?path-empty

????????这是一个空路径,不包含任何字符。

????????它通常用于表示当前的文档或应用程序路径。

????????例如,在URI `http://www.example.com:80/index.html`中:

????????`http` 是指定协议的方案。

????????`www.example.com:80` 是授权部分,包括域名和端口号。

????????`/index.html` 是绝对路径,指定了从服务器根目录到资源的具体路径。

????????简而言之,URI中的层次路径是用来指明如何在互联网上找到一个特定资源的部分,它可以以不同的形式出现,根据资源在服务器上的位置不同而不同。

2.3 授权部分

????????授权部分(Autorité):URI中用来标识资源所在的服务器或主机信息。它通常包含用户信息、服务器地址和端口号。

????????用户信息(Userinfo):通常是用户名,有时还包括密码,用于登录服务器。

????????主机(Host):服务器的地址,可以是IP地址或者域名。

????????端口号(Port):服务器上用来监听网络请求的端口。

????????例如,`root@192.168.0.1:8080`表示用户名是root,服务器地址是192.168.0.1,端口号是8080。

2.4 路径

????????路径(Chemin):在服务器上指定资源具体位置的部分。它描述了从服务器的根目录开始到达资源所需经过的目录路径。

????????路径可以是绝对路径,从服务器根目录开始。

????????也可以是相对路径,相对于当前目录或页面。

????????如果没有路径,就是空路径,通常指的是当前目录或页面。

2.5 查询(Question)

????????查询(Question):这通常指的是一个URI中用于传递参数的部分,可以包括多个参数,每个参数都用`&`符号分隔。这些参数可以是搜索参数、过滤选项或其他形式的数据,用于进一步指定如何访问或显示资源。查询部分在URI中以问号`?`开始,后面跟随参数。参数可以包含字符、数字、某些符号以及斜杠`/`和额外的问号`?`。

????????例如,在URI `http://www.google.fr/search?q=cnam`中,`q=cnam`是查询部分,它告诉服务器用户正在尝试搜索关键字“cnam”。

2.6 片段(Fragment)

????????????????片段(Fragment):通常用于指向文档内部的特定部分,如一个网页中的锚点。在浏览器中,片段不会发送到服务器,而是由浏览器本地解释,用来滚动到页面的指定部分。片段在URI中以井号`#`开始,后面跟随锚点标识符。

????????例如,如果一个HTML文档有一个ID为`section1`的部分,那么URI `http://www.example.com/document.html#section1`中的片段`#section1`将指导浏览器滚动到该文档中ID为`section1`的部分。

????????总体来说,查询和片段都是URI的可选部分,用于精确地访问和定位网络资源。

3. 记忆重点

????????URL、URN和URI的概念以及它们之间的关系

3.1?经典观点

????????URL(Uniform Resource Locator):通常被视为资源的“位置”,它描述了资源的访问机制,如何找到并获取资源。

????????URN(Uniform Resource Name):被看作是资源的名字,它独立于资源的位置,即使资源移动了,URN也不会变。

????????URC(Uniform Resource Citation):被认为是资源的元数据的指针,现在这个术语较少使用。

3.2?现代统一视角

????????在现代互联网标准中,所有这些类型的标识符都被视为URI(Uniform Resource Identifier)的特定类型。

????????URI:是一个统一的概念,用来标识各种资源,无论是通过位置(URL),名称(URN),还是其他方式。

????????例如,一个URL是一个URI,它通过其访问机制(比如HTTP协议)来标识资源。

????????http:` 和 `urn:` 都是URI方案的例子。`http:` 用于标识资源的位置,而`urn:` 用于标识资源的名称。

????????urn:isbn:n-nn-nnnnnn-n` 是一个URN示例,它使用国际标准书号(ISBN)作为书籍的唯一标识。

????????这种统一的视角认为,URI是一个覆盖多种资源标识方式的广泛概念,URL和URN都是这个更广概念下的特定情况。

4. 总结

????????文本说明了URI(统一资源标识符)是什么,以及它的用途:

????????URI:是一种用于在互联网上找到资源(比如文档或服务)的地址。它可以是绝对地址,也可以是相对地址。绝对地址提供了找到资源的完整信息,而相对地址则需要结合当前的上下文来解析。

????????资源定位:URI包含定位信息,这些信息帮助我们识别和定位资源。但是,如果资源移动到了新的位置,URI可能不会更新,因此可能无法追踪到新的位置。

????????非描述性:URI不是用来描述资源内容的,也就是说,它不包含资源的元数据(描述信息)。

????????规范:关于URI的详细规范和信息可以在W3C(万维网联盟)的网站上找到,网址为`http://www.w3.org/Addressing`。

????????总的来说,URI就像互联网上资源的地址,帮助你找到存储在网络某处的资源,但它不提供资源的详细描述。

文章来源:https://blog.csdn.net/weixin_65190179/article/details/134821874
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。