用于多网络分组操作的数据完整性的技术的制作方法

文档序号:13682511阅读:138来源:国知局


背景技术:
现代计算设备已经成为用于个人、商业、和社交用途的普遍存在的工具。因此,许多现代计算设备能够连接到包括互联网和公司内联网的各种数据网络,以通过这样的网络来取回以及发送/接收数据通信。为了促进计算设备之间的通信,网络通常包括一个或多个网络设备(例如,网络交换机、网络路由器、服务器、其它计算和/或存储计算设备等),以将通信(即,网络分组)从源计算设备路由到目的地计算设备。由于网络分组是由其路径(即,网络流)中的每个网络设备来处理的,网络分组变得被损坏的可能性、或者被引入到网络分组中的错误随着处理网络分组的每个网络设备而增加。例如,可以在源计算设备处和/或网络设备中的任何网络设备处执行的硬件卸载操作(例如,分段卸载、校验和(checksum)卸载等)可能引入数据损坏或者其它数据完整性问题。现在的检测网络分组中的错误的方法被设计为在开放式系统互连(OSI)模型的某些层处检测网络分组错误。例如,在发送操作期间,在OSI模型的物理层处执行的循环冗余校验是在硬件卸载操作修改网络分组之后计算的。因此,循环冗余校验将有可能未捕捉到由硬件卸载操作自身引入的错误,这是因为硬件卸载操作是在OSI模型的数据链路层之上的层处执行的。在某些网络拓扑结构中(例如,其中向网络分组的数据完整性给予比与跨越网络处理网络分组相关联的等待时间要高的优先级的那些网络拓扑结构),从硬件卸载操作引入到网络分组中的错误可能特别成问题。附图说明在附图中作为示例并且不作为限制示出了本文所描述的构思。为了说明的简单和清楚,在附图中示出的元件没有必要按比例绘制。在认为合适的情况下,已经在附图之间重复了附图标记,以指示对应的或者类似的元件。图1是用于确保网络通信的数据完整性的系统的至少一个实施例的简化框图;图2是图1的系统的计算设备的至少一个实施例的简化框图;图3是图1的系统的网络设备的至少一个实施例的简化框图;图4是可以由图2的计算设备和图3的远程计算设备建立的环境的至少一个实施例的简化框图;图5是用于将数据完整性检查存储到用于在图1的系统中传输的网络分组中的方法的至少一个实施例的简化流程图,所述方法可以由图2的计算设备或者图3的远程计算设备来执行;以及图6是用于在图1的系统中对接收的网络分组执行数据完整性检查的方法的至少一个实施例的简化流程图,所述方法可以由图2的计算设备和图3的远程计算设备来执行。具体实施方式尽管本公开内容的构思容许各种修改和替代形式,但是其具体的实施例已经在附图中作为示例示出,并将在本文中详细地描述。然而,应当理解的是,不存在将本公开内容的构思限制于所公开的特定形式的意图,而相反,意图是覆盖与本公开内容和所附权利要求书一致的全部修改、等同物和替代方案。虽然本说明书中对“一个实施例”、“实施例”、“说明性的实施例”等的引用表示所描述的实施例可以包括特定的特征、结构或者特性,但是每个实施例可以包括或者可以不必要包括该特定的特征、结构或者特性。此外,这样的短语不必然指相同的实施例。进一步,当结合实施例来描述特定的特征、结构或者特性时,认为结合不论是否被明确地描述的其它实施例来影响这样的特征、结构或者特性是在本领域技术人员的知识之内的。另外,应当领会的是,包括在形式为“A、B和C中的至少一项”的列表中的项目可以表示:(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或者(A、B和C)。类似地,以“A、B或C中的至少一项”的形式列出的项目可以表示:(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或者(A、B和C)。在一些情况下,可以用硬件、固件、软件或者其任意组合来实现所公开的实施例。所公开的实施例还可以被实现为由一个或多个暂时性或者非暂时性机器可读(例如,计算机可读)存储介质携带或者存储在其上的指令,其可以被一个或多个处理器读取和执行。机器可读存储介质可以被体现为用于以由机器可读的形式存储或者发送信息的任何存储设备、机制或者其它物理结构(例如,易失性或者非易失性存储器、介质盘或者其它介质设备)。在附图中,可以以具体的布置和/或次序来示出一些结构或者方法特征。然而,应当领会的是,这样的具体的布置和/或次序可以不是必需的。相反,在一些实施例中,可以以与说明性的附图中所示的不同的方式和/或次序来布置这样的特征。另外,在特定的附图中包括结构或者方法特征不意味着暗示这样的特征在全部实施例中是必需的,并且,在一些实施例中,这样的特征可以不被包括,或者可以与其它特征结合。现在参考图1,在说明性的实施例中,用于确保网络通信的数据完整性(即,保持和确保准确性和一致性)的系统100包括经由一个或多个网络设备106通过网络104相通信的计算设备102和远程计算设备108。网络设备106通过网络104促进计算设备102和远程计算设备108之间的网络通信(即,网络分组)。例如,计算设备102可以通过发送包括请求的网络分组从远程计算设备108请求数据。当然,应当领会的是,可以经由多于一个的网络分组来发送请求。响应于请求,远程计算设备108可以尝试跨越网络104经由一个或多个网络分组向计算设备102发送数据(即,有效载荷)。在一些实施例中,远程计算设备108可以生成包括响应中的全部数据的原始网络分组(即,未经分段的网络分组),这可以使得原始网络分组具有大有效载荷。然而,原始网络分组可以包括如此多的数据,以至于将数据作为单个网络分组来发送可能使负责处理和发送网络分组的网络设备106重负。例如,这样的大有效载荷可以是网络集中的,引起带宽吞吐量的下降和增加的处理器开销。在一些实施例中,可以启用计算设备108的硬件以执行诸如分段卸载之类的硬件卸载。这样,原始网络分组的原始有效载荷被分解为段(即,具有较小有效载荷的经分段的网络分组),所述段应当是针对网络设备处理更加可管理的。然而,这样的硬件卸载(即,网络分组分段)可能将错误引入到经分段的网络分组中的一个或多个网络分组中。在使用时,如下面进一步详细描述的,远程计算设备108的数据完整性模块110计算经分段的网络分组的每个有效载荷的散列值,并且在经由网络104向计算设备102发送网络分组之前,利用散列值更新对应于每个有效载荷的网络分组报头。当然,为了确保对网络分组的额外处理不导致损坏,可以一创建段(例如,在报头被附加到经分段的有效载荷之前)就对有效载荷计算散列值。另外,在一些实施例中,可以使用诸如消息摘要函数(例如,MD4、MD5等)、安全散列算法(例如,SHA-2、SHA-3等)、消息认证码(MAC)(例如,加密MAC、密钥散列MAC等)等之类的加密散列函数来计算散列值。当在计算设备102处接收到经分段的网络分组中的一个网络分组时,计算设备102的数据完整性模块110从经分段的网络分组的报头提取散列值,并且像远程计算设备108那样,也计算经分段的网络分组的有效载荷的散列值。当然,应当领会的是,由计算设备102的数据完整性模块110所使用的散列函数应当是与由远程计算设备108的数据完整性模块110所使用的相同的散列函数。另外,在其中由远程计算设备108的数据完整性模块110在经分段的网络分组中的多于一个的段上计算散列值的实施例中,由计算设备102的数据完整性模块110计算的散列值应当在所接收的经分段的网络分组的相同段上计算。相应地,计算设备102的数据完整性模块110可以将所提取的散列值与所计算的散列值进行比较,以确定在网络分组的传输和/或处理期间经分段的网络分组的有效载荷是否可能已经损坏、或者错误被引入到了经分段的网络分组中。在一些实施例中,远程计算设备108的数据完整性模块110计算原始网络分组的原始有效载荷的散列值。在这样的实施例中,在经由网络104向计算设备102发送网络分组之前,数据完整性模块110更新经分段的网络分组的序列中的最后一个经分段的网络分组的报头。在这样的实施例中,计算设备102的数据完整性模块110可以仅在经分段的网络分组的序列中的最后一个经分段的网络分组被计算设备102接收之后计算散列值。因此,计算设备102的数据完整性模块110从所述最后一个经分段的网络分组的报头提取散列值,并且在计算设备102根据经分段的有效载荷重构单个有效载荷之后计算散列值。这样,可以检查原始有效载荷的完整性,以确保在对原始有效载荷进行分段期间硬件卸载没有引入任何错误。网络104可以被体现为任何类型的有线或者无线通信网络,包括蜂窝网络(例如,全球移动通信系统(GSM))、数字用户线(DSL)网络、有线电视网络、电话网络、局域或者广域网、全球网络(例如,互联网)或者其任意组合。网络设备106可以被体现为能够促进计算设备102和远程计算设备108之间的有线和/或无线网络通信的任何类型的计算设备。例如,网络设备106可以被体现为计算机、路由器、交换机、网络集线器、服务器、存储设备、计算设备等。另外,网络104可以根据需要包括任意数量的网络设备106,以促进通过网络104中的网络设备106进行的计算设备102和远程计算设备108之间的通信。在一些实施例中,作为对计算设备102和/或远程计算设备108的附加或者替代,网络设备106可以包括数据完整性模块110。数据完整性模块110可以被实现为硬件、固件、软件或者其组合。例如,在一些实施例中,数据完整性模块110可以被体现为用于执行本文所描述的功能的专用电路。在使用时,如将在下面更详细地描述的,数据完整性模块110可以位于计算设备102和远程计算设备108中。当然,在一些实施例中,数据完整性模块110的仅一部分可以位于计算设备102和远程计算设备108中。例如,在一些实施例中,远程计算设备108可以仅包括数据完整性模块110的部分,所述部分更新网络分组报头,并且进一步处理用于发送给计算设备102的网络分组;而计算设备102可以仅包括数据完整性模块110的部分,所述部分计算散列值,并且进一步验证从远程计算设备108接收的网络分组的完整性。远程计算设备108可以被体现为能够执行本文所描述的功能的任何类型的计算或者计算机设备,包括而不限于计算机、智能电话、平板型计算机、膝上型计算机、笔记本计算机、移动计算设备、可穿戴计算设备、多处理器系统、服务器(例如,单独的、机架安装的、刀片式等)、网络家电(例如,物理的或者虚拟的)、网上家电、分布式计算系统、基于处理器的系统和/或消费电子设备。在使用时,远程计算设备108被配置为经由网络设备106通过网络104与计算设备102通信。如先前所讨论的以及在图1中所示的,远程计算设备108中可以包括数据完整性模块110的至少一部分。计算设备102可以被体现为能够执行本文所描述的功能的任何类型的计算或者计算机设备,包括而不限于计算机、台式计算机、工作站、膝上型计算机、笔记本计算机、平板型计算机、移动计算设备、可穿戴计算设备、网络家电、网上家电、分布式计算系统、基于处理器的系统和/或消费电子设备。如图2中所示,说明性的计算设备102包括处理器202、输入/输出(I/O)子系统204、存储器206、数据存储设备208、通信电路210和外围设备214。当然,在其它的实施例中,计算设备102可以包括其它的或者额外的部件,例如,通常在台式计算机中找到的那些部件(例如,各种输入/输出设备)。另外,在一些实施例中,说明性的部件中的一个或多个部件可以被并入到另一个部件中,或者以其它方式形成另一个部件的一部分。例如,在一些实施例中,存储器206或者其部分可以被并入一个或多个处理器202中。进一步,如先前所描述的,数据完整性模块110可以位于计算设备102和远程计算设备108中。因此,远程计算设备108可以包括与说明性的计算设备102相似的部件,在理解下面关于图2的计算设备102提供的对相似部件的描述同样适用于远程计算设备108的相似部件的情况下,本文没有示出所述相似部件,以保持说明书的清楚。处理器202可以被体现为能够执行本文所描述的功能的任何类型的处理器。处理器202可以被体现为单核或者多核处理器、数字信号处理器、微控制器、或者其它处理器或者处理/控制电路。存储器206可以被体现为能够执行本文所描述的功能的任何类型的易失性或者非易失性的存储器或者数据贮存器。在操作中,存储器206可以存储在计算设备102的操作期间所使用的各种数据和软件,例如,操作系统、应用、程序、库和驱动器。存储器206经由I/O子系统204通信地耦合到处理器202,所述I/O子系统204可以被实现为电路和/或部件,以促进与处理器202、存储器206和计算设备102的其它部件的输入/输出操作。例如,I/O子系统204可以被体现为或者以其它方式包括存储器控制器集线器、输入/输出控制集线器、集成传感器集线器、固件设备、通信链路(即,点到点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或促进输入/输出操作的其它部件和子系统。在一些实施例中,I/O子系统204可以形成片上系统(SoC)的一部分,并且与处理器202、存储器206和计算设备102的其它部件一起被并入单个集成电路芯片。数据存储设备208可以被体现为被配置用于数据的短期或者长期存储的任何类型的设备或多个设备,诸如例如,存储器设备和电路、存储器卡、硬盘驱动、固态驱动或者其它数据存储设备。在一些实施例中,数据存储设备208可以用于存储一个或多个受信任的执行环境的内容。当由数据存储设备208来存储时,受信任的执行环境的内容可以被加密,以防止被未经授权的软件访问。通信电路210可以被体现为任何能够实现计算设备102和远程计算设备108之间的通过网络104进行的通信的通信电路、设备或者其集合。通信电路210可以被配置为使用任何一种或多种通信技术(例如,有线或者无线通信)以及关联的协议(例如,以太网、WiMAX等)来实现这样的通信。说明性的计算设备102额外地包括网络接口卡(NIC)212。NIC212可以将计算设备102连接到网络设备106。NIC212可以被体现为一个或多个内插板、子插件板、网络接口卡、控制器芯片、芯片集或者可以由网络设备106使用的其它设备。例如,NIC212可以被实现为通过诸如快速PCI(PCIexpress)之类的扩展总线耦合到I/O子系统204的扩展卡。NIC212可以被配置为执行诸如分段卸载、校验和卸载和/或其它硬件卸载操作之类的硬件卸载操作。例如,在其中NIC212支持分段卸载的实施例中,NIC212可以确定具有原始有效载荷的原始网络分组(即,未经分段的网络分组)太大而不能作为单个分组发送。因此,NIC212将原始网络分组的原始有效载荷分段为多个具有较小有效载荷的经分段的网络分组。作为分段的结果,分段可以带来增加的通信电路210的带宽吞吐量和减少的处理器202的开销。一个或多个外围设备214可以包括通常在计算设备中找到的任何类型的外围设备,例如,硬件键盘、输入/输出设备、外围通信设备等。另外或者替代地,外围设备214可以包括一个或多个用于将外部的外围设备连接到计算设备102的端口,例如USB。现在参考图3,网络设备106可以被体现为能够促进计算设备102和远程计算设备108之间的无线网络通信,并且执行本文所描述的功能的任何类型的计算设备。例如,网络设备106可以被体现为虚拟的和/或物理的网络设备,诸如而不限于接入点、路由器、服务器、网络集线器、计算设备、存储设备等。与图2中所示的计算设备102类似,说明性的网络设备106包括处理器302、输入/输出(I/O)子系统304、存储器306、数据存储设备308、包括NIC312的通信电路310、以及一个或多个外围设备314。因此,在理解上面关于图2的计算设备102提供的对对应部件的描述同样适用于图3的网络设备106的对应部件的情况下,为了说明书的清楚,本文没有重复对相似部件的进一步描述。当然,在其它实施例中,网络设备106可以包括其它的或者额外的部件,例如通常在网络设备中找到的那些部件。现在参考图4,计算设备102、108在操作期间建立环境400。在说明性的环境400中,计算设备102包括网络通信模块402、散列生成器模块408、数据完整性准备模块410和数据完整性验证模块420。环境400中的各种模块可以被体现为硬件、固件、软件或者其组合。例如,环境400中的各种模块、逻辑器件和其它部件可以形成计算设备102或者远程计算设备108的处理器202或者其它硬件部件的一部分,或者以其它方式由计算设备102或者远程计算设备108的处理器202或者其它硬件部件建立。因此,在一些实施例中,环境400中的模块中的任何一个或多个模块可以被体现为电路或者电设备(例如,散列生成器电路、数据完整性准备电路、数据完整性验证电路等)的集合。在一些实施例中,在操作期间,数据完整性模块110可以建立说明性的环境400中的模块(例如,散列生成器模块408、数据完整性准备模块410和/或数据完整性验证模块420)中的一个或多个模块。另外,在一些实施例中,说明性的模块中的一个或多个模块可以形成另一个模块的一部分,和/或说明性的模块中的一个或多个模块可以被体现为单独的或者独立的模块。网络通信模块402被配置为促进计算设备102和网络设备106之间的网络通信。换句话说,网络通信模块402被配置为接收并处理由计算设备102接收的网络分组,以及准备并从计算设备102发送网络分组。另外,网络通信模块402可以被配置为执行诸如分段卸载之类的硬件卸载操作。在这样的配置中,网络通信模块402可以分解具有原始有效载荷的原始网络分组(即,未经分段的网络分组),所述原始网络分组太大而不能被进行请求的计算设备接收。为此,网络通信模块402可以通过将原始网络分组(即,原始有效载荷)分解为多个具有较小有效载荷的网络分组(即,段)来执行分段卸载。网络通信模块402将以基于由进行请求的计算设备提供的最大有效载荷大小的经分段的有效载荷的大小为基础,所述最大有效载荷大小指示了进行请求的计算设备可以支持的最大有效载荷大小。例如,在TCP会话中,进行请求的计算设备通常向主机计算设备通知TCP接收窗口大小(即,在TCP会话期间机器可以接收的信息的最大量)。当然,由于处理所接收的经分段的网络分组的进行请求的计算设备中的缓冲器,进行请求的计算设备可以支持的最大有效载荷大小可以随着缓冲器中的可用空间改变而改变。在这样的实施例中,计算设备102(即,进行发起的计算设备)可以向远程计算设备108(即,主机计算设备)通知比具有大有效载荷的网络分组小的TCP接收窗口大小。因此,远程计算设备108的网络通信模块402可以将具有比TCP接收窗口大小要大的有效载荷的网络分组分解为经分段的网络分组的流,各自具有比TCP接收窗口大小要小的有效载荷。另外,网络通信模块402可以通过解析网络分组报头来处理所接收的网络分组,以确定所接收的网络分组的网络流信息(源端口、目的地端口等),和/或通过将网络流信息存储到网络分组的报头中来准备用于传输的网络分组。散列生成器模块408被配置为使用散列函数来计算网络分组的有效载荷的散列值。在一些实施例中,散列生成器模块408可以计算整个经分段的有效载荷的散列值。在其它实施例中,可以仅对经分段的有效载荷的一部分计算散列值。在替代的实施例中,可以在经分段的有效载荷(或者流)中的多于一个的有效载荷上计算散列值。在一些实施例中,散列函数可以是诸如消息摘要函数(例如,MD4、MD5等)、安全散列算法(例如,SHA-2、SHA-3等)、消息认证码(MAC)(例如,加密MAC、密钥散列MAC等)等之类的加密散列函数。当然,散列函数的类型和在其上计算散列值的有效载荷(即,原始有效载荷和/或每个经分段的有效载荷)需要在源计算设备、目标计算设备、以及在源计算设备和目标计算设备之间的使用散列函数的任何网络设备106之间是一致的。数据完整性准备模块410被配置为,将散列值存储在将被发送的经分段的网络分组内,以及提供关于散列值被存储在经分段的网络分组中的指示,以使得可以由诸如远程计算设备108之类的进行接收的计算设备对经分段的网络分组执行数据完整性检查。数据完整性准备模块410包括网络分组报头更新模块412。网络分组报头更新模块412被配置为通过将散列值存储在经分段的网络分组的报头的一部分中,以及在经分段的网络分组报头的另一部分中提供数据完整性检查指示来更新经分段的网络分组,所述数据完整性检查指示用于指示在目的地计算设备处对经分段的网络分组执行数据完整性验证。在其中经分段的网络分组是TCP分组的实施例中,网络分组报头更新模块412可以被配置为将散列值存储在选项字段中,以及将TCP分组的报头的保留比特设置为指示在目的地计算设备处对经分段的网络分组执行数据完整性验证。当然,在其它实施例中,网络分组报头更新模块412可以在诸如光纤信道(FC)帧的可选设备报头字段之类的、不同类型的经分段的网络分组的可用的(即,未被使用的)报头字段中提供替代的指示和/或存储散列值。数据完整性验证模块420被配置为验证接收的网络分组的数据完整性。例如,数据完整性验证模块420可以被配置为检查存储在接收的网络分组中的散列值,以验证接收的网络分组的数据完整性。数据完整性验证模块420包括:网络分组报头解析模块422、散列提取模块424和散列比较器模块426。网络分组报头解析模块422被配置为解析接收的网络分组的报头。在一些实施例中,可以由网络通信模块402来解析接收的网络分组的报头。散列提取模块424被配置为从接收的网络分组的报头提取数据完整性检查指示符,以及在数据完整性检查指示符指示散列值被存储在网络分组报头中之后提取散列值。在一些实施例中,散列提取模块424可以被配置为从接收的网络分组的报头提取散列值和/或数据完整性检查指示符。例如,在TCP分组的TCP报头中,散列提取模块424可以被配置为从TCP分组的报头的选项字段提取散列值,和/或从保留比特提取数据完整性检查指示符。散列比较器模块426被配置为通过将所提取的散列值与接收的网络分组的有效载荷的散列值进行比较来执行数据完整性检查。在一些实施例中,可以由散列生成器模块404来计算散列。散列比较器模块426可以进一步被配置为基于比较来提供对网络分组的数据完整性的指示。例如,如果由散列比较器模块426进行的比较指示所提取的散列值和所计算的散列值不匹配,则散列比较器模块426可以向计算设备102的部件(例如,通信电路210)提供指示,指示所接收的网络分组已经被损坏,以及应当请求新的分组。应当领会的是,计算设备102和/或远程计算设备108可以仅包括说明性的环境400的一部分。例如,在一些实施例中,计算设备102可以包括数据完整性验证模块420,而远程计算设备108可以包括数据完整性准备模块410。现在参考图5,在使用时,远程计算设备108可以执行方法500,所述方法500用于将数据完整性检查存储到用于在系统100中传输的网络分组中。当然,如果计算设备102是准备用于传输的网络分组的计算设备,则可以由计算设备102来执行本文所描述的方法500的操作。应当领会的是,在一些实施例中,可以由数据完整性模块110来执行在方法500中执行的一个或多个操作。说明性的方法500在框502处开始,其中,远程计算设备108确定是否已经创建了网络分组的有效载荷。在一些实施例中,与使用轮询方法(即,以预定的时间间隔进行采样,以确定是否已经创建了经分段的网络分组的有效载荷)相反,可以在接收到关于已经创建了网络分组的有效载荷的通知时初始化(即,启动)方法500。在使用时,在一些实施例中,远程计算设备108可以创建具有太大以至于不能跨越网络104被有效地处理的有效载荷的单个网络分组。换句话说,单个网络分组的有效载荷大小可以大于目的地计算设备(例如,计算设备102)的最大可允许有效载荷大小(例如,TCP接收窗口大小)。远程计算设备108可以依赖于诸如NIC之类的硬件部件来执行硬件卸载(例如,分段卸载),以将具有大有效载荷的单个网络分组划分为多于一个的具有较小的有效载荷的网络分组段的流,所述较小的有效载荷不超过最大可允许有效载荷大小。如先前所描述的,在一些实施例中,可以根据原始有效载荷和/或根据每个经分段的有效载荷来计算散列值。因此,远程计算设备108可以确定是否已经创建了原始网络分组的有效载荷,和/或是否已经创建(即,进行分段)了原始网络分组的经分段的有效载荷。如果还没有创建网络分组的有效载荷,则方法500环回到框502,以继续确定是否已经创建了网络分组的有效载荷;否则,方法前进到框504。在框504中,远程计算设备108确定是否包括针对网络分组的有效载荷的数据完整性检查。如果否,则方法500环回到框502,以继续确定是否已经创建了有效载荷。如果远程计算设备108确定包括针对网络分组的有效载荷的数据完整性检查,则方法前进到框506。在框506中,远程计算设备108计算网络分组的有效载荷的散列值。在一些实施例中,在框508中,可以在原始网络分组有效载荷上计算散列值。另外或者替代地,在框510中,在一些实施例中,可以在每个经分段的网络分组有效载荷上计算散列值。在一些实施例中,可以在经分段的网络分组的流中的两个或更多个有效载荷上计算散列值。在一些实施例中,散列值可以是加密散列函数,例如,消息摘要函数(例如,MD4、MD5等)、安全散列算法(例如,SHA-2、SHA-3等)、消息认证码(MAC)(例如,加密MAC、密钥散列MAC等)等。在框512中,远程计算设备108将所计算的散列值存储在网络分组的报头中。如上面所描述的,如果散列值是属于原始有效载荷的,则可以将散列值存储在经分段的网络分组的流中的最后一个经分段的网络分组的报头中。在一些实施例中,其中网络分组是TCP分组,在框514中,远程计算设备108可以将散列值存储在TCP分组报头的选项字段中。在框516中,远程计算设备108将关于指示散列值被存储在网络分组报头中的指示(即,数据完整性检查指示)存储在网络分组报头中。如上面所描述的,如果散列值是属于原始有效载荷的,则可以将数据完整性检查指示存储在经分段的网络分组的流中的最后一个经分段的网络分组的报头中。在一些实施例中,其中网络分组是TCP分组,在框518中,远程计算设备108可以将TCP分组的报头的保留比特设置为指示包括散列值。在框520中,远程计算设备108在环回到框502以继续确定是否已经创建了另一个网络分组的有效载荷之前,向目标计算设备(例如,网络设备106)发送网络分组。现在参考图6,在使用时,计算设备102可以执行方法500,所述方法500用于对接收的经分段的网络分组执行数据完整性检查,以确保系统100中的网络通信的数据完整性。当然,如果远程计算设备108是接收经分段的网络分组的计算设备,则可以由远程计算设备108来执行本文所描述的方法600的操作。应当领会的是,在一些实施例中,可以由数据完整性模块110来执行在方法600中执行的一个或多个操作。说明性的方法600在框602处开始,其中,计算设备102确定是否已经接收到经分段的网络分组。在一些实施例中,与使用轮询方法(即,以预定时间间隔进行采样,以确定是否接收了网络分组)相反,可以在接收到经分段的网络分组时初始化(即,启动)方法600。如果计算设备102确定还没有接收到经分段的网络分组,则方法600环回到框602,以便继续确定是否已经接收到经分段的网络分组。如果计算设备102确定已经接收了经分段的网络分组,则方法600前进到框604,其中,计算设备102解析经分段的网络分组的报头。在其中对原始有效载荷计算散列值的实施例中,直到经分段的网络分组的流的最后一个经分段的网络分组已经被接收,方法才可以前进到框604,这是因为只有最后一个经分段的网络分组的报头可以包括对于执行方法600的操作必要的散列值。在框606中,计算设备102检查经分段的网络分组报头中的所存储的散列值的指示符(即,散列指示符)。在其中网络分组是TCP分组的实施例中,在框608中,计算设备102可以通过检测是否已经设置了TCP分组报头中的特定的保留比特来确定是否包括了散列指示符。在框610中,计算设备102基于框606中的散列指示符检查来确定散列值是否被存储在经分段的网络分组中。如果否,则方法600环回到框602,以确定是否已经接收到经分段的网络分组。如果计算设备102确定散列值被存储在经分段的网络分组的报头中,则方法600前进到框612,其中,计算设备102从经分段的网络分组的报头提取散列值。在其中网络分组是TCP分组的实施例中,在框614中,计算设备102可以从TCP分组报头的选项字段提取散列值。当然,应当领会的是,可用于任何类型的网络分组的任何报头字段都可以被用于存储散列值。因此,计算设备102可以从任何类型的用于存储散列值的网络分组的任何可用字段提取散列值。在框616中,计算设备102使用散列函数来计算经分段的网络分组的有效载荷的散列值。在一些实施例中,远程计算设备108可能已经计算了原始网络分组有效载荷的散列值。因此,在框618中,直到已经由计算设备102接收并且顺序地重构了全部经分段的网络分组,计算设备102才可以计算散列值。在一些实施例中,散列函数可以是加密散列函数,例如消息摘要函数(例如,MD4、MD5等)、安全散列算法(例如,SHA-2、SHA-3等)、消息认证码(MAC)(例如,加密MAC、密钥散列MAC等)等。当然,应当领会的是,被计算设备102用于计算散列值的散列函数的类型和被计算散列的有效载荷(即,原始有效载荷和/或每个经分段的有效载荷)应当是与在源计算设备(例如,远程计算设备108)处的相同的散列函数类型和被计算散列的有效载荷。在框620中,计算设备102将所提取的散列值与所计算的散列值进行比较,以确定在硬件卸载和/或传输期间有效载荷的完整性是否受到损害。在框622中,计算设备102基于对所提取的散列值和所计算的散列值的比较,提供对网络分组的数据完整性的指示(例如,被损坏或者未被损坏)。例如,如果比较指示所提取的散列值和所计算的散列值不匹配,则可以向源计算设备(例如,远程计算设备108)提供指示。在其中数据完整性模块110提供指示的实施例中,可以向计算设备102的部件(例如,通信电路210)发送指示,指示所接收的网络分组被损坏,以及应当从源计算设备请求新的网络分组(即,重新发送被发送给源计算设备的请求)。示例下面提供本文所公开的技术的说明性的示例。所述技术的实施例可以包括下面描述的示例中的任何一个或多个以及任意组合。示例1包括一种将数据完整性检查存储到网络通信传输中的计算设备,所述计算设备包括:散列生成器模块,其计算网络分组的有效载荷的散列值,其中,所述网络分组的有效载荷是分段操作的结果;数据完整性准备模块,其将散列值存储在网络分组中,并在网络分组中存储指示,以向网络分组的接收者指示散列值被存储在网络分组中;以及,网络通信模块,其向远程计算设备发送网络分组。示例2包括示例1的主题,以及其中,计算有效载荷的散列值包括,基于加密散列函数来计算有效载荷的加密散列值。示例3包括示例1和2中的任意示例的主题,以及其中,计算有效载荷的散列值包括,计算多个有效载荷的散列值,以及其中,所述多个有效载荷是分段操作的结果。示例4包括示例1-3中的任意示例的主题,以及其中,计算有效载荷的散列值包括,在分段操作之后,并且在由计算设备对网络分组进行其它处理之前,计算有效载荷的散列值。示例5包括示例1-4中的任意示例的主题,以及其中,将散列值存储在网络分组中包括,将散列值存储在网络分组的报头的字段中。示例6包括示例1-5中的任意示例的主题,以及其中,将散列值存储在网络分组的报头的字段中包括,将散列值存储在网络分组的TCP报头的选项字段中。示例7包括示例1-6中的任意示例的主题,以及其中,存储向网络分组的接收者指示散列值被存储在网络分组中的指示包括,将所述指示存储在网络分组的报头的字段中。示例8包括示例1-7中的任意示例的主题,以及其中,将指示存储在网络分组的报头的字段中包括,设置网络分组的TCP报头的保留字段中的对应于所述指示的比特。示例9包括示例1-8中的任意示例的主题,以及进一步包括数据完整性模块,其中,所述数据完整性模块包括散列生成器模块和数据完整性准备模块。示例10包括示例1-9中的任意示例的主题,以及其中,所述网络通信模块进一步用于,对未经分段的网络分组的原始有效载荷执行分段操作。示例11包括一种对所接收的网络通信执行数据完整性检查的计算设备,所述计算设备包括:数据完整性验证模块,其确定第一散列值是否被存储在从远程计算设备接收的网络分组中,以及,响应于确定第一散列值被存储在所述网络分组中,来从所述网络分组提取第一散列值,其中,从远程计算设备接收的网络分组是由分段操作产生的经分段的网络分组;散列生成器模块,其计算接收的网络分组的有效载荷的第二散列值;以及,散列比较器模块,其比较第一散列值和第二散列值。示例12包括示例11的主题,以及其中,计算网络分组的有效载荷的第二散列值包括,基于加密散列函数来计算有效载荷的加密散列值。示例13包括示例11和12中的任意示例的主题,以及其中,计算网络分组的有效载荷的第二散列值包括,计算多个有效载荷的第二散列值,以及其中,所述多个有效载荷是分段操作的结果。示例14包括示例11-13中的任意示例的主题,以及其中,提取网络分组中的第一散列值包括,从网络分组的报头的字段提取第一散列值。示例15包括示例11-14中的任意示例的主题,以及其中,提取网络分组的报头的字段中的第一散列值包括,从网络分组的TCP报头的选项字段提取第一散列值。示例16包括示例11-15中的任意示例的主题,以及其中,确定第一散列值是否被存储在网络分组中包括,从网络分组的报头的字段提取指示。示例17包括示例11-16中的任意示例的主题,以及其中,从网络分组的报头的字段提取指示包括,从网络分组的TCP报头的保留字段提取对应于所述指示的比特。示例18包括示例11-17中的任意示例的主题,以及其中,散列比较器模块进一步响应于确定第一散列值和第二散列值不匹配,来向远程计算设备提供关于接收的网络分组被损坏的指示。示例19包括示例11-18中的任意示例的主题,以及进一步包括数据完整性模块,其中,所述数据完整性模块包括数据完整性验证模块、散列生成器模块和散列比较器模块。示例20包括一种用于在计算设备处将数据完整性检查存储到用于传输到远程计算设备的网络分组中的方法,所述方法包括:由所述计算设备对未经分段的网络分组的原始有效载荷执行分段卸载操作;由所述计算设备计算网络分组的有效载荷的散列值,其中,所述网络分组的有效载荷是分段卸载操作的结果;由所述计算设备将散列值存储在网络分组中;由所述计算设备将指示存储在网络分组中,以向远程计算设备指示散列值被存储在网络分组中;以及,由所述计算设备向远程计算设备发送网络分组。示例21包括示例20的主题,以及其中,计算有效载荷的散列值包括,使用加密散列函数来计算有效载荷的散列值。示例22包括示例20和21中的任意示例的主题,以及其中,计算网络分组的有效载荷的散列值包括,计算多个有效载荷的散列值,以及其中,所述多个有效载荷是对未经分段的网络分组的原始有效载荷执行的分段卸载操作的结果。示例23包括示例20-22中的任意示例的主题,以及其中,计算有效载荷的散列值包括,在分段卸载操作之后并且在由计算设备对网络分组进行其它处理之前,计算有效载荷的散列值。示例24包括示例20-23中的任意示例的主题,以及其中,将散列值存储在网络分组中包括,将散列值存储在网络分组的报头的字段中。示例25包括示例20-24中的任意示例的主题,以及其中,将散列值存储在网络分组的报头的字段中包括,将散列值存储在网络分组的TCP报头的选项字段中。示例26包括示例20-25中的任意示例的主题,以及其中,存储关于向远程计算设备指示散列值被存储在网络分组中的指示包括,将所述指示存储在网络分组的报头的字段中。示例27包括示例20-26中的任意示例的主题,以及其中,将所述指示存储在网络分组的报头的字段中包括,设置网络分组的TCP报头的保留字段中的对应于所述指示的比特。示例28包括一种用于对从远程计算设备接收的网络分组执行数据完整性检查的方法,所述方法包括:由计算设备确定第一散列值是否被存储在从远程计算设备接收的网络分组中;响应于确定第一散列值被存储在网络分组中,来由所述计算设备从网络分组提取第一散列值,其中,从远程计算设备接收的网络分组是由分段操作产生的经分段的网络分组;由所述计算设备计算从远程计算设备接收的网络分组的有效载荷的第二散列值;以及,由所述计算设备比较第一散列值和第二散列值。示例29包括示例28的主题,以及其中,计算网络分组的有效载荷的第二散列值包括,基于加密散列函数来计算网络分组的有效载荷的加密散列值。示例30包括示例28和29中的任意示例的主题,以及其中,计算网络分组的有效载荷的第二散列值包括,计算多个有效载荷的第二散列值,以及其中,所述多个有效载荷是分段操作的结果。示例31包括示例28-30中的任意示例的主题,以及其中,提取网络分组中的第一散列值包括,从网络分组的报头的字段提取第一散列值。示例32包括示例28-31中的任意示例的主题,以及其中,提取网络分组的报头的字段中的第一散列值包括,从网络分组的TCP报头的选项字段提取第一散列值。示例33包括示例28-32中的任意示例的主题,以及其中,确定第一散列值是否被存储在网络分组中包括,从网络分组的报头的字段提取指示,以及其中,所述指示用于指示第一散列值是否被存储在网络分组中。示例34包括示例28-33中的任意示例的主题,以及其中,从网络分组的报头的字段提取指示包括,从网络分组的TCP报头的保留字段提取对应于所述指示的比特。示例35包括示例28-34中的任意示例的主题,以及进一步包括,响应于确定第一散列值和第二散列值不匹配,来向远程计算设备提供从远程计算设备接收的网络分组被损坏的指示。示例36包括一种计算设备,所述计算设备包括:处理器;以及,在其中存储了多个指令的存储器,所述多个指令当由处理器执行时使计算设备执行示例20-35中的任意示例的方法。示例37包括一个或多个包括存储在其上的多个指令的机器可读存储介质,所述多个指令是响应于被执行而使得计算设备执行示例20-35中的任意示例的方法的。示例38包括一种用于将数据完整性检查存储到用于传输到远程计算设备的网络分组中的计算设备,所述计算设备包括:用于对未经分段的网络分组的原始有效载荷执行分段卸载操作的单元;用于计算网络分组的有效载荷的散列值的单元,其中,所述网络分组的有效载荷是分段卸载操作的结果;用于将散列值存储在网络分组中的单元;用于将指示存储在网络分组中,以向远程计算设备指示散列值被存储在网络分组中的单元;以及,用于向远程计算设备发送网络分组的单元。示例39包括示例38的主题,以及其中,用于计算有效载荷的散列值的单元包括,用于使用加密散列函数来计算有效载荷的散列值的单元。示例40包括示例38和39中的任意示例的主题,以及其中,用于计算网络分组的有效载荷的散列值的单元包括,用于计算多个有效载荷的散列值的单元,以及其中,所述多个有效载荷是对未经分段的网络分组的原始有效载荷执行的分段卸载操作的结果。示例41包括示例38-40中的任意示例的主题,以及其中,用于计算有效载荷的散列值的单元包括,用于在分段卸载操作之后并且在由计算设备对网络分组进行其它处理之前计算有效载荷的散列值的单元。示例42包括示例38-41中的任意示例的主题,以及其中,用于将散列值存储在网络分组中的单元包括,用于将散列值存储在网络分组的报头的字段中的单元。示例43包括示例38-42中的任意示例的主题,以及其中,用于将散列值存储在网络分组的报头的字段中的单元包括,用于将散列值存储在网络分组的TCP报头的选项字段中的单元。示例44包括示例38-43中的任意示例的主题,以及其中,用于存储向远程计算设备指示关于散列值被存储在网络分组中的指示的单元包括,用于将所述指示存储在网络分组的报头的字段中的单元。示例45包括示例38-44中的任意示例的主题,以及其中,用于将指示存储在网络分组的报头的字段中的单元包括,用于设置网络分组的TCP报头的保留字段中的对应于所述指示的比特的单元。示例46包括一种用于执行对从远程计算设备接收的网络分组的数据完整性检查的计算设备,所述计算设备包括:用于确定第一散列值是否被存储在从远程计算设备接收的网络分组中的单元;用于响应于确定第一散列值被存储在网络分组中来从网络分组提取第一散列值的单元,其中,从远程计算设备接收的网络分组是由分段操作产生的经分段的网络分组;用于计算从远程计算设备接收的网络分组的有效载荷的第二散列值的单元;以及,用于比较第一散列值和第二散列值的单元。示例47包括示例46的主题,以及其中,用于计算网络分组的有效载荷的第二散列值的单元包括,用于基于加密散列函数来计算网络分组的有效载荷的加密散列值的单元。示例48包括示例46和47中的任意示例的主题,以及其中,用于计算网络分组的有效载荷的第二散列值的单元包括,用于计算多个有效载荷的第二散列值的单元,以及其中,所述多个有效载荷是分段操作的结果。示例49包括示例46-48中的任意示例的主题,以及其中,用于提取网络分组中的第一散列值的单元包括,用于从网络分组的报头的字段提取第一散列值的单元。示例50包括示例46-49中的任意示例的主题,以及其中,用于提取网络分组的报头的字段中的第一散列值的单元包括,用于从网络分组的TCP报头的选项字段提取第一散列值的单元。示例51包括示例46-50中的任意示例的主题,以及其中,用于确定第一散列值是否被存储在网络分组中的单元包括,用于从网络分组的报头的字段提取指示的单元,以及其中,所述指示用于指示第一散列字段是否被存储在网络分组中。示例52包括示例46-51中的任意示例的主题,以及其中,用于从网络分组的报头的字段提取指示的单元包括,用于从网络分组的TCP报头的保留字段提取对应于所述指示的比特的单元。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1