一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于更高效数字通信的屏蔽的分组校验和的制作方法

2022-03-19 18:20:54 来源:中国专利 TAG:

用于更高效数字通信的屏蔽的分组校验和


背景技术:

1.发送计算设备与接收计算设备之间的计算机网络通信通常需要发送计算设备将要传送的数字数据划分成离散的分组并通过计算机网络发送分组,并且通常需要接收计算设备从计算机网络接收分组并从中重新组装数字数据。因为计算机网络通信可以通过有损通信介质被发送,所以经常使用检错和/或纠错方案。一种常见的检错方案可能需要在每个分组的基础上使用检错码。可以丢弃其检错码与期望值不匹配的接收的分组,并且如果合适,接收计算设备可以请求发送计算设备重新发送丢弃的分组。
2.每次重传都会使整个计算机网络通信的效率降低,诸如通过降低在发送计算设备与接收计算设备之间发送的数字数据的吞吐量。在一些情况下,检错可以不适用于计算机网络通信,从而增加了在发送计算设备与接收计算设备之间发送的数字数据的吞吐量。然而,在这种情况下,没有机制来确定接收的分组的任何部分是否被正确接收,因此,这种机制只能在接收计算设备不知道任何特定分组的正确性的情况下被正确使用。


技术实现要素:

3.屏蔽的分组校验和可以用于仅针对分组的离散部分提供检错和/或纠错,以排除其他部分,从而避免如果分组传输中的错误仅出现在由屏蔽的分组校验和所排除的部分中的低效重传。以这种方式,可以基于特定的通信需求来调整检错和/或纠错,因此,如果不需要完整的检错和/或纠错,则可以实现更高效的数字通信。位掩码可以标识其数据将被检错和/或纠错方案保护的分组的部分、其数据将被排除在这种检错和/或纠错方案之外的分组的部分、或它们的组合。位掩码可以是每个分组的规范,并且可以被合并到单独的分组的一个或多个字段中。单个位掩码还可以同等地应用于多个分组,这些分组可以基于分组标识符、生成这种分组的源、特定的通信流或其他类似的通信结构来划定。这种位掩码可以与多个分组分开发送,或者可以由发送计算设备和接收计算设备基于共享的种子信息彼此独立地共同推导。其数据将被检错和/或纠错方案保护的分组的部分的标识可以基于可直接解密的编码枚举,或者可以通过参考外部资源(诸如标识选项的字典(dictionary))来压缩和解密的编码枚举。在由较低层提供的检错和/或纠错被停用的情况下,可以在仍然进行检错和/或纠错的最高层处生成位掩码,或者可以基于从较高层向下传递的数据在最低层处生成位掩码。
4.提供本发明内容是为了以简化的形式介绍将在下面的详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
5.从下面参考附图进行的详细描述中,其他特征和优点将变得显而易见。
附图说明
6.当结合附图时,可以最好地理解以下详细描述,其中:
7.图1是使用屏蔽的分组校验和的示例性系统的系统图;
8.图2是使用屏蔽的分组校验和的示例性分组的系统图;
9.图3是使用屏蔽的分组校验和的附加示例性分组的系统图;
10.图4是使用屏蔽的分组校验和的示例性发送和接收分组的系统图;
11.图5是使用屏蔽的分组校验和的另一示例性发送和接收分组的系统图;
12.图6是使用屏蔽的分组校验和的示例性发送数据的流程图;
13.图7是使用屏蔽的分组校验和的示例性接收数据的流程图;以及
14.图8是示例性计算设备的框图。
具体实施方式
15.以下描述涉及用于调整检错和/或纠错以仅应用于分组的标识的离散部分以排除其他部分的机制,从而避免分组传输中的错误仅出现在排除的部分中时的低效重传。可以使用屏蔽的分组校验和来执行这种调整。以这种方式,可以基于特定的通信需求来调整检错和/或纠错,因此,如果不需要完整的检错和/或纠错,则可以实现更高效的数字通信。位掩码可以标识其数据将被检错和/或纠错方案保护的分组的部分、其数据将被排除在这种检错和/或纠错方案之外的分组的部分、或它们的组合。位掩码可以是每个分组的规范,并且可以被合并到单独分组的一个或多个字段中。单个位掩码还可以同等地应用于多个分组,这些分组可以基于分组标识符、生成这种分组的源、特定的通信流或其他类似的通信结构被划定。这种位掩码可以与多个分组分开发送,或者可以由发送计算设备和接收计算设备基于共享的种子信息彼此独立地共同推导。其数据将被检错和/或纠错方案保护的分组的部分的标识可以基于可直接解密的编码枚举,或者可以通过参考外部资源(诸如标识选项的字典)来压缩和解密的编码枚举。在由较低层提供的检错和/或纠错被停用的情况下,可以在仍然进行检错和/或纠错的最高层处生成位掩码,或者可以基于从较高层向下传递的数据在最低层处生成位掩码。
16.尽管不是必需的,但是下面将在由计算设备执行的诸如程序模块之类的计算机可执行指令的一般上下文中进行描述。更具体地,除非另有说明,否则该描述将参考由一个或多个计算设备或外围设备执行的动作和操作的符号表示。这样,应该理解,这种有时被称为计算机执行的动作和操作包括由处理单元对以结构化形式表示数据的电信号的操纵。这种操作转换数据或将其维持在存储器中的位置,这以本领域技术人员熟知的方式重新配置或以其他方式改变计算设备或外围设备的操作。维持数据的数据结构是具有由数据格式定义的特定属性的物理位置。
17.通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。此外,本领域技术人员将理解,计算设备不必限于传统的个人计算机,并且包括其他计算配置,包括服务器、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、网络pc、迷你计算机、大型计算机等。类似地,计算设备不必限于独立的计算设备,因为这些机制也可以在任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。在分布式计算环境中,程序模块可以位于本地和远程的存储器存储设备中。
18.参考图1,示出了示例性系统100,为以下描述提供了上下文。示例性系统100包括示例性发送计算设备110和示例性接收计算设备120,示例性发送计算设备110和示例性接收计算设备120经由示例性网络190彼此通信耦合。出于下面提供的描述的目的,网络190可
以是分组化的通信网络,由此数字数据以诸如从示例性发送计算设备110发送到示例性接收计算设备120的离散的、单独的数据分组的形式通过网络190传送。
19.图1示出了示例性分组序列130,示例性分组序列130包括从示例性发送计算设备110发送到示例性接收计算设备120的示例性分组140。典型地,分组(诸如示例性分组140)可以包括检错码(诸如示例性检错码150)。这种检错码可以用于检测分组140中的传输错误。更具体地,在接收到(诸如由示例性接收计算设备120接收)示例性分组140时,接收计算设备120可以独立地从分组140的数据中推导出检错码。如果由接收计算设备120基于由接收计算设备120接收的分组140的数据推导出的检错码不同于由接收计算设备120接收的作为分组140的一部分的检错码150,则可以确定分组140的数字数据被接收计算设备120不正确地接收,并且接收计算设备120可以采取适当的步骤,诸如丢弃接收的分组140。
20.如果分组(诸如示例性分组140)被接收计算设备120丢弃,则在接收计算设备120上执行的进程可以请求将分组140从发送计算设备110重传到接收计算设备120,从而降低通过网络190从发送计算设备110到接收计算设备120的数据的总吞吐量。为了避免吞吐量的这种降低,可以在没有检错码(诸如示例性检错码150)的情况下发送分组,或者,接收计算设备120可以不使用检错码150对接收的分组(诸如分组140)执行检查。然而,在这种情况下,分组140的任何部分可能已经以不正确的数据被发送或接收。
21.在一些情况下,如果通过网络190在计算设备110与120之间发送的数字数据被不正确地发送或接收,则这种数字数据的某些部分可能对于证明重传合理来说足够重要,同时在计算设备110与120之间发送的数字数据的其他部分可能不那么重要,使得接收不正确数据的有害程度不足以证明导致请求重传分组中固有的低效和吞吐量损失是合理的。例如,数值的传输可以寻求防止在具有较高数值意义的位中的传输错误,同时不知道在具有较低数值意义的位中的传输错误。作为具体示例,系统(诸如示例性系统100)可能需要将值227从发送计算设备110发送到接收计算设备120。所需的精度可以是这样的,即如果接收计算设备接收到例如231或224的值,则这种值可以是“足够接近”的,并且接收的值(例如,231)与发送的值(例如,227)之间的差异对于在示例性系统100上执行的进程的有害程度可能不足以证明对于这种小错误来说重新发送分组的附加成本和低效是合理的。相反,接收例如99的值而不是227的发送值的有害程度足以证明丢弃这种不正确分组并请求重传的附加成本和低效是合理的。在数字上,值227可以被表示为八位数字11100011。如果在传输期间最低有效位中的一个最低有效位由于传输错误而被翻转,则发送的位可能确实是11100011,而接收的位可能最终是11100111,其中第三个最低有效位由于传输错误从二进制值“0”翻转到二进制值“1”。这种位翻转的结果可以是发送了值227,但是接收到值231。如前所述,这种差异的有害程度可能不足以证明丢弃接收的分组的附加成本和低效是合理的。相反,如果在传输期间最高有效位中的一个最高有效位被翻转,那么例如,发送的位可能确实是11100011,而接收的位可能最终是01100011,其中最高有效位由于传输错误从二进制值“1”翻转到二进制值“0”。这种位翻转的结果可以是发送了值227,但是接收到值99。如前所述,这种差异可能是显著的,并且携带值99的分组应该被检测为包含传输错误并被丢弃,而不是使用这种显著差异值并不利地影响后续操作。
22.根据一个方面,位掩码可以标识将被检错和/或纠错方案保护的分组的部分、将被排除在这种检错和/或纠错方案之外的分组的部分、或它们的组合。作为简单示例,可以在
上述示例中使用位掩码指定由检错和/或纠错方案来保护四个最高有效位,同时从这种检错和/或纠错方案中排除四个最低有效位。例如,位掩码可以指定仅基于四个最高有效位生成检错码,而排除四个最低有效位。在这种示例中,如果发送了八位二进制值11100011,但是接收到八位二进制值01100011,那么,在使用接收的四个最高有效位(即0110)生成检错码并且将这种生成的检错码与使用发送的四个最高有效位(即1110)生成的、与分组一起发送的检错码进行比较时,比较将揭示差异,并且可以丢弃该分组。以这种方式,可以检测并处理值227的发送和有意义的不同值(诸如99)的接收。相比之下,如果发送了八位二进制值11100011,但是接收到八位二进制值11100111,则在使用接收的四个最高有效位(即1110)生成检错码并且将这种生成的检错码与使用发送的四个最高有效位(也是1110)生成的、与分组一起发送的检错码进行比较时,比较将揭示没有差异,并且可以保留该分组。因为这种比较仅基于四个最高有效位,所以它不会检测到发送的二进制值与接收的二进制值之间在第三个最低有效位中的差异。以这种方式,值227的发送和不同值(诸如231)的接收(这对于本示例中的进程来说不是有意义地不同的)可以通过使用不同的(但是不是有意义地不同的)接收值代替请求重传这种驻留分组,来避免引发低效和吞吐量降低。
23.转到图1,示例性分组140可以被划分成部分141、142、143、144和145。未示出的位掩码可以标识特定部分,诸如示例性部分142和144,可以根据特定部分生成检错码,诸如示例性检错码150。将部分141、143和145排除在检错码150的生成之外可以导致在那些部分的数字数据中发生的传输错误保持未被检测而不请求重传,并且没有经历网络通信的吞吐量或效率的降低。回到上面的简单示例,例如,部分142可以包括八位二进制值的四个最高有效位(诸如在上面的简单示例中使用的那些),同时继续这种示例,部分143可以包括同一八位二进制值的四个最低有效位。
24.转到图2,其中所示的系统200示出了示例性分组210、220和250。示例性分组210可以是典型的分组,其中检错码213可以基于包含在示例性分组210的所有剩余部分中的数字数据,包括例如示例性报头211和示例性有效载荷212。出于说明的目的,本技术的图中示出的分组类似于示例性分组210那样来进行说明,其中矩形部分表示以从左到右的方式排列的数字数据的连续位序列。因此,例如,示例性分组210被示为包括示例性报头211、示例性有效载荷212以及示例性检错码213,示例性报头211包括八位数据,示例性有效载荷212包括二十三位数据,示例性检错码213包括单个数据位。
25.可以根据任何已知的检错机制(包括奇偶校验、循环冗余校验(crc)、校验和或其他类似的检错机制)来生成检错码(诸如示例性检错码213)。例如,基于奇偶校验的检错码可以是单个位,其指示生成这种奇偶校验位的数据是偶数还是奇数,使得如果在传输期间单个位被改变,则作为结果,将生成不同的奇偶校验位,并且将检测到错误。作为另一示例,crc是基于检错码所基于的数据的二进制除法的,该数据的剩余部分是crc检错码。如本文所使用的,术语“检错码”是指为检测其他数据的传输中的错误而生成的任何一位或多位数据。因为这种其他数据的传输中的错误可以基于检错码来检测,所以发送这种其他数据以由检错码“保护”。如本文所使用的,术语“纠错码”是指为纠正其他数据的传输中的错误而生成的任何一位或多位数据,使得如果其他数据带有错误地发送,则可以结合纠错码从接收的数据(带有错误)中重构原始的无错误数据。已知的纠错机制包括冗余码和汉明码。
26.在图2的示例性系统200中,示例性分组210包括基于分组的所有剩余数据生成的
检错码。相比之下,示例性分组220包括诸如示例性检错码223的检错码,该检错码可以仅基于示例性分组220的指定部分。例如,示例性分组220可以包括示例性报头221、示例性有效载荷222和示例性检错码223。此外,示例性分组220可以包括位掩码,诸如示例性位掩码230。位掩码可以指定分组的哪些部分被用来生成检错码,并且因此,在可以通过参考检错码来检测分组的那些部分内发生的传输错误,而不能检测分组的那些部分之外发生的传输错误的意义上,受到检错码的保护,并且因此,将不会触发分组的重传,否则会降低网络通信的效率和吞吐量。
27.根据一个方面,位掩码(诸如示例性位掩码230)可以包括数据的数字位序列,每个数字位指示在示例性检错码223的生成中是否将使用示例性分组220的对应部分。例如,如果示例性分组220被划分成示例性部分231、232、233和234,则示例性位掩码230可以包括四位数据,其中每个位指示在示例性检错码223的生成中是否将使用对应部分。例如,示例性位掩码230可以是四位的序列:0101,其指示在示例性检错码223的生成中将使用部分232和234,诸如图2中的箭头所示。虚线箭头旨在说明在示例性位掩码230中存在显式指示(肯定或否定),其指示示例性分组220的对应部分是否被包括在检错码223的生成中。这种显式指示可以是单个位,或者可以是为这种指示所对应的分组的部分提供附加的每部分细节的多个数据位。
28.备选地,位掩码可以仅标识将在检错码的生成中使用的分组的部分,其中在位掩码中对分组的部分的指示的缺失是该部分将不被包括在检错码的生成中的指示符。例如,转到图3,其中所示的示例性分组310包括示例性报头311、示例性有效载荷312和示例性检错码313。示例性位掩码320(其可以是示例性分组310的一部分)可以仅包括示例性分组310的将被用在示例性检错码313的生成中的那些部分(诸如示例性部分322和324)的指示符。在示例性位掩码320中对部分321和323中的任何部分的指示的缺失可以是对示例性部分321和323将不被用在检错码313的生成中的隐式指示。因此,如图3中用虚线箭头所示,示例性位掩码320可以仅包括在示例性检错码313的生成中将使用示例性部分322和324的显式指示,如非虚线箭头所示。
29.作为另一替代方案,位掩码可以仅标识在检错码的生成中将不被使用的分组的部分,其中在位掩码中对分组的部分的指示的缺失是该部分将被包括在检错码的生成中的指示符。例如,图3所示的示例性分组330包括示例性报头331、示例性有效载荷332和示例性检错码333。示例性位掩码340(其可以是示例性分组330的一部分)可以仅包括示例性分组330的将不被用在示例性检错码313的生成中的那些部分的指示符(诸如示例性部分341和343)。在示例性位掩码340中对部分342和344中的任何部分的指示的缺失可以是示例性部分342和344将被用在检错码333的生成中的隐式指示。因此,如图3中用虚线箭头所示,示例性位掩码320可以仅包括在示例性检错码333的生成中将不使用示例性部分341和343的显示指示。因此,如非虚线箭头进一步所示,示例性部分342和344可以被用在示例性检错码333的生成中。
30.转到图2,可以以许多不同的方式划分示例性分组220的示例性部分231、232、233和234,并且可以以许多不同的方式标识、记录和/或传送其规范(specification)。例如,部分231、232、233和234中的每一个在大小方面可以是位数量相等的,或者它们可以被单独地调整大小,使得部分231、232、233或234中的一个部分中的位数量可以不同于部分231、232、
233或234中的任何一个或多个其他部分中的位数量。部分231、232、233和234的规范和/或划定(delineation)可以是位掩码(诸如示例性位掩码230)的一部分。替代地,每个部分中的位数量可以是预定的,或者可以是设定的量。例如,分组的位可以被划分成32位的分段,其中位掩码(诸如示例性位掩码230)中的指示符被理解为以与指示符相同的次序对应于顺序的分段。例如,示例性位掩码230可以包括二进制数字值0101,其中第一数字位(“0”)被理解为对应于示例性分组220的第一个三十二位(诸如可以由示例性部分231表示),第二数字位(“1”)被理解为对应于示例性分组220的第二个三十二位(诸如可以由示例性部分232表示),第三数字位(“0”)被理解为对应于示例性分组220的第三个三十二位(诸如可以由示例性部分233表示),第四数字位(“0”)被理解为对应于示例性分组220的第四个三十二位(诸如可以由示例性部分234表示)。作为又一替代方案,分组的部分(诸如示例性部分231、232、233和234)的划定可以是示例性分组220本身的一部分。例如,分组内的数据可以指示前一部分的结束和后一部分的开始。作为另一替代方案,分组的部分(诸如示例性部分231、232、233和234)的划定可以独立于单独的分组(诸如示例性分组220)。例如,分组的部分的划定可以与任何一个分组分开发送,可以预先商定,或者可以使用其他类似的显式或隐式的划定机制。
31.虽然被示为跨越分组的已建立部分(诸如报头部分、有效载荷部分等)的边界,但是分组的部分的划定可以基于这种边界。例如,第一划定的部分可以基于有效载荷部分的开始或结束来划定。同样可以使用分组的部分的其他划定或标识。
32.根据一个方面,位掩码(诸如示例性位掩码230)可以独立于这种位掩码可以应用到的任何一个或多个分组被发送。例如,如示例性系统240所示,位掩码260可以应用于多个分组,诸如示例性分组250、271、272和273。示例性分组250、271、272和273可以以各种不同的方式被标识为对应于位掩码260。例如,位掩码260可以标识发送应用、或要被分组的数据的其他源、或数据分组的源,并且可以应用于源自这种源的所有分组。作为另一示例,同样可以使用流的标识、流程、通信信道、端口、消息标识符、或者位掩码260将应用到的一个或多个分组的其他类似标识。替代地或者另外,每个分组(诸如示例性分组250、271、272和273)可以单独地包括标识或相关性,该标识或相关性指示这种示例性分组的检错码(诸如示例性分组250的示例性检错码253)是根据主要指示哪些部分(诸如示例性部分261、262、263和264)被用于生成检错码的位掩码260的信息生成的。
33.位掩码(诸如示例性位掩码260)可以由发送计算设备和接收计算设备独立地推导,而不是被独立地发送。例如,可以预先商定共同使用的位掩码,并且可以在计算设备之间交换特定位掩码的标识。类似地,可以预先交换共同使用的位掩码,并且对这种位掩码的参考可以被包括在单独的分组中,以代替上面详述的部分的显式指示符。因此,例如,示例性位掩码230(而不是如上详述的位序列)可以替代地包括先前商定的位掩码的标识,其可以使用比位掩码本身更少的数字数据来标识。作为简单示例,如果仅使用两个位掩码,其中一个位掩码指定当生成示例性检错码223时仅使用分段232和234,这种位掩码是二进制数字0101的形式,如上详述,并且另一个位掩码指定当生成示例性检错码223时仅使用分段231和233,这种位掩码是二进制数字1010的形式,那么,代替指定所有四个二进制数字的分组,可以使用参考先前商定的掩码的码,其中二进制值“0”的码表示第一个位掩码,二进制值“1”的码表示另一个位掩码,从而节省每个单独分组内的空间。
34.转到图3,虽然上面已经参考了检错码,但是这些描述同样适用于纠错码。更具体地,可以使用位掩码来指定分组的哪些分段或部分受到纠错码的保护,纠错码可以允许将在发生传输错误的情况下重构那些部分中的原始发送数据。根据一个方面,位掩码可以包括将被包括在检错码中的分组的分段的标识,并且还可以单独地包括将被包括在纠错码中的分组的分段的标识。例如,示例性分组350示出了示例性位掩码360,该示例性位掩码360可以标识在检错码353的生成中使用分段361、362、363和364中的哪个分段,其中示例性位掩码360还标识在纠错码354的生成中使用分段361、362、363和364中的哪个分段。例如,如图所示,示例性位掩码360可以标识将用在检错码353的生成中的分段362和364,但是可以标识仅分段362将被用在纠错码354的生成中。在这种情况下,如果传输错误发生在分段362或364内,则可以检测到该传输错误,但是只有分段362内的传输错误可以被纠正而不需要重传。位掩码(诸如示例性位掩码360)可以标识哪些部分将被用在检错码的生成中以及单独地标识哪些部分将被用在纠错码的生成中的一种机制可以是为每个部分包括两个位,其中一个位指示该部分是否将被用在检错码的生成中,并且第二个位指示该部分是否将被用在纠错码的生成中。因此,例如,示例性位掩码360可以包括00110010形式的数字位的序列,其中前两个数字位分别标识对应部分361是否将被用在检错码353的生成中和纠错码354的生成中,接下来的两个数字位标识对应部分362是否将被用在检错码353的生成中和纠错码354的生成中,等等。
35.根据一个方面,为了与现有的网络硬件和软件(诸如网络接口卡驱动程序)一起使用,现有的检错机制可以在软件和/或网络硬件的这种较低级别处被停用,并且上述机制可以用于在较高级别处执行检错和/或纠错。如本文所使用的,术语“较高层”或“较低层”参考常见的分层网络通信模型,诸如众所周知的osi模型,但是不指特定模型的任何特定层。
36.转到图4,其中所示的示例性系统400示出了使用上面详述的可调整检错机制将数据从发送计算设备110发送到接收计算设备120。最初,较高级别的应用(诸如在示例性发送计算设备110上执行的应用)可以生成数据(诸如示例性数据410),该数据只有一部分(诸如示例性部分411)可能需要在传输中保护其准确性。例如,返回上面提供的简单示例,数据410可以包括八位二进制值,其中四个最高有效位是其准确性将在传输中受到保护的部分411,而数据410的剩余部分(即四个最低有效位)不需要这种准确性保护或检错。
37.根据一个方面,可以将部分411的标识412与数据410一起提供给较低级别的进程,诸如网络传输进程。这种进程可以将数据分组,诸如分组成示例性分组420。在图4所示的简化图示中,示例性数据410可以是示例性分组420的示例性有效载荷422的一部分,示例性分组420还可以包括示例性报头421、示例性位掩码423和示例性检错码424。较低级别的进程可以使用标识412来确定适当的位掩码(诸如示例性位掩码423),位掩码可以标识与其准确性将在传输中受到保护的数据411相对应的有效载荷422的适当部分(诸如示例性部分425),作为将被用在示例性检错码424的生成中的部分。示例性位掩码423可以根据上面详述的机制来标识示例性部分425。然后可以基于示例性部分425来生成示例性检错码424,也如上详述。
38.随后,示例性分组420可以被提供给传输层,该传输层可以进一步将分组420分组,诸如通过生成包括分组420作为其有效载荷432的分组(诸如示例性分组430)来分组。此外,根据已知的检错码生成机制,示例性分组430可以包括报头431和检错码433。示例性分组
430然后可以通过网络190从发送计算设备110被发送到接收计算设备120。
39.接收计算设备120可以接收与分组430相对应的分组460,尽管如上详述可能存在传输错误。根据一个方面,可以已经使用不提供检错调整的已知机制来生成发送分组430的检错码433,发送分组430的检错码433可以作为接收的分组460的检错码463被接收。相应地,将接收的检错码463与在接收计算设备120上生成的独立生成的检错码进行比较,可以导致整个分组460被丢弃。这种动作可能会使上面详述的由检错码424结合位掩码423提供的可调整检错的益处无效。为了防止这种无效,并且能够利用具有现有的网络硬件和软件使用上述可调整检错机制,可以停用由这种现有的网络硬件和软件提供的检错。例如,接收计算设备120可以使用直通路由451,使得接收的分组(诸如示例性分组460)不会在数据链路层处被检错和/或纠错,而是替代地被传递给较高级别的软件进程。由已知机制生成的检错码463可以被忽略,并且不用于检查分组的错误,如灰色的检错码463所示。
40.接收的分组460的有效载荷462可以被拆包,并且分组470可以被提供给较高级别的软件进程。这种较高级别的软件进程可以实现上面详述的可调整检错机制。例如,可以参考示例性分组470的示例性位掩码473来标识示例性分组470的哪些部分将被用于独立地生成检错码,该检错码可以与作为接收的分组470的一部分被接收的示例性检错码474进行比较。基于位掩码473,可以仅使用分组470的部分475来生成检错码,并且可以将该生成的检错码与接收的检错码474进行比较。如果比较揭示没有差异,则可以确定没有发生影响部分475中的数据的传输错误。接收的分组470的有效载荷472然后可以被拆包到数据480中,然后数据480可以被提供给接收应用。提供给接收应用的数据480包括其准确性在传输中受到保护的部分481。因此,数据480的提供不一定意味着所有数据480都被没有传输错误地接收,而仅仅意味着部分481内的数据被没有传输错误地接收。再次回到上面提供的简单示例,如果部分481是八位数字的四个最高有效位,那么数据480的值可能与数据410的值相差一点点,因为错误可能已经随着其在网络190上的传输而被引入四个最低有效位,但是这种差异可以被限制,因为四个最高有效位是被无错误地接收的。相比之下,如果使用来自位掩码473的信息在接收计算设备120上独立生成的检错码与检错码474不匹配,则可以确定部分475很可能被错误地发送,相应地,接收的分组470可以被丢弃并重发。数据480以虚线示出,以指示其对接收应用的提供取决于检错码的匹配,如本文所详述。以这种方式,两个应用可以传送其所需准确性可以用来调整检错级别的数据,使得需要较低准确性的数据可以在检错仅被应用于分组的较小部分的情况下被发送,从而导致由于传输错误而引起较少的重传,并且导致更高的吞吐量和更高的效率,而需要较高准确性的数据可以在检错被应用于分组的较大部分的情况下被发送,从而潜在地导致由于传输错误而引起更多的重传,并且相应地导致更低的吞吐量和更低的效率。图4中所示的示例性系统400示出了一种机制,通过该机制,可以用现有的网络硬件和软件来实现这种可调整检错。
41.转到图5,其中所示的示例性系统500示出了使用上面详述的可调整检错机制将数据从发送计算设备110发送到接收计算设备120,诸如这些可调整检错机制可以在网络栈的较低层处执行的软件和/或硬件中实现。更具体地,示例性系统500同样示出了由在发送计算设备110上执行的应用发送的数据,即示例性数据510,其可以包括其准确性将在传输中受到保护的数据,诸如示例性部分511。标识部分511的信息(诸如示例性标识512)可以向下传递到网络栈的较低层,并且可以用于以上面详述的方式生成位掩码(诸如示例性位掩码
523)。示例性位掩码523可以是示例性分组520的一部分,示例性分组520包括报头521以及数据510被分组到其中的有效载荷522。示例性位掩码523可以标识分组520的一部分(诸如示例性部分525),示例性部分525将用于生成检错码,从而保护可以与分组520的部分525相对应的部分511的准确性。
42.然而,检错码的生成不能作为分组520的生成的一部分来执行。相反,根据一个方面,当分组520向下传递到网络栈时,它可以诸如以图5所示的方式被合并到连续较低级别生成的分组的有效载荷中。例如,示例性分组520可以被分组到较低层分组(诸如示例性分组530)的有效载荷532中,示例性分组530还可以包括报头531和位掩码533,位掩码533指定示例性分组530的哪些部分将用于生成检错码534。根据一个方面,分组520的位掩码523的信息可以向下传递,诸如提供给“生成分组”函数调用的参数向下传递到这种较低层中。位掩码523的信息可以被合并到位掩码533中作为分组530的生成的一部分,这也需要将分组520分组到分组530的有效载荷532中。例如,示例性位掩码533可以包括指示分组530的部分535将用在分组530的检错码534的生成中的指示符。如前所述,部分535可以对应于分组520的部分525,部分525又可以对应于其准确性将在传输中受到保护的部分511,如前所述。
43.根据一个方面,在(诸如由分组530表示的)最低层处,位掩码533可以包括分组530的一部分的标识,该部分至少与报头531相对应。以这种方式,分组530的检错码534也可以保护报头信息531,使得可以检测报头531内发生的传输错误。由示例性位掩码533指示的、将用在示例性检错码534的生成中的示例性分组531的部分在图5中经由虚线被示出。
44.示例性分组530可以通过网络190从发送计算设备110被发送到接收计算设备120,在接收计算设备120中示例性分组530可以作为接收的分组560被接收。位掩码563可以用于确定当独立生成检错码以与接收的检错码564进行比较时将使用示例性分组560的哪些部分。如前所述,这种部分可以用于独立生成检错码,并且将这种独立生成的检错码与接收的检错码564进行比较。如果这种比较揭示了两者之间的差异,那么可以确定在用于生成检错码的部分中的一个部分内已经发生了传输错误,并且可以丢弃分组560。然后可以进行重传请求,使得发送计算设备110再次通过网络190向接收计算设备120发送分组530。然而,如果生成的检错码与接收的检错码564匹配,则示例性有效载荷562可以被提取到例如示例性的更高级别的分组570中,分组570包括报头571和有效载荷572。反过来,示例性的更高级别的分组570可以被拆包到示例性数据580中,示例性数据580可以被提供给接收应用。如前所述,可以已经检测出数据581的部分(对应于分组570的部分575,部分575对应于分组560的部分565)内的任何传输错误,因此,部分581内的数据的准确性可以已经在传输中受到保护。
45.转到图6,其中所示的示例性流程图600示出了可以由发送计算设备执行的示例性步骤系列。最初,在步骤610,可以接收将被发送的数据用于分组化和传输。作为这种数据的分组化的一部分,在步骤620可以确定步骤610的数据的任何特定部分是否需要在传输中保护其准确性的标识或确定。随后,在步骤630,可以生成位掩码,该位掩码可以标识分组内的连续数据范围,该分组包括来自步骤610的将被发送的数据的至少一部分。如上详述,在步骤630生成的位掩码可以是许多不同格式中的任何格式,包括例如数字位序列,其中各自的一个或多个位与分组的一部分相关,并且指示这种部分是否将被包括在检错码的生成中。在步骤640,可以生成分组,该分组包括来自步骤610的数据的至少部分。在步骤640,这种分
组的生成可以包括检错码的生成,该检错码可以根据由来自步骤630的相对应的位掩码所标识的部分生成。可以在步骤650发送在步骤640生成的分组和在步骤630生成的位掩码。如前详述,位掩码可以作为分组的一部分被发送,也可以被分开发送,并且可以应用于一个或多个分组。
46.转到图7,其中所示的示例性流程图700示出了可以由接收计算设备执行的示例性系列步骤。最初,在步骤710,接收计算设备可以接收一个或多个分组以及相对应的位掩码。如前所述,这种位掩码可以被包括在分组中,可以被分开发送,或者可以基于共享或发送的信息被独立地推导。在步骤720,使用来自接收的分组的数据,可以根据接收的分组的部分生成用于这种分组的检错码,该接收的分组的部分由与该分组相对应的位掩码所标识。随后,在步骤730,可以将在步骤720生成的检错码与接收的检错码进行比较。如果它们是相同的,如在步骤740确定的,处理可以进行到760,并且接收的分组可以被传递到接收计算设备的网络栈的较高层。相反,如果在步骤740,确定在步骤720生成的检错码和与分组一起接收的检错码之间存在差异,则可以诸如在步骤750丢弃该分组,并且如果适当则可以最终重传该分组。以这种方式,在并非所有发送的数据都需要无错误地发送的情况下,可以使用可调整检错来提高网络吞吐量和效率。
47.转到图8,示出了可以执行上述机制和动作中的一些或全部的示例性计算设备800。示例性计算设备800可以包括但不限于一个或多个中央处理单元(cpu)820、系统存储器830以及将包括系统存储器在内的各种系统组件耦合到处理单元820的系统总线821。系统总线821可以是几种类型的总线结构中的任何类型,包括存储器总线或存储器控制器、外围总线以及使用各种总线架构中的任何总线架构的局部总线。计算设备800可以可选地包括图形硬件,包括但不限于,图形硬件接口860和显示设备861,显示设备861可以包括能够接收基于触摸的用户输入的显示设备,诸如触敏的或支持多点触摸的显示设备。取决于具体的物理实现,计算设备800的cpu 820、系统存储器830和其他组件中的一个或多个可以物理上位于同一位置,诸如在单个芯片上。在这种情况下,系统总线821的一些或全部可以仅仅是单个芯片结构内的硅路径,并且出于说明的目的,其在图8中的图示可以仅仅是符号方便。
48.计算设备800通常还包括计算机可读介质,计算机可读介质可以包括可以由计算设备800访问的任何可用介质,并且包括易失性和非易失性的介质以及可移动和不可移动的介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储内容(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术实现的介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁存储设备、或者可以用于存储所需内容并可以由计算设备800访问的任何其他介质。然而,计算机存储介质不包括通信介质。通信介质通常包含计算机可读指令、数据结构、程序模块或调制数据信号(诸如载波或其他运送机制)中的其他数据,并且包括任何内容传递介质。作为示例而非限制,通信介质包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、rf、红外和其他无线介质)。任何上述的组合也应被包括在计算机可读介质的范围内。
49.系统存储器830包括易失性和/或非易失性存储器形式的计算机存储介质,诸如只
读存储器(rom)831和随机存取存储器(ram)832。基本输入/输出系统833(bios)(包含诸如在启动期间帮助在计算设备800内的元件之间传输内容的基本例程)通常被存储在rom831中。ram 832通常包含处理单元820可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制,图8示出了操作系统834、其他程序模块835和程序数据836。
50.计算设备800还可以包括其他可移动/不可移动的、易失性/非易失性的计算机存储介质。仅作为示例,图8示出了从不可移动的非易失性磁介质读取或向其写入的硬盘驱动器841。可以与示例性计算设备一起使用的其他可移动/不可移动的、易失性/非易失性的计算机存储介质包括但不限于磁带盒、闪存卡、数字多功能盘、数字录像带、固态ram、固态rom以及如上定义和划定的其他计算机存储介质。硬盘驱动器841通常通过诸如接口840的非易失性存储器接口连接到系统总线821。
51.上文讨论并在图8中示出的驱动器及其相关联的计算机存储介质为计算设备800提供了计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图8中,硬盘驱动器841被示为存储操作系统844、其他程序模块845和程序数据846。注意,这些组件可以与操作系统834、其他程序模块835和程序数据836相同或不同。操作系统844、其他程序模块845和程序数据846在此被赋予不同的编号,以说明至少它们是不同的副本。
52.计算设备800可以使用到一个或多个远程计算机的逻辑连接、在网络环境中操作。计算设备800被示为通过网络接口或适配器850连接到通用网络连接851(到网络190),网络接口或适配器850又连接到系统总线821。在网络环境中,相对于计算设备800或其部分或外围设备描述的程序模块可以被存储在通过通用网络连接861通信地耦合到计算设备800的一个或多个其他计算设备的存储器中。应当理解,所示的网络连接是示例性的,并且可以使用在计算设备之间建立通信链路的其他手段。
53.尽管被描述为单个物理设备,但是示例性计算设备800可以是虚拟计算设备,在这种情况下,上述物理组件(诸如cpu 820、系统存储器830、网络接口840和其他类似组件)的功能可以由计算机可执行指令来提供。这种计算机可执行指令可以在单个物理计算设备上执行,或者可以分布在多个物理计算设备上,包括以动态方式分布在多个物理计算设备上,使得托管这种计算机可执行指令的特定物理计算设备可以根据需要和可用性随时间动态改变。在示例性计算设备800是虚拟化设备的情况下,托管这种虚拟化计算设备的底层物理计算设备本身可以包括类似于上述组件并且以类似方式操作的物理组件。此外,可以在多层中使用虚拟计算设备,其中一个虚拟计算设备在另一虚拟计算设备的构造内执行。因此,本文所使用的术语“计算设备”是指物理计算设备或虚拟化计算环境,包括虚拟计算设备,在虚拟化计算环境中,计算机可执行指令可以以与它们由物理计算设备执行一致的方式被执行。类似地,如本文所使用的,指代计算设备的物理组件的术语是指执行相同或等同功能的那些物理组件或其虚拟化。
54.作为第一示例,以上描述包括一种系统,该系统包括:发送计算设备,包括:一个或多个发送计算设备处理单元;以及一个或多个发送计算设备存储介质,包括计算机可执行指令,当由发送计算设备处理单元中的至少一些执行时,计算机可执行指令使发送计算设备:生成第一位掩码,该第一位掩码指示与第一位掩码相关联的一个或多个分组的第一连续数据范围将被包括在分组检错码的生成中、并且与第一位掩码相关联的一个或多个分组的第二连续数据范围将被排除在分组检错码的生成之外,其中与第一位掩码相关联的一个
或多个分组中的每个分组具有对应的分组检错码,该对应的分组检错码根据第一位掩码生成;针对第一分组,基于第一分组的、在第一连续数据范围内的数据,来生成第一分组检错码,以排除第一分组的、在第二连续数据范围内的数据,第一分组是与第一位掩码相关联的分组中的一个分组;发送第一位掩码、第一分组和第一分组检错码;以及接收计算设备,包括:一个或多个接收计算设备处理单元;以及一个或多个接收计算设备存储介质,包括计算机可执行指令,当由接收计算设备处理单元中的至少一些执行时,计算机可执行指令使接收计算设备:接收第一位掩码、第一分组和第一分组检错码;基于由接收计算设备接收的第一分组的、在第一连续数据范围内的数据,来生成第一分组检错码的另一实例,以排除由接收计算设备接收的第一分组的、在第二连续数据范围内的数据;以及如果生成的第一分组检错码的实例不同于由接收计算设备接收的第一分组检错码,则从接收计算设备丢弃第一分组;其中,如果由发送计算设备发送的第一分组与由接收计算设备接收的第一分组之间的差异在第二连续数据范围内,则即使存在该差异,接收计算机也将保留第一分组作为被正确接收的分组。
55.第二示例是根据第一示例所述的系统,其中第一位掩码包括两个数据位:第一数据位,被设置为第一二进制值,第一数据位对应于第一连续数据范围,第一二进制值指示在分组检错码的生成中包括第一连续数据范围;以及第二数据位,被设置为第二二进制值,该第二二进制值不同于第一二进制值,第二数据位对应于第二连续数据范围,第二二进制值指示从分组检错码的生成中排除第二连续数据范围。
56.第三示例是根据第一示例所述的系统,其中第一连续数据范围包括不同于第二连续数据范围的数据量。
57.第四示例是根据第一示例所述的系统,其中第一位掩码还指示与第一位掩码相关联的一个或多个分组的第三连续数据范围将被包括在分组检错码的生成中,第二连续数据范围在第一连续数据范围与第三连续数据范围之间并由第一连续数据范围与第三连续数据范围限定。
58.第五示例是根据第一示例所述的系统,其中由第一位掩码指示为被包括在分组检错码的生成中或被排除在分组检错码的生成之外的连续数据范围仅包括与第一位掩码相关联的一个或多个分组的数据的一部分。
59.第六示例是根据第一示例所述的系统,其中第一分组包括第一位掩码和第一分组检错码两者,与第一位掩码相关联的一个或多个分组仅具有第一分组。
60.第七示例是根据第一示例所述的系统,其中第一位掩码独立于第一分组和第一分组检错码被发送。
61.第八示例是根据第一示例所述的系统,其中与第一位掩码相关联的一个或多个分组是在第一位掩码之后发送的分组序列。
62.第九示例是根据第一示例所述的系统,其中发送第一位掩码和接收第一位掩码包括交换信息,发送计算设备和接收计算设备可以从该信息中独立地推导出第一位掩码。
63.第十示例是根据第一示例所述的系统,其中第一检错码是纠错码。
64.第十一示例是根据第一示例所述的系统,其中第一位掩码包括第一位组和第二位组,第一位组指示第一连续数据范围和第二连续数据范围中的任何数据范围是否将被包括在分组检错码的生成中,第二位组分离地指示第一连续数据范围和第二连续数据范围中的
任何数据范围是否将被包括在分组纠错码的生成中。
65.第十二示例是根据第一示例所述的系统,其中第一位掩码包括如下的码,该码对应于第一连续数据范围将被包括在分组检错码的生成中、并且第二连续数据范围将被排除在分组检错码的生成之外的指示,该码以及对应的指示是码和对应的指示的字典的一部分,该字典可由发送计算设备和接收计算设备两者访问。
66.第十三示例是根据第一示例所述的系统,其中第一位掩码通过省略第一连续数据范围的标识来指示第一连续数据范围将被包括在分组检错码的生成中,第一位掩码仅标识将被排除在分组检错码的生成之外的数据范围。
67.第十四示例是根据第一示例所述的系统,其中第一位掩码通过不包括第二连续数据范围的标识来指示第二连续数据范围将被排除在分组检错码的生成之外,第一位掩码仅标识将被包括在分组检错码的生成中的数据范围。
68.第十五示例是根据第一示例所述的系统,其中用于发送第一位掩码、第一分组和第一分组检错码的计算机可执行指令包括当由发送计算设备处理单元中的至少一些执行时使发送计算设备执行以下操作的计算机可执行指令:将第一位掩码、第一分组和第一分组检错码封装到第二分组的有效载荷中;以及发送第二分组。
69.第十六示例是根据第一示例所述的系统,其中一个或多个发送计算设备存储介质还包括当由发送计算设备处理单元中的至少一些执行时使发送计算设备执行以下操作的计算机可执行指令:接收与第二位掩码相关联的第二分组,第二位掩码指示第二分组的第一连续数据范围将被包括在分组检错码的生成中,并且第二分组的第二连续数据范围将被排除在分组检错码的生成之外;以及将第二分组封装到第一分组的有效载荷中;其中生成第一位掩码是基于第二位掩码的。
70.第十七示例是根据第十六示例所述的系统,其中生成第一位掩码包括:划定与第一位掩码相关联的第一分组的第一连续数据范围,以对应于第二分组的第一连续数据范围,第二分组被被封装到第一分组的有效载荷中;以及划定与第一位掩码相关联的第一分组的第二连续数据范围,以对应于第二分组的第二连续数据范围,第二分组被封装到第一分组的所述有效载荷中。
71.第十八示例是根据第一示例所述的系统,其中接收计算设备实现直通路由,以避免在数据链路层处对接收的分组进行检错。
72.第十九示例是一种生成用于通过网络发送数字数据的分组的方法,其中仅保护分组的有效载荷的一部分免受传输错误,该方法包括:在发送计算设备处生成第一位掩码,第一位掩码指示与第一位掩码相关联的一个或多个分组的第一连续数据范围将被包括在分组检错码的生成中、并且与第一位掩码相关联的一个或多个分组的第二连续数据范围将被排除在分组检错码的生成之外,其中与第一位掩码相关联的一个或多个分组中的每个分组具有对应的分组检错码,该对应的分组检错码根据第一位掩码生成;在发送计算设备处,针对第一分组,基于第一分组的在第一连续数据范围内的数据来生成第一分组检错码,以排除第一分组的在第二连续数据范围内的数据,第一分组是与第一位掩码相关联的分组中的一个分组;以及通过网络从发送计算设备发送第一位掩码、第一分组和第一分组检错码。
73.第二十示例是一种接收通过网络传送数字数据的分组的方法,其中仅检查分组的有效载荷的一部分的传输错误,该方法包括:在接收计算设备处接收第一位掩码、第一分组
和第一分组检错码,第一分组与第一位掩码相关联,第一位掩码指示第一分组的第一连续数据范围被包括在了第一分组检错码的生成中、并且第一分组的第二连续数据范围被排除在了第一分组检错码的生成之外;在接收计算设备处,基于接收的第一分组的、在第一连续数据范围内的数据来生成第一分组检错码的另一实例,以排除接收的第一分组的、在第二连续数据范围内的数据;以及如果生成的第一分组检错码的实例不同于接收的第一分组检错码,则从接收计算设备丢弃接收的第一分组;其中,如果发送的第一分组与接收的第一分组之间的差异在第二连续数据范围内,则即使存在该差异,接收的第一分组也被保留作为被正确接收的分组。
74.从以上描述中可以看出,已经提出了用于调整检错和/或纠错的机制,以仅应用于分组的标识的、离散部分,以排除其他部分。鉴于本文描述的主题的许多可能的变化,我们要求所有这些实施例作为我们的发明,因为它们可以落入以下权利要求及其等同物的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献