RSS3被web3范畴视为一个很有前景的项目,近期,我一直在体会web3运用,想试着去找到web3中心要素的一些界说范式,恰巧在看RSS3时,发现了我想找的一个协议,能够界说为数据标准协议,协议为RFC3986一致资源辨认符,也能够理解为一个通用语法。

其文档原文3w余字,不易阅览,因而我把文档做了很多修改,为理解web3的数据格局,做一个典范。

要知晓的是,该标准是互联网信息标准,出现运用时间很早,RSS3是在这个根底上作出的一些开发实践以在web3范畴运用。

RSS3

RSS3是一个开放的信息联合协议,旨在支撑Web3中高效和分散的信息分发。它界说了信息呈现和通信的格局,其他运用方能够轻松地以一致的格局拜访各种内容源,而无需很多的兼容逻辑。

在RSS3协议里将信息分为四种类型:配置文件、链接、资产、注释

RSS3运用程序运用RSS3SDK以RSS3协议界说的格局拜访和发布数据,RSS3SDK从RSS3网络获取数据并将数据发布到RSS3支撑的网络,RSS3Network从各种RSS3SupportedNetworks爬取数据,将数据缓存到自己的高效数据库中,做一些预处理,例如运用人工智能引荐算法,供给搜索功能。

在这样的产品设计里,其最原始的数据标准,是对网络传输数据进行一些细节的界说来完结的,界说了数据,就完结了根底的数据可用性部分。上层运用就能够更轻松完成,让咱们来看这个协议:RFC3986一致资源辨认符。经过修改后的内容,笔者力求达到简略了解互联网数据处理的一些相关要求。

RFC3986:一致资源辨认符

本标准源自RFC2396[RFC2396]、RFC1808[RFC1808]和RFC1738[RFC1738],还包括更新(与更正)用于主机语法中的IPv6文字。

一致资源标识符(URI)是一个紧凑的序列标识抽象或表明物理资源的字符,供给了一个简略且可扩展的用于辨认资源的办法。标准界说了通用URI语法和相对方法的URI引证的进程解析,以及运用URI的指南和安全注意事项。

URI语法则界说了一个语法超集,有用的URI答应完成公共组件解析,完成在非特定计划要求的状况下运用URI引证每个或许的标识符,标准没有界说URI的生成语法。

一致资源标识符(URI)语义来源于WorldWide引进的概念Web全球信息倡议,语法旨在满足“Internet功能性主张”中列出的资源定位器[RFC1736]和一致资源称号功能的要求[RFC1737]。

本文档抛弃了[RFC2396],兼并了“一致资源定位器”[RFC1738]和“相对一致资源定位器”[RFC1808]以便为一切URI界说一个单一的通用语法。抛弃[RFC2732],引进了IPv6地址的语法。

URI的特点

均匀性

它答应不同类型的资源在同一上下文中运用相同的资源标识符,即便在用于拜访这些资源的机制或许不同。

它答应对常见句进行一致的语义解说完结对跨不同类型资源标识符的约定。

它答应引进新类型的资源标识符,而不会干扰现有标识符的运用办法。

它答应标识符在许多不同的上下文中重复运用,然后答应新的运用程序或协议利用现有的、很多且广泛运用的资源标识符集。

资源

“资源”一词在一般意义上指任何或许由URI标识的内容。熟悉的例子包括电子文档、图画、信息源、服务和其他的资源集。资源不一定经过互联网拜访。同样地,抽象概念也能够是资源,例如运算符和数学方程的操作数,关系的类型(例如,“爸爸妈妈”或“员工”),或数值(例如,零,一,无穷大)。

标识符

标识符表现了对所需信息区别并从其范围内的一切其他事物中辨认出的内容辨别进程。但这些界说不该该被误认为是标识符的界说或表现所引证内容的身份,在许多状况下,URI用于表明资源,但不表明能够被拜访。同样,标识的“一个”资源或许本质上不是单数的(例如,一个资源或许是一个命名集或一个随时间变化的映射)。

URI具有大局范围,而且不管何种状况都被用来一致地解说上下文,尽管这种解说的结果或许在与最终用户的上下文相关。例如,“http://localhost/”对该引证的每个用户都有相同的解说,即便与“localhost”对应的网络接口或许是不同的用户,这代表:解说与拜访无关。

通用语法

URI语法是一种联合且可扩展的命名体系,其间每个计划的标准能够进一步约束运用该计划的标识符的语法和语义。

URI引证运用独立解析机制,经过该机制,协议和数据运用URI引证的格局能够参考这个标准的一切答应语法范围来界说URI,还包括那些没有界说的计划。

通用URI语法的解析器能够将任何URI引证解析为其主要组成部分。计划确认后,进一步

能够对组件执行特定于计划的解析。换句话说,URI通用语法是一切URI语法的超集

URI、URL和URN

URI能够进一步分类为定位符、称号或两者。

“一致资源定位器”(URL)指的是URI的子集。除了辨认资源之外,还供给了一种经过描绘资源的拜访机制来定位资源的办法(例如,它的网络“方位”)。

“一致资源称号”(URN)曾用于指代在资源不复存在或变为不可用状况下仍保持大局唯一属性的任何其他URI。

URI是来自非常有限的集合:拉丁字母、数字、和一些特别字符。

URI能够用多种方法表明办法;例如,纸上的墨水、屏幕上的像素或一系列字符编码八位字节。URI的解说仅取决于运用的字符。在本地或区域环境中,随着技术的进步,用户能够运用更广泛的字符。

辨认与交互别离

对URI的一个常见误解是它们仅用于引证到可拜访的资源。URI自身只供给辨别,不确保拜访资源URI的存在暗示。相反,任何相关的URI引证由协议元素界说,例如数据格局属性或它出现的自然语言文本。

给定一个URI,体系或许会测验在资源上执行各种操作,或许以“拜访”“更新”、“替换”或“查找属性”等词为特征。这样的操作是由运用URI的协议界说。

分层标识符

URI语法是分层组织的,组件重要性从左到右递减的顺序排列。

通用语法运用斜杠("/")、问号("?")和数字符号(“#”)字符来分隔组件,对通用解析器的层次解说很重要,除了此类的可读性标识符一致运用熟悉的语法,跨命名计划的层次结构的一致表明答应相对于该层次结构进行的独立于计划的引证。

一般状况下,一组或“树”形状的文档现已构建服务于一个一起意图,这些文档中绝大多数的URI引证指向树中的资源而不是在它之外。坐落特定方位的文档站点更有或许引证该站点上的其他资源而不是远程站点的资源。URI的引证答应文档树部分独立于其方位和拜访计划。

语法符号

运用ABNF[RFC2234]的表明法,包括以下中心ABNF语法规矩:

ALPHA(字母)、CR(回车)、DIGIT(十进制数字)、DQUOTE(双引号)、HEXDIG(十六进制位)、LF(换行)和SP(空格)等。

URI语法供给了一种编码数据的办法,大概是为了为了将资源标识为字符序列。URI反过来,字符常常被编码为八位字节以进行传输或演示。

ABNF表明法将其终端值界说为非负数,根据US-ASCII编码字符集的整数(代码点)[ASCII]。由于URI是一个字符序列,所以咱们有必要回转该关系以便理解URI语法。因而,ABNF运用的整数值有必要映射回US-ASCII对应字符以完结语法规矩。

保存字符

URI包括各项分隔的组件和子组件“保存”的字符。

保存字符的意图是供给一组分隔符与URI中的其他数据区别开的字符。保存字符的子集(gen-delims)用作通用URI组件的分隔符。一种组件的ABNF语法规矩不会运用reserved或gen-delims直接命名,相反,每个语法规矩都列出了字符答应在该组件内(即,不定界),其他子组件能够由URI计划的标准界说。

无保存字符

URI中答应但没有保存字符的字符,包括大写和小写字母、十进制数字、连字符、句点、下划线和波涛号。

未保存=ALPHA/DIGIT/"-"/"."/“_”/“~”

将非保存字符替换为不同的URI,但其相应的百分比编码的US-ASCII八位字节是等效的:它们辨认相同的资源。为了一致性,在ALPHA范围内的百分比编码八位字节(%41-%5A和%61-%7A)、DIGIT(%30-%39)、连字符(%2D)、句点(%2E)、URI不该创建下划线(%5F)或波涛号(%7E)出产者,当在URI中找到时,应将其解码为URI标准器对应的未保存字符。

辨认数据

URI字符为每个URI供给标识数据组件,作为辨认的体系外部接口。

URIs的出产和传输:本地称号和数据编码,公共接口编码、URI字符编码、数据格局编码和协议编码。

本地称号(例如文件体系称号)存储在本地字符编码。URI生成运用程序(例如,源服务器)一般运用本地编码作为根底发生有意义的姓名。URI出产者将转化本地编码为合适公共接口的编码,而且然后将公共接口编码转化为受限集URI字符(保存、未保存和百分比编码)。

反过来,这些字符被编码为八位字节以用作数据格局(例如,文档字符集)中的引证等数据格局一般随后被编码以传输互联网协议。

在某些状况下,URI组件和辨认它所代表的数据要直接比字符编码翻译少得多。

语法组件

通用URI语法由一个分层序列组成,有计划、权限、途径、查询和分段。

计划和途径组件是必需的,尽管途径或许是空(无字符)。当权限存在时,途径有必要能够为空或以斜杠(“/”)字符最初。什么时候权限不存在,途径不能以两个斜杠最初人物(”//”)。这些约束导致五种不同的ABNF途径规矩,其间只有一个匹配任何给定的URI引证。

计划

每个URI都以一个计划称号最初,该计划称号引证了一个标准在该计划中分配标识符。

计划称号由一系列以a最初的字符组成字母,后跟字母、数字和加号的恣意组合("+")、句点(".")或连字符("-")。

计划=ALPHA*(ALPHA/DIGIT/"+"/"-"/".")

权限

许多URI计划包括用于命名的分层元素权限,以便管理由URI的其余部分托付给该组织。通用语法供给了一个通用的根据注册称号或服务器地址,以及可选的端口和用户信息。

权限组件前面有一个双斜杠(“//”),而且是以下一个斜杠("/")、问号("?")或数字结尾符号(“#”)字符,或在URI的结尾。

权限=[用户信息“@”]主机[“:”端口]

主机

权限的主机子组件由IP文字标识封装在方括号中。在许多状况下,主机语法仅用于创建和布置的现有注册流程DNS,然后取得一个全球唯一的称号,无需花费布置另一个注册表。

主机=IP字段/IPv4address/reg-name

IP字段=“[”(IPv6地址/IPvFuture)“]”

IPvFuture="v"1*HEXDIG"."1*(未保存/子分隔符/":")

查询

查询组件包括非分层数据,以及途径组件中的数据,用于辨认URI计划和命名组织范围内的资源。

查询组件由问题表明符号("?")字符并以数字符号("#")字符结尾。

查询=*(pchar/"/"/"?")

用法

当运用程序引证一个URI时,它们并不总是运用由“URI”语法规矩界说的完整引证方法。保存空间和利用分层局部性,许多互联网协议元素和媒体类型格局答应缩写URI,而其他人将语法约束为特定方法的URI。

树立根底URI

除了仅片段引证,根本URI是已知需求的。解析器有必要树立一个根本URI。根底URI有必要契合<absolute-URI>语法规矩。

根本URI能够经过以下四种办法之一树立

嵌入在内容中的根本URI

封装实体的根底URI

用于检索实体的URI

默许根底URI(取决于运用程序)

标准化和比较

URI上最常见的操作是简略的比较:在不运用URI的状况下确认两个URI是否等价拜访他们各自的资源。在比较URI之前一般进行广泛的标准化。URI比较是为了某些特定意图而执行。

等价

由于URI的存在是为了辨认资源,所以当他们辨认相同的资源时被认为是等效的。然而,这个等价的界说没有太大的实践用途,由于是没有办法比较两个资源的,除非它彻底了解或操控它们。

即便能够确认两个URI是等价的,URI比较不足以确认两个URI辨认不同的资源。

根据语法的标准化

根据语法的标准化包括以下技术事例归一化、百分比编码归一化和去除点段。

安全注意事项

URI自身并不构成安全要挟。可是URI一般用于供给一组紧凑的指令以拜访

网络资源,有必要注意在URI中正确解说数据,以防止该数据导致意外拜访,避免包括不该公开的数据文本。

灵敏信息

URI出产者不该供给包括用户名或旨在保密的密码。URI常常由浏览器显示,存储在明文书签中,并由用户署理历史和中心运用程序(署理)。

语义进犯

由于userinfo子组件很少运用,出现在权限组件中的主机,能够用来构造一个URI来误导用户信赖,例如

ftp://cnn.example.com&story=break_news@10.0.0.1/top_story.htm

或许会导致用户假定主机是“cnn.example.com”,而它实践上是'10.0.0.1'。一个误导性的URI,或许是对用户的进犯,这进犯的是用户先入为主的概念。关于软件自身,能够经过区别URI的各个组成部分来避免此类进犯。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注