数据传输协议的制作方法

文档序号:26280865发布日期:2021-08-13 19:38阅读:92来源:国知局
数据传输协议的制作方法
本发明涉及在第一计算机与第二计算机之间传输数据的方法。
背景技术
:用于例如在机构医学设施之外的现场对患者进行医学监测的设备是已知的。例如,remotediagnostictechnologies有限公司制造和销售这样的设备(被称为tempusprotm)。这样的设备通常可以用于使用被耦合到设备的一个或多个医学传感器来监测患者并收集生命体征数据。例如,这样的设备的益处是它能够被远程部署到事故现场。救护车上可能装有这些设备中的一个或多个设备,以允许护理人员为患者提供帮助。示例设备可以允许监测患者的血压、体温和心率。由设备收集的医学数据能够被传输到其他医学设备和/或远程服务器以进行存储和/或进一步处理。例如,远程医学应用可以访问被存储在远程服务器上的医学数据。该数据能够在患者到达医院之前为医院工作人员提供患者医学数据。这些医学设备可能位于数据连接不可靠的远程位置。例如,连接可能是间歇性的,遭受高数据丢失,并且具有低带宽。因此,应当有效地使用连接以确保能够传输最大量的数据。已知用于通过网络传输数据的协议。例如,传输控制协议(tcp)在两个计算机之间提供可靠的数据传送。在传输期间丢失的数据被重新传输。能够使用用户数据报协议(udp)来发送不要求可靠传送的数据。使用udp发送数据较快但不可靠,因为无法保证数据将被接收。相反,使用tcp发送数据较慢,这是因为在确保可靠接收方面会引起开销增大。当底层网络具有高丢失和延迟时,tcp也表现不佳。因此,一些用户使用tcp而不管正被传输的特定数据是否要求可靠接收。然而,这样的机制是对带宽的低效使用,因为一些数据即使不重要也可能被重新传输。udp效率较高但通常不被使用,因为可能会丢失重要数据。技术实现要素:一些用户会同时使用udp和tcp,并且根据当时发送的数据类型在这两种协议之间进行选择。然而,单独使用两种协议意味着用户失去对优先级和排序的控制,因为这两种协议相互独立地运作。因此,需要克服这些问题的更可靠的协议。根据本发明的第一方面,提供了一种在第一计算机与第二计算机之间传输数据的方法,所述方法包括:由所述第一计算机获得用于传输到所述第二计算机的数据,所述数据至少包括第一数据和第二数据,所述第一数据为第一类型的数据,并且所述第二数据为第二类型的数据,每种类型的数据具有相关联的传输优先级,并且所述第一类型的数据具有接收要求,所述接收要求为要求由所述第二计算机来接收所述数据,并且所述第二类型的数据没有接收要求;将所获得的数据缓存在一个或多个缓存器中;从所述一个或多个缓存器中读取所述数据并且根据所述传输优先级将所述数据传输到所述第二计算机;并且仅针对具有接收要求的传输的数据,由所述第一计算机参考来自所述第二计算机的预期的确认消息来确定所述第二计算机是否已经接收到所传输的数据,并且,如果确定尚未接收到所传输的数据,则将所述数据重新传输到所述第二计算机,所述接收要求为要求由所述第二计算机来接收所述数据。与可以针对速度(例如,udp)或重要性(例如,tcp)优化的已知协议不同,本方法使用单一协议来适应对具有每一种属性(速度和重要性)的不同组合的数据的有效传输。该方法通过以下操作来实现这一点:使用优先化处理以例如确保首先传输最紧急的数据,并且使用接收要求属性以例如确定是否需要接收相应的数据(并且如果没有接收到数据,则需要重新传输数据)。该方法还方便地适应了具有(速度和重要性)这两种属性的数据。这使得有效地使用带宽,而不会失去控制。由于上述方法处理了优先级和重新传输,因此它允许使用并不保证可靠接收的单一协议(例如,udp)来发送数据。例如,上述方法控制使用udp发送数据的顺序。因此,udp并不知道它可能正在重新传输数据,因为重新传输是通过上述方法处理的。因此,该方法优于并行使用两种或更多种协议(例如,udp和tcp)的现有系统。在示例中,第一计算机发送的所有数据都具有关联的传输优先级,该传输优先级是基于数据类型来确定的。因此,数据类型指示相关联的传输优先级。类似地,第一计算机发送的所有数据要么要求可靠接收,要么不要求可靠接收。这也是基于数据类型来确定的。因此,第一计算机获得一种或多种数据类型的数据。然后能够根据传输优先级来缓存和传输数据。如果第二计算机没有接收到数据,或者如果第二计算机没有确认数据,则要求可靠接收的数据会被重新传输。即使第二计算机没有接收到不要求可靠接收的数据,也不会重新传输不要求可靠接收的数据。例如,传输优先级可以包括低优先级和高优先级,或者低优先级、中优先级和高优先级。可以有任意数量的传输优先级等级。例如,第一计算机可以是用于对患者进行医学监测的设备。第二计算机可以是远程服务器或其他设备。第一计算机的操作者可以使用第一计算机或与计算机通信性耦合的其他仪器来生成/记录/测量/获得不同类型的数据。例如,操作者可以将传感器附接到患者以测量心率、血压等。操作者可以经由i/o设备(例如,键盘、相机或麦克风)将数据输入到第一计算机中。被传输到第二计算机的数据类型可以包括:医学/患者数据、设备数据、连接数据、安全数据等。数据本身可以指示其数据类型。例如,可以读取数据内的元数据以确定获得的数据的类型。医学/患者数据能够包括实时生成或记录的数据,例如,患者心率。医学/患者数据还能够包括非实时数据,例如,平均心率、血压、患者年龄、姓名、地址等。设备数据能够包括设备序列号、设备名称、操作者姓名等。连接数据能够包括用于开始或结束通信会话(例如,开始/断开连接消息)的数据。安全数据可以包括与用户名、密码等有关的数据。如上所述,这些类型的数据与传输优先级等级相关联。例如,连接数据可以优先于平均心率数据。类似地,这些类型的数据要么要求可靠接收,要么不要求可靠接收。例如,实时数据可能不要求可靠接收,而连接数据和安全数据可能要求可靠接收。能够看出,传输优先级等级和接收要求是特定于数据的。例如,这些内容可以由设备制造商、用户或管理员来设置。在一些示例中,预期的确认消息从未被第一计算机接收到。因此,第一计算机可以假定/推断第二计算机没有接收到传输的数据。在其他示例中,接收到预期的确认。确认消息可以指示第二计算机没有接收到所传输的数据元素。“由第一计算机获得用于传输的数据”能够包括从另一设备/仪器/传感器接收数据和/或在第一计算机内生成数据。“缓存获得的数据”包括存储或写入所获得的数据。“读取数据”包括复制、移动或传输数据。所述方法还可以包括:由所述第一计算机获得第三数据,所述第三数据为所述第一类型的数据;将所述第三数据缓存在所述一个或多个缓存器中;确定所述第二计算机没有接收到所述第一数据;并且作为响应:将所述第一数据的传输优先级更新到高于所述第三数据的传输优先级的等级;并且在将所述第三数据传输到所述第二计算机之前将所述第一数据重新传输到所述第二计算机。因此,如果数据元素要求重新传输,则它的优先级高于相同类型的数据元素(通常,这些数据元素将具有相同的优先级等级)。正因如此,要求重新传输的数据优先于尚未发送的数据。这确保了第二计算机尽快接收到该数据。所述方法还可以包括:针对具有接收要求的数据,所述接收要求为要求由所述第二计算机来接收所述数据:确定在阈值时间段内所述第二计算机尚未确认多个数据元素;并且重新传输所述多个数据元素中的最新传输的数据元素。数据元素也可以被称为数据块,并且这些术语可以互换使用。例如,可能在一段时间内已经发送了多个数据元素,但是了其中没有一个数据元素得到确认。例如,计时器可以在第一数据元素被传输时开始,并且在阈值时间段之后,第一数据元素可能还没有得到确认。在此期间,将会传输更多数据元素,这些数据元素也可能尚未得到确认。发生这种情况的原因可能是连接失败(其中正被发送的数据在传输期间丢失)或者是(一个或多个)确认消息丢失。因此,第一计算机无法明确确定第二计算机是否接收到数据中的任何数据。为了避免重新传输每个数据元素和避免拥塞网络,只重新传输最新传输的数据元素。作为响应而发送的后续确认消息可以指示根本没有接收到数据元素或者没有接收到数据元素中的一些数据元素。随后能够重新传输这些数据元素。因此,该方法避免了不必要地重新传输每一个数据元素。替代地,只重新传输最新传输的数据元素,直到该系统能够经由确认消息来确定哪些数据元素没有被接收到。所述方法还可以包括:针对具有接收要求的数据,所述接收要求为要求由所述第二计算机来接收所述数据:由所述第二计算机向所述第一计算机发送与所述数据相关联的确认消息。因此,第二计算机确认要求可靠接收的数据。确认消息可以指示(基于缺失的序列号等)认为缺失一个或多个数据元素,或者可以指示已经接收到一个或多个数据元素。所述方法还可以包括:从所述第一计算机接收数据元素;由所述第二计算机确定尚未接收到至少一个数据元素,其中,在传输接收到的数据元素之前传输了所述至少一个数据元素;并且向所述第一计算机传输确认消息,所述确认消息包括:对已经接收到所述数据元素的指示;以及对尚未接收到所述至少一个数据元素的指示。因此,当第二计算机接收到数据时,它向第一计算机传输确认消息以指示最新接收到的数据元素并指示一个或多个缺失的数据元素。因此,第二计算机能够推断出某些数据缺失并且能够相应地通知第一计算机。这种“智能确认”算法确保了重新传输缺失的数据而不会造成队头阻塞。在一些示例中,数据元素与序列号相关联,并且:所述对已经接收到所述数据元素的指示包括对与所述数据元素相关联的序列号的指示;并且所述对尚未接收到所述至少一个数据元素的指示包括对与所述至少一个数据元素相关联的序列号的指示。因此,“智能确认”消息能够基于对序列号的使用。因此,确认消息包括与最新接收到的数据元素相关联的序列号以及与被觉察为缺失的数据相关联的一个或多个其他序列号的列表。因此,当第一计算机接收到智能确认消息时,第一计算机能够重新传输在列表中指示的数据元素。在一些示例中,每种类型的数据都与不同序列号范围相关联。例如,第一类型的数据可以与第一组/范围的序列号相关联,并且第二类型的数据可以与第二组/范围的序列号相关联。在一些示例中,序列号范围可以完全或部分重叠。替代地,具有接收要求的数据类型可以与第一组/范围的序列号相关联,该接收要求为要求由第二计算机来接收该数据,并且没有接收要求的数据类型可以与第二组/范围的序列号相关联。因此,当第二计算机不按顺序接收数据(或者以其他方式确定数据块/元素已经丢失或尚未接收到)时,第二计算机能够基于先前接收到的数据来确定第二计算机尚未接收到的数据块是否是要求重新传输的数据。例如,第二计算机可以确定缺失的序列号在其中数据具有接收要求的序列号的范围内。因此,第二计算机能够确定该数据块是(i)具有接收要求的数据,该接收要求为要求由第二计算机来接收该数据,还是(ii)没有接收要求的数据。在此基础上,第二计算机能够确定是否期望在未来接收缺失的数据(作为重新传输的结果)。因此,所述方法还可以包括:从所述第一计算机接收多个数据元素,其中,所述多个数据元素:是具有接收要求的数据类型,所述接收要求为要求由所述第二计算机来接收所述数据;并且与序列号范围相关联;并且由所述第二计算机执行以下操作:基于与所述多个数据元素相关联的序列号范围来确定尚未接收到数据元素;并且基于所述多个数据元素的数据类型来确定尚未接收到的所述数据元素是具有接收要求的数据,所述接收要求为要求由所述第二计算机来接收所述数据。多个数据元素可以是第一类型的数据。基于与多个数据元素相关联的序列号范围来确定尚未接收到数据元素可以包括确定序列号范围是非连续的。例如,序列号范围内的序列号可能缺失。确定尚未接收到的数据元素是具有接收要求的数据可以包括确定与多个数据元素相关联的数据类型,该接收要求为要求由第二计算机来接收该数据。这能够从第二计算机接收到的多个数据元素中推断出来。能够检查第二计算机接收到的数据,并且能够确定数据所表示的数据类型。例如,数据可以明确指示该数据的数据类型。在一些示例中,如果第二计算机确定尚未接收到的数据元素是具有接收要求的数据,该接收要求为要求由第二计算机来接收该数据,则第二计算机能够生成确认消息。在某些示例中,仅针对具有接收要求的数据发送确认消息,该接收要求为要求由第二计算机来接收该数据。在其他示例中,即使不会重新传输任何缺失的数据,也会针对没有接收要求的数据发送确认消息。在一个示例中,确认消息与特定类型的数据相关联。例如,在每种类型的数据与不同范围的序列号相关联的示例中,第一计算机可以正在向第二计算机发送两种或更多种类型的数据。因此,第二计算机可以发送与第一类型的数据相关联的第一确认消息和与第二类型的数据相关联的第二确认消息。这可以简化确定第一计算机要重新传输哪些数据的过程。所述方法还可以包括:由所述第一计算机进行以下操作:存储与作为具有接收要求的类型的数据相关联的序列号列表,所述接收要求为要求由所述第二计算机来接收所述数据;以及针对所述序列号列表中的每个序列号存储所述数据的相关联的传输状态。因此,第一计算机能够记录要求可靠接收的数据。这允许第一计算机监测数据的传输状态。因此,如果数据要求重新传输,则第一计算机能够确定该数据先前已经被发送并且能够重新确定该数据的优先级,如前所述。所述传输状态可以指示以下各项中的一项:所述第一计算机尚未发送所述数据;所述第一计算机已经发送所述数据;所述第一计算机已经发送所述数据并且所述第二计算机已经否定地确认所述数据;以及所述第一计算机已经发送所述数据并且所述第二计算机已经肯定地确认接收到所述数据。例如,当第一计算机获得数据时,其传输状态指示数据尚未被发送。一旦被发送,传输状态就被更新以指示数据已经被发送。如果第一计算机确定该计算机尚未接收到数据,则传输状态能够指示该数据已经被否定地确认。例如,这可以在没有接收到确认消息的阈值时间段过去之后发生,或者可以在确认消息明确指示尚未接收到数据的情况下发生。一旦被第二计算机接收并确认,传输状态就能够被更新以示出数据已经被肯定地确认(即,已经被接收到)。所述方法还可以包括:由所述第一计算机进行以下操作:存储与作为没有接收要求的类型的数据相关联的序列号列表;以及针对所述序列号列表中的每个序列号存储所述数据的相关联的传输状态。因此,第一计算机也可以记录不要求可靠接收的数据。所述传输状态可以指示以下各项中的一项:所述第一计算机尚未发送所述数据;以及所述第一计算机已经发送所述数据。例如,当第一计算机获得数据时,其传输状态指示数据尚未被发送。一旦被发送,传输状态就被更新以指示数据已经被发送。所述方法还可以包括:由所述第一计算机获得第四数据,所述第四数据为没有接收要求且传输优先级和与所述第一数据相关联的传输优先级相同的第三类型的数据;将所述第四数据缓存在所述一个或多个缓存器中;并且在传输所述第一数据之前将所述第四数据传输到所述第二计算机。因此,可能存在不同类型的数据,一种是要求可靠接收的数据类型,另一种是不要求可靠接收的数据类型,其中,这两者具有相同的优先级等级。在特定示例中,可以优选地在传输确实要求可靠接收的数据之前传输不要求可靠接收的数据。在一些示例中,所述一个或多个缓存器包括用于由所述第一计算机获得的每种类型的数据的缓存器,所述缓存器各自具有与在所述缓存器中缓存的数据类型的传输优先级相对应的传输优先级。因此,可能存在多个缓存器,它们仅接收/存储与特定类型的数据相关联的数据。这能够简化计算机跟踪不同优先级的数据的方式,同时将不同类型但具有相同优先级的数据分开。可以先传输每个缓存器内的数据,然后再从后续缓存器传输数据。例如,先传输较高优先级缓存器中的数据,然后再传输较低优先级缓存器中的数据。在另一示例中,可能存在与每个传输优先级等级相关联的缓存器。不同类型但具有相同优先级的数据可以被存储在与对应的传输优先级相关联的缓存器内。例如,可能存在三个缓存器:低、中和高优先级缓存器。这能够进一步简化计算机跟踪不同优先级的数据的方式。在一个示例中,将所述数据传输到所述第二计算机包括经由单个网络套接字来传输所述数据。网络套接字可以是本地网络套接字,也可以是互联网套接字。因此,如上所述,数据是使用单一协议来传输的,而不是针对不同数据使用多种协议来传输的。因此,当前方法建立在另一协议之上。在一个示例中,单个网络套接字是与不保证可靠接收的协议相关联的套接字。在一个示例中,将数据传输到第二计算机包括经由不保证可靠接收的网络协议来传输数据。因此,如上所述,数据是使用单一协议来传输的,而不是针对不同数据使用多种协议来传输的。因此,当前方法建立在另一协议之上。在特定示例中,将所述数据传输到所述第二计算机包括经由udp套接字来传输所述数据。因此,当前方法是建立在udp之上的,udp是一种不保证会收到数据的协议。因此,这允许最有效地使用网络连接。数据重新传输和优先级处理是由上述方法来处理的,而不是由底层协议来处理的。因此,底层协议(在本例中为udp)不知道它可能正在发送重新传输的数据。在一些示例中,从所述一个或多个缓存器中读取所述数据包括在将所述数据从主缓存器传输到所述第二计算机之前将所述数据从所述一个或多个缓存器读取到所述主缓存器中。因此,数据从一个或多个缓存器被复制/传送到主缓存器中。例如,根据传输优先级从一个或多个缓存器中读取数据,并且按优先级顺序将数据移动到主(即,单个)缓存器中。例如,主缓存器可以是udp缓存器,例如,套接字发送缓存器。因此,数据是按优先级顺序被放入缓存器中的,从而允许有效地控制数据的传输。在一些示例中,数据元素以预定义速率被读取到所述主缓存器中。该速率可被称为节拍率(tickrate)。能够从一个或多个缓存器中读取数据元素并且以预定义速率(例如每10ms、20ms、30ms、40ms、50ms)放入主缓存器中。该节拍率可以是能由用户配置的。提高节拍率意味着每秒传送更多数据。节拍率的单位是比特每秒。例如,如果当前每50ms将一个数据元素放入主缓存器中,那么为了提高节拍率,必须每40ms、30ms、20ms或10ms将一个数据元素放入主缓存器中。在一些示例中,节拍率能够基于连接的当前带宽进行配置。例如,所述方法还可以包括:向所述第二计算机传输三个或更多个带宽请求消息;由所述第二计算机接收所述三个或更多个带宽请求消息并且作为响应而确定所述第一计算机与所述第二计算机之间的连接的带宽;由所述第二计算机向所述第一计算机传输带宽估计消息,所述带宽估计消息指示由所述第二计算机确定的所述带宽;并且进行以下各项中的至少一项:由所述第一计算机基于由所述第二计算机确定的所述带宽来调整所述预定义速率;并且由所述第一计算机基于由所述第二计算机确定的所述带宽来调整能够被传输到所述第二计算机而不要求确认的数据元素的阈值数量。因此,在第一示例中,能够基于测得的带宽来调整发送数据的速率。如果带宽增大,则能够提高数据发送速率(即,能够提高预定义节拍率)。类似地,如果带宽减小,则能够降低数据发送速率(即,能够降低预定义节拍率)。在第二示例中,能够基于测得的带宽来调整能够被传输到第二计算机而不要求确认的数据元素的数量。能够被传输到第二计算机而不要求确认的数据元素的阈值数量可以被称为“传输窗口大小”变化量。如果没有接收到任何数据,这将停止发送不受限制的数据。在特定示例中,阈值仅适用于要求可靠接收的类型的数据元素。第二计算机能够基于三个或更多个带宽请求消息的接收次数来估计带宽。在一些示例中,所述方法还包括:从所述主缓存器中读取所述数据并且形成具有有效载荷的数据分组,所述有效载荷包括所述第一数据和所述第二数据;并且将所述数据传输到所述第二计算机包括将所述数据分组传输到所述第二计算机。因此,在一些示例中,能够在单个分组(例如,udp分组)中发送要求可靠接收的数据和不要求可靠接收的数据。只会确认要求可靠接收的数据,并且如果没有接收到这种数据,则会重新传输这种数据。在一些示例中,所述方法还包括:在将所述数据从所述一个或多个缓存器读取到所述主缓存器中之后:针对没有接收要求的数据,从所述一个或多个缓存器中移除数据;并且针对具有接收要求的数据,将数据保留在所述一个或多个缓存器中,直到确定所述第二计算机已经接收到所传输的数据为止,所述接收要求为要求由所述第二计算机来接收所述数据。因此,为了减少存储器使用,与要求重新传输的数据不同,能够从缓存器中删除不要求可靠接收的数据,因为以后不再需要它。在一些示例中,所述方法还包括,在传输所述第一数据和所述第二数据之前:由所述第一计算机向局域网中的所有计算机发送广播消息;由所述第一计算机接收来自所述第二计算机的响应消息,所述响应消息至少指示:所述第二计算机的网络地址;以及由所述第二计算机使用的安全设置;其中,所述第一计算机根据所述安全设置向所述第二计算机传输数据。因此,如果不知道第二计算机的网络地址,则能够在网络(例如,本地网络)上传输广播消息,以便发现第二计算机的网络地址。因此,第二计算机接收广播消息并且作为响应而对该消息做出响应以指示其网络地址。另外,来自第二计算机的响应消息的性质/内容能够用于确定安全设置,即,第二计算机是实施加密连接(例如,dtlsudp套接字)还是实施未加密连接(例如,普通udp套接字)。例如,如果第二计算机正在运行加密的dtls连接,则广播消息将被第二计算机拒绝,因为它不是dtls协议中的有效消息。因此,“dtls消息拒绝”响应消息推断第二计算机正在运行加密的dtls连接。如果未接收到dtls消息拒绝响应消息,则能够推断第二计算机正在运行普通udp套接字。基于此,第一计算机能够实施与第二计算机的传输机制匹配的传输机制。在一些示例中,所述方法还包括在传输所述第一数据和所述第二数据之前:由所述第一计算机使用所述第二计算机的预先配置的网络地址向所述第二计算机发送探查消息;由所述第一计算机接收来自所述第二计算机的响应消息,所述响应消息指示:由所述第二计算机使用的安全设置;其中,所述第一计算机根据所述安全设置向所述第二计算机传输数据。因此,如果已知第二计算机的网络地址,则能够向第二计算机传输消息。以与上述方式类似的方式,能够使用响应消息来推断第二计算机使用的安全设置。因此,第一计算机能够动态地确定第二计算机的适用安全设置。这允许第一计算机与具有不同安全设置的计算机进行通信。在示例中,本文描述的方法是计算机实施的方法。在第二方面中,一种在第一计算机与第二计算机之间传输数据的方法,包括:由所述第一计算机获得用于传输到所述第二计算机的数据;将所获得的数据缓存在一个或多个缓存器中;由所述第一计算机向局域网中的所有计算机发送广播消息;由所述第一计算机接收来自所述第二计算机的响应消息,所述响应消息至少指示:所述第二计算机的网络地址;以及由所述第二计算机使用的安全设置;从所述一个或多个缓存器中读取所述数据;并且根据所述安全设置将所述数据传输到所述第二计算机。在一些示例中,广播消息在被发送到局域网中的计算机之前也被获得和/或缓存在一个或多个缓存器中。在第三方面中,一种在第一计算机与第二计算机之间传输数据的方法,包括:由所述第一计算机获得用于传输到所述第二计算机的数据;将所获得的数据缓存在一个或多个缓存器中;由所述第一计算机使用所述第二计算机的预先配置的网络地址向所述第二计算机发送探查消息;由所述第一计算机接收来自所述第二计算机的响应消息,所述响应消息指示:由所述第二计算机使用的安全设置;从所述一个或多个缓存器中读取所述数据;并且根据所述安全设置将所述数据传输到所述第二计算机。在一些示例中,探查消息在被发送到局域网中的计算机之前也被获得和/或缓存在一个或多个缓存器中。在第四方面中,一种在第一计算机与第二计算机之间传输数据的方法,包括:由所述第一计算机获得用于传输到所述第二计算机的多个数据元素,其中,所述多个数据元素具有接收要求,所述接收要求为要求由所述第二计算机来接收所述数据;将所获得的多个数据元素缓存在一个或多个缓存器中;将所述多个数据元素传输到所述第二计算机;确定在阈值时间段内所述第二计算机尚未确认所述多个数据元素;并且重新传输所述多个数据元素中的最新传输的数据元素。所述方法还可以包括,在重新传输所述多个数据元素中的最新传输的数据元素之后,接收来自所述第二计算机的确认消息,其中,所述确认消息指示:已经接收到重新传输的数据元素;以及尚未接收到所述多个数据元素中的至少一个另外的数据元素。因此,响应于重新传输最新传输的但未得到确认的数据元素,第一计算机接收“智能确认”消息。所述方法还可以包括,在接收到所述确认消息之后:重新传输所述多个数据元素中的所述至少一个另外的数据元素。在第五方面中,一种在第一计算机与第二计算机之间传输数据的方法,包括:由所述第一计算机获得用于传输到所述第二计算机的数据;将所获得的数据缓存在一个或多个缓存器中;向所述第二计算机传输三个或更多个带宽请求消息;由所述第二计算机接收所述三个或更多个带宽请求消息并且作为响应而确定所述第一计算机与所述第二计算机之间的连接的带宽;由所述第二计算机向所述第一计算机传输带宽估计消息,所述带宽估计消息指示由所述第二计算机确定的带宽;并且进行以下各项中的至少一项:由所述第一计算机基于由所述第二计算机确定的带宽以预定义速率传输所述数据;并且由所述第一计算机调整能够被传输到所述第二计算机而不要求确认的数据元素的阈值数量。在一些示例中,以预定义速率将数据从一个或多个缓存器读取到主缓存器中,并且所述方法还包括,在传输所述数据之前:由所述第一计算机基于由所述第二计算机确定的带宽来调整所述预定义速率。根据本发明的另一方面,提供了一种包括存储器和至少一个处理器的系统,所述至少一个处理器被配置为实施根据本发明的第一方面、第二方面、第三方面、第四方面或第五方面的方法。例如,所述系统可以包括第一计算机和/或第二计算机。在本发明的第二方面、第三方面、第四方面或第五方面中,所获得的数据可以包括不同类型、不同接收要求的数据,并且可以根据传输优先级进行传输。因此,本发明的第一方面的特征也可以在本发明的第二方面、第三方面、第四方面或第五方面中进行实施。根据本发明的另外的方面,提供了一种第一计算机,包括:存储器;以及至少一个处理器,其被配置为:获得用于传输到第二计算机的数据,所述数据至少包括第一数据和第二数据,所述第一数据为第一类型的数据,并且所述第二数据为第二类型的数据,每种类型的数据具有相关联的传输优先级,并且所述第一类型的数据具有接收要求,所述接收要求为要求由所述第二计算机来接收所述数据,并且所述第二类型的数据没有接收要求;将所获得的数据缓存在一个或多个缓存器中;从所述一个或多个缓存器中读取所述数据并且根据所述传输优先级将所述数据传输到所述第二计算机;并且仅针对具有接收要求的传输的数据,参考来自所述第二计算机的预期的确认消息来确定所述第二计算机是否已经接收到所传输的数据,并且,如果确定尚未接收到所传输的数据,则将所述数据重新传输到所述第二计算机,所述接收要求为要求由所述第二计算机来接收所述数据。根据本发明的另一方面,提供了一种包括第一计算机和第二计算机的系统,其中,所述第一计算机包括:第一存储器;以及第一处理器,其被配置为:获得用于传输到所述第二计算机的数据,所述数据至少包括第一数据和第二数据,所述第一数据为第一类型的数据,并且所述第二数据为第二类型的数据,每种类型的数据具有相关联的传输优先级,并且所述第一类型的数据具有接收要求,所述接收要求为要求由所述第二计算机来接收所述数据,并且所述第二类型的数据没有接收要求;将所获得的数据缓存在一个或多个缓存器中;从所述一个或多个缓存器中读取所述数据并且根据所述传输优先级将所述数据传输到所述第二计算机;并且仅针对具有接收要求的传输的数据,参考来自所述第二计算机的预期的确认消息来确定所述第二计算机是否已经接收到所传输的数据,并且,如果确定尚未接收到所传输的数据,则将所述数据重新传输到所述第二计算机,所述接收要求为要求由所述第二计算机来接收所述数据;其中,所述第二计算机包括第二存储器和第二处理器,所述第二处理器被配置为:从所述第一计算机接收数据元素;并且针对具有接收要求的数据,所述接收要求为要求由所述第二计算机来接收所述数据:向所述第一计算机传输确认消息,所述确认消息包括对已经接收到所述数据元素的指示。在一些示例中,所述第一处理器被配置为:获得第三数据,所述第三数据为所述第一类型的数据;将所述第三数据缓存在所述一个或多个缓存器中;确定所述第二计算机没有接收到所述第一数据;并且作为响应:将所述第一数据的传输优先级更新到高于所述第三数据的传输优先级的等级;并且在将所述第三数据传输到所述第二计算机之前将所述第一数据重新传输到所述第二计算机。在一些示例中,所述第一处理器被配置为:针对具有接收要求的数据,所述接收要求为要求由所述第二计算机来接收所述数据:确定在阈值时间段内所述第二计算机尚未确认所述多个数据元素;并且重新传输所述多个数据元素中的最新传输的数据元素。在一些示例中,所述第二处理器还被配置为:确定尚未接收到至少一个数据元素,其中,在所述第一计算机传输所述数据元素之前,所述第一计算机传输了所述至少一个数据元素;并且向所述第一计算机传输所述确认消息,所述确认消息包括:对尚未接收到所述至少一个数据元素的指示。在一些示例中,数据元素与序列号相关联,并且其中:所述对已经接收到所述数据元素的指示包括对与所述数据元素相关联的序列号的指示;并且所述对尚未接收到所述至少一个数据元素的指示包括对与所述至少一个数据元素相关联的序列号的指示。在一些示例中,所述第一处理器被配置为:存储与作为具有接收要求的类型的数据相关联的序列号列表,所述接收要求为要求由所述第二计算机来接收所述数据;并且针对所述序列号列表中的每个序列号存储所述数据的相关联的传输状态。在一些示例中,所述第一处理器被配置为:存储与作为没有接收要求的类型的数据相关联的序列号列表;并且针对所述序列号列表中的每个序列号存储所述数据的相关联的传输状态。在一些示例中,所述第一处理器被配置为:获得第四数据,所述第四数据为没有接收要求且传输优先级和与所述第一数据相关联的传输优先级相同的第三类型的数据;将所述第四数据缓存在所述一个或多个缓存器中;并且在传输所述第一数据之前将所述第四数据传输到所述第二计算机。在一些示例中,所述第一处理器被配置为:将所述数据从所述一个或多个缓存器读取到主缓存器中;并且将所述数据从所述主缓存器传输到所述第二计算机。在一些示例中,所述第一处理器被配置为以预定义速率将数据元素读取到所述主缓存器中。在一些示例中,所述第一处理器被配置为:向所述第二计算机传输三个或更多个带宽请求消息;并且所述第二处理器被配置为:接收所述三个或更多个带宽请求消息并且作为响应而确定所述第一计算机与所述第二计算机之间的连接的带宽;向所述第一计算机传输带宽估计消息,所述带宽估计消息指示由所述第二计算机确定的所述带宽;并且所述第一处理器被配置为进行以下各项中的至少一项:基于由所述第二计算机确定的所述带宽来调整所述预定义速率;并且调整能够被传输到所述第二计算机而不要求确认的数据元素的阈值数量。在一些示例中,所述第一处理器被配置为:从所述主缓存器中读取所述数据并且形成具有有效载荷的数据分组,所述有效载荷包括所述第一数据和所述第二数据;并且将所述数据分组传输到所述第二计算机。在一些示例中,所述第一处理器被配置为:在将所述数据从所述一个或多个缓存器读取到所述主缓存器中之后:针对没有接收要求的数据,从所述一个或多个缓存器中移除数据;并且针对具有接收要求的数据,将数据保留在所述一个或多个缓存器中,直到确定所述第二计算机已经接收到所传输的数据为止,所述接收要求为要求由所述第二计算机来接收所述数据。在一些示例中,所述第一处理器被配置为,在传输所述第一数据和所述第二数据之前:向局域网中的所有计算机发送广播消息;由所述第一计算机接收来自所述第二计算机的响应消息,所述响应消息至少指示:所述第二计算机的网络地址;以及由所述第二计算机使用的安全设置;并且根据所述安全设置向所述第二计算机传输数据。在一些示例中,所述第一处理器被配置为:在传输所述第一数据和所述第二数据之前:使用所述第二计算机的预先配置的网络地址向所述第二计算机发送探查消息;由所述第一计算机接收来自所述第二计算机的响应消息,所述响应消息指示:由所述第二计算机使用的安全设置;并且根据所述安全设置向所述第二计算机传输数据。以上内容总结的发明使得计算机能够进行更加高效的操作,特别是使得计算机之间能够进行更加高效的通信。本发明还具有使计算机通信更加高效的额外优点,其中,通信的数据包括高优先级/关键信息和不需要确认的低优先级/非关键信息的混合物。根据下面参考附图仅通过举例的方式给出的本发明优选实施例的描述,本发明的另外的特征和优点将变得显而易见。附图说明图1是根据示例的用于在第一计算机与第二计算机之间传输数据的系统的框图;图2是根据示例的传输数据的方法的流程图;图3是根据示例的第一计算机传输和接收数据的框图;图4是根据示例的第二计算机传输和接收数据的框图;图5是根据第一示例的经优先化处理的缓存器的框图;图6是根据第二示例的经优先化处理的缓存器的框图;图7是根据示例的在经优先化处理的缓存器与主缓存器之间传输数据的框图;图8是根据示例的数据部分的框图;图9是根据示例的方法的流程图;图10是根据示例的确认消息的框图;图11是根据示例的通过重新传输最新传输的数据块来减小带宽的方法的流程图;并且图12是根据示例的测量连接带宽的方法的流程图。具体实施方式图1描绘了用于在第一计算机102与第二计算机104之间传输数据的示例性系统100。该示例中的第一计算机102是用于对患者进行医学监测的设备。然而,本文描述的方法可以由任何类型的计算设备使用。该示例中的第二计算机104是服务器。然而,第二计算机可以是任何类型的计算设备,并且可以额外地或替代地是用于对患者进行医学监测的设备。第一计算机102和第二计算机104均可以包括存储器和一个或多个处理器,所述一个或多个处理器能够处理机器可读指令以实施本文描述的方法。医学人员(例如,护理人员)可以在紧急情况期间使用设备102。例如,能够想象到这样的场景:一个或多个患者卷入事故,并且一个或多个护理人员被要求提供帮助。护理人员可以乘坐配备有设备102的车辆106(例如,救护车)到达事故现场。通过使用设备102,护理人员能够在远离救护车的情况下监测事故现场的每个患者以及在车辆106内前往医学设施时监测事故现场的每个患者。示例性医学设施可以包括医院或医生的手术室。设备102可以独立操作,或者可以经由通信路径110a(例如,有线连接和/或无线连接)被电耦合和/或通信性耦合到安装在车辆106中的对接站108。设备102能够从诸如输入设备、传感器或仪器之类的一个或多个源112接收和存储不同类型的数据。数据可以包括指示患者的当前健康和/或医学状态的医学数据,并且可以包括血压、心率、温度或任何其他类型的医学数据。医学数据能够由设备102进行收集、处理和/或至少临时存储。也能够经由用户接口从操作者接收其他数据(例如,患者数据)。例如,操作者可以经由键盘、按键或指针设备添加患者数据,例如,事故记录和/或患者的姓名、年龄和/或外在状况。可以经由相应的麦克风或静态相机或视频相机来接收其他种类的患者和/或医学数据(例如,声音/语音或图像数据)。也能够在设备102内生成数据。例如,能够处理由传感器112测量的实时数据以计算平均读数。也能够由设备102生成其他非医学或患者数据。例如,当设备102或操作者希望与另一实体(例如,服务器104)建立连接时,能够生成通信连接数据。因此,设备102可以获得许多不同类型的数据。在一些情况下,将该数据传输到另一实体(例如,服务器104)会是有用的。多个计算机114然后能够访问在服务器104内存储的数据。例如,远程医学应用可以提供对在服务器104上存储的数据的访问。每个计算机114可以位于医学设施的不同房间中,或者每个计算机114可以位于不同的医学设施中。医学人员(例如,护士和医生)可以访问在服务器104上存储的数据中的至少一些数据。为了便于向服务器104传输数据,设备102被配置为连接到一个或多个通信网络。例如,设备102可以包括作为通信模块(未示出)的部分的局域网和广域网通信能力。例如,设备102可以支持经由wi-fi、zigbee、nfc和蓝牙通信协议中的一种或多种通信协议的局域通信。设备102还可以支持广域网通信以经由无线电网络、蜂窝网络(实施2g、3g、4g或5g协议中的一种或多种协议)甚至卫星网络中的一种或多种来传输数据。能够经由一个或多个网络设备116(例如,蜂窝基站、卫星、无线电杆或接入点)来传送数据。因此,该设备可以经由局域通信网络和/或广域通信网络将数据传输到服务器104。在一些示例中,设备102可以经由局域网和/或广域网将数据直接传送到服务器104。在其他示例中,可以经由其他设备或中介来传送数据。例如,对接站108可以包括经由连接路径110b的广域网通信能力。由此,能够经由通信路径110a,经由对接站108在设备102与远程服务器104之间间接传输数据。说明性数据连接由相应的通信路径110a、110b、110c、110d、110e、110f来描绘。数据类型有时,设备102可能位于数据连接不可靠的远程位置。例如,蜂窝连接可能是间歇性的,遭受高数据丢失和/或具有低带宽。在这些情况下,可以将数据进行优先化处理,因为数据中的一些数据可能被认为比其他数据更为紧急。因此,该数据的传输可以被优先化处理以确保它在不太紧急的数据之前被接收。数据类型优先级要求可靠接收?连接消息(开始或断开)高是实时心率中否血压(30秒平均值)高否心率(1分钟平均值)低是病史信息中是表1表1描绘了一个表格,其中示出了一些示例类型的数据、它们相关联的优先级以及对它们是否要求可靠接收的指示。该表示出了五种示例类型的数据,其中包括连接消息、实时心率、血压(30秒平均值)、心率(1分钟平均值)和病史信息。也可以存在其他类型的数据。虽然该示例指示存在五种类型的数据,但是也可以存在两种或更多种类型的数据。根据一个示例,该表示出某些类型的数据的优先级高于其他类型的数据的优先级。因此,应当首先传输较高优先级的数据,然后再传输较低优先级的数据。在该示例中,连接消息(例如,开始消息)被认为比某些类型的患者数据(例如,实时心率数据)具有更高的优先级,因为如果没有连接开始消息,就无法建立数据连接。类似地,对于医学人员而言,病史信息会比1分钟平均心率读数更有价值,因此具有更高的优先级。因此,每种类型的数据可以具有相关联的传输优先级。虽然该示例指示存在三个优先级,但是在其他示例中也可以存在两个或更多个优先级。更一般地,其他示例可以不同地优先化处理数据。某些类型的数据具有接收要求,该接收要求为要求由服务器104来接收该数据。例如,连接消息可能要求可靠接收,以便使得能够建立连接。其他类型的数据(例如,某些实时数据)可能没有接收要求。例如,实时心率数据可能不需要由服务器104来接收。设备102和服务器104能够通过知晓数据类型来确定该数据是否具有接收要求,该接收要求为要求接收该数据。重要的是确保首先传输最高优先级的数据,并且如果服务器104没有接收到任何要求可靠接收(任何优先级)的数据,则重新传输这些数据。为了实现这一点,已经开发出新的传输数据的协议和方法。在本文中,该协议被称为增强型数据服务(eds)协议。在一些示例中,eds协议可以被建立在不保证数据传递的协议(例如,udp)上。从广义上讲,eds通过优先化处理发送数据的顺序来准备要用于传输的数据,同时还确保对某些类型的数据的重新传输。除了其他优点之外,这种新的协议还可以更加高效地使用网络资源(例如,可能不需要接收的数据能够省去tcp的重新传输开销)。现在将描述eds的示例实施方式。eds过程概述图2是示出在第一计算机(例如,设备102)与第二计算机(例如,服务器104)之间传输数据的方法200的流程图。该流程图表示参考图3和图4来更加详细地描述的过程和另外的方法步骤的概览。在框202处,该方法包括由设备102获得用于传输到服务器104的数据。在一个示例中,该数据至少包括第一数据和第二数据,第一数据为第一类型的数据,并且第二数据为第二类型的数据,每种类型的数据具有相关联的传输优先级,并且第一类型的数据具有接收要求,该接收要求为要求由服务器104来接收该数据,并且第二类型的数据不具有收据要求。例如,第一类型的数据可以是连接消息,具有高优先级并且要求可靠接收。第二类型的数据可以是实时心率数据,具有中优先级并且不要求可靠接收。框202能够作为准备过程306的部分来执行或者在缓冲过程308(稍后关于图3进行描述)的初始步骤中执行。在框204处,该方法包括将所获得的数据缓存在一个或多个缓存器中。例如,第一数据可以被存储在高优先级缓存器中,并且第二数据可以被存储在中优先级缓存器中。替代地,第一数据和第二数据可以被存储在单个缓存器中。例如,框204能够作为缓冲过程308(稍后关于图3进行描述)的部分来执行。在框206处,该方法包括从一个或多个缓存器中读取数据并且根据传输优先级将数据传输到服务器104。例如,框206可以包括从存储第一数据的缓存器中选择该第一数据,使得第一数据被传输,然后从存储第二数据的缓存器中选择第二数据,并且使得第二数据被传输。在一个特定示例中,传输数据包括将数据按优先级顺序写入udp套接字,并且数据经由udp被传输。框206能够作为导出过程310和通信过程312(稍后关于图3进行描述)的部分来执行。在框208处,该方法包括:仅针对具有接收要求的传输的数据,由设备102参考来自设备104的预期的确认消息来确定设备104是否已经接收到所传输的数据,并且,如果确定尚未接收到所传输的数据,则将该数据重新传输到设备104,接收要求为要求由设备104来接收该数据。因此,框208可以包括接收来自服务器104的确认消息,该确认消息指示没有接收到第一数据。基于该确认消息,设备102能够重新传输该数据。确定是否已经接收到所传输的数据的步骤能够作为确认过程314的部分来执行,并且重新传输数据的步骤能够作为缓冲过程308、导出过程310和通信过程312(稍后关于图3进行描述)的部分来执行。图3和图4描绘了设备102、服务器104和由这些项目中的每个项目执行的过程的更加详细的视图。设备102能够执行上述方法200。设备102正在运行生成或接收数据的应用302。例如,该应用可以是医学监测应用。应用302可以从多个源112接收数据。另外,应用302还能够生成它自己的数据。例如,应用302可以被布置为向服务器104传输数据,因此能够通过生成“连接开始”消息而在设备102与服务器104之间建立连接。还可以通过处理从源112接收的数据来生成数据。当要传输数据时,应用302将数据传送到eds发送过程304。eds发送过程304基于接收到的数据的优先级来传输数据,同时还处理对要求可靠接收的数据的重新传输(如果服务器104没有接收到数据)。因此,eds发送过程304从应用302获得不同类型的数据。在一些示例中,eds发送过程304还生成其自己的用于发送到服务器104的数据。在一个示例中,eds发送过程304从应用302内运行。在其他示例中,应用302和eds发送过程304是分开的。eds发送过程304能够区分它获得的不同类型的数据。因此,在一个示例中,在应用302内生成的数据能够被嵌入或标记有元数据以指示数据类型。例如,由应用302导出的数据能够根据javascriptobjectnotation(json)语法进行格式化。数据串可以指示特定类型的数据。例如,如果数据类型是连接消息,则数据可以包括“类型”:“连接”。因此,当eds发送过程304获得数据时,能够通过解析数据来确定数据类型。一旦eds发送过程304已经接收到数据,该数据就准备好进行传输。在任选的准备过程306中,数据可以被分成多个适当大小的数据块(如果数据还没有被适当地格式化)。一旦已经准备好数据,就执行缓冲过程308。这里,将数据存储/缓冲在一个或多个缓存器307中,同时数据等待传输(能够在图5和图6中找到缓存器的更加详细说明)。准备过程306或缓冲过程308可以包括为每个数据块分配序列号,以例如允许监测和跟踪数据的传输状态。能由缓冲过程308访问的数据库309可以存储序列号及其相关联的传输状态的列表。例如,数据库309可以记录数据是否已经被发送以及数据是否已经得到确认(如果数据要求可靠接收)。在一些示例中,数据库309可以仅存储与作为要求可靠接收的类型的数据相关联的序列号和相应的传输状态的列表。然而,在其他示例中,数据库309还存储与作为不要求可靠接收的类型的数据相关联的序列号和相应的传输状态的列表。在特定示例中,序列号和传输状态与相关联的数据被一起存储在缓存器307中,而不是被存储在单独的数据库309中。接下来,执行导出过程310。导出过程310从一个或多个缓存器307中读取数据并且将该数据传送到处理数据的实际传输的通信过程312。基于在缓存器中存储的数据的传输优先级将数据传输到通信过程312。例如,首先导出具有最高优先级的数据,然后再导出具有较低优先级的数据。这确保了通信过程312首先传输最高优先级的数据。通信过程312按优先级顺序从导出过程310接收数据。通信过程312与服务器104建立连接,并且按照从导出过程310接收的顺序传输数据。在特定示例中,传输数据包括建立udp套接字。能够按优先级顺序将从导出过程310接收到的数据写入udp套接字,由此将该数据传输到服务器104。通信过程312还可以在发送数据之前将该数据缓存在一个或多个其他(传输)缓存器中。例如,缓存器可以是udp缓存器。因此,以这种方式,eds发送过程304控制将数据传输到服务器104的顺序。下面关于图7提供对导出过程310和通信过程312的更加详细的描述。服务器104正在运行eds接收过程404,如图4所示。服务器104接收由设备102传输的数据。最初,接收数据,作为通信过程412的部分。通信过程412是被配置为接收由设备102的对应通信过程312已经传输的数据的过程412。在特定示例中,通信过程412经由udp套接字接收数据。然后将接收到的数据传送到eds接收过程404。除了所示出的那些过程之外,eds接收过程404还可以包括若干过程。确认过程414接收来自通信过程412的数据。从这里,能够将接收到的数据传输到应用402。应用402可以是例如远程医学应用,医学人员使用应用402来审查接收到的数据。确认过程414可以例如基于序列号对数据进行排序,然后以该顺序将数据传送到应用402。然而,在另一示例中,按照接收数据的顺序将数据传递到应用402。例如,应用402可以处理数据并且将数据存储在数据存储模块中。确认过程414还可以确定接收到的数据类型是否要求确认。针对要求可靠接收的数据类型,可以生成一个或多个确认消息以指示已经可靠地接收到数据块。确认消息可以额外地或替代地指示尚未接收到一个或多个数据块,这可以例如基于缺失的序列号来推断。因此,确认过程414生成与所传输的数据相关联的确认消息。设备102能够使用这些确认消息来确定是否应当重新传输任何数据。使用传输过程416将生成的确认消息传输到设备102。传输过程416可以实施与关于图3描述的过程306、308、310基本类似的过程。传输过程416还能够发送从应用402接收的数据。确认消息被传送到通信过程412,通信过程412向设备102发送数据。通信过程412可以以与通信过程312的方式基本相同的方式传输数据。例如,通信过程412可以包括建立udp套接字。能够将从传输过程416接收到的数据写入udp套接字并且因此将该数据传输到设备102。设备102接收由服务器104传输的确认消息。最初,通信过程312接收数据。在特定示例中,通信过程312实施udp来接收数据。从这里,然后将数据传送到eds发送过程304。确认消息被传送到确认过程314,如图3所示。从服务器104接收的其他数据在被传送到应用302之前可以由eds接收过程(未示出)进行处理。在确认过程314中,确认消息被处理以确定任何先前发送的数据是否要求重新传输。如果确认消息指示服务器104接收到数据,则更新特定数据块的传输状态以指示数据被肯定地确认。如果确认消息指示服务器104没有接收到数据,则更新特定数据块的传输状态以指示数据已经被否定地确认。因此,基于确认消息,导出过程310然后能够通过再次将数据传送到通信过程312来使数据被重新传输。该操作继续进行,直到没有进一步的数据要传输或重新传输为止。参考图9描述了重新传输过程的更加详细概述。在一些示例中,在接收到数据时,服务器104和/或设备102更新连接状态图标的属性以向用户指示已经接收到数据。例如,连接状态图标可以具有特定颜色以指示“良好连接”,即,最近(例如在过去30秒内)已经接收到数据。如果在过去30秒内尚未接收到数据,则连接状态图标会被更新为不同颜色以指示“连接受限”,或者如果有一段时间(例如在过去2分钟内)尚未接收到数据,则连接状态图标会具有另一种颜色以指示“无连接”。可以由应用302、402来控制和更新连接状态图标。在一个特定示例中,设备102被配置为基于接收到从服务器104接收到的确认消息来更新设备102的连接状态图标。例如,可以在每次从服务器104接收到确认消息时通知应用302,并且应用302作为响应而更新连接状态图标。eds缓存器如上所述,数据在缓冲过程308期间被缓冲/存储在一个或多个缓存器307中。例如,这些缓存器可以被称为eds缓存器。图5描绘了多个eds缓存器500。在该示例中,由设备102获得的每种类型的数据有单独的eds缓存器。例如,存在高优先级连接消息缓存器502、高优先级血压(30秒平均值)缓存器504、中优先级实时心率缓存器506、中优先级病史信息缓存器508和低优先级心率(1分钟平均值)缓存器510。也可以存在额外的缓存器。因此,当获得不同类型的数据时,它们能够被存储在对应的缓存器中,作为缓冲过程308的部分。阴影缓存器指示存储不要求可靠接收的数据的缓存器。在另一示例中,每个优先级级别可以有一个缓存器,如图6所示。因此,不同类型但具有相同传输优先级的数据可以被存储在相同缓存器内。图6描绘了高优先级缓存器602、中优先级缓存器604和低优先级缓存器608。高优先级缓存器602能够存储连接消息类型数据和血压(30秒平均值)类型数据。中优先级缓存器604能够存储实时心率类型数据和病史信息类型数据。低优先级缓存器608能够存储心率(1分钟平均值)类型数据。在另外的示例中,可能存在一个存储所有数据的缓存器。在该缓存器中存储的数据能够得到标记,以便允许确定其优先级和传输状态。数据可以以多种方式被存储在eds缓存器中。例如,数据可以在被存储在缓存器中之前被分成更小的部分。这些部分可以被称为数据“块”。一旦将数据存储在一个或多个缓存器中,就根据传输优先级从缓存器中读取数据。因此,作为导出过程310的部分,首先导出具有较高优先级的数据,然后再导出具有较低优先级的数据。例如,将高优先级缓存器中的数据导出到通信过程312,直到所有高优先级数据都已经被导出为止。只有这样时,导出过程310才会开始导出较低优先级的数据。在一个示例中,如果两个或更多个eds缓存器具有相同的优先级但一个存储要求可靠接收的数据而另一个存储不要求可靠接收的数据,则可能优选首先传输不要求可靠接收的数据。例如,在某些医学情况下,首先传输实时数据然后再传输非实时数据可能很有用。在某些情况下,可能要求以最小延迟发送实时数据,使得远程临床护理提供者能够正确评估患者的当前状态。能够通过首先确定数据类型并然后通过参考查找表(例如,表1中所描绘的查找表)确定相关联的优先级来确定数据的优先级。替代地,与每个缓存器有关的元数据可以指示优先级。在缓存器中存储的所有数据都能够具有相关联的传输状态标记。这能够指示数据是否已经被发送或者数据是已经被肯定地确认还是已经被否定地确认(如果与数据类型相关)。与eds发送过程304最初获得的数据相关联的传输状态标记可以被自动设置以指示该数据尚未被发送。因此,导出过程310被配置为导出具有指示数据尚未被发送的传输状态的数据。一旦导出该数据,就可以更新传输状态以指示数据已经被发送。这阻止了导出过程310多次连续导出相同的数据块。因此,导出过程310不理会具有指示数据已经被发送的传输状态的数据。如果数据被否定地确认(即,它没有被服务器104接收到),则可以更新传输状态以指示该事实。如果确认消息明确指示尚未接收到数据块,或者如果在阈值时间段内尚未接收到确认消息,则传输状态可以被设置为“否定确认”。为了确保该数据被重新传输,导出过程310因此还被配置为导出具有指示数据已经被否定地确认的传输状态的数据。如果数据被肯定地确认(即,它被服务器104接收到),则可以更新传输状态以指示该事实。如果确认消息指示或推断已经接收到数据块,则传输状态可以被设置为“肯定确认”。因此,导出过程310还被配置为不理会具有指示数据已经被肯定地确认(即,已经被接收到)的传输状态的数据。在一些示例中,即使在已经将数据导出到通信过程312之后,数据的副本仍然保留在缓存器中。在特定示例中,要求可靠接收的数据保留在缓存器中,直到数据已经被肯定地确认为接收到为止。之后,能够删除数据。相反,一旦发送了不要求可靠接收的数据,就能够从缓存器中删除该数据。主缓存器在一些示例中,数据在被发送之前从eds缓存器被复制或传输到单个“主缓存器”中。例如,通信过程312可以建立它自己的传输缓存器来缓存从eds发送过程304接收的数据。因此,主缓存器按照从eds发送过程304接收的顺序接收和缓存数据。图7描绘了从一个或多个eds缓存器700到“主缓存器”702的数据传递。这里,导出过程310根据传输优先级将数据块复制或移动到单个主缓存器702中。例如,导出过程310从高优先级缓存器704、中优先级缓存器706和低优先级缓存器708复制或移动数据块。主缓存器702能够被建立和管理,作为通信过程312的部分。在特定示例中,主缓存器702是udp套接字发送缓存器,其被建立为udp的部分。因此,导出过程310能够涉及建立udp套接字以及将数据按优先级顺序写入udp套接字。一旦将数据缓存在主缓存器702中,就使用标准udp流程来发送数据。例如,可以将数据放入一个或多个分组中,每个分组具有一个udp标头。因此,以导出过程310导出数据的顺序将该数据从主缓存器702传输到服务器104。在图7的示例中,导出过程310被配置为以预定义速率将在eds缓存器700中存储的数据块读取到主缓存器702中。这个预定义速率可以被称为“节拍率”。该速率可以是每20ms、30ms一个块等。换句话说,导出过程310被配置为例如每20ms、30ms、40ms从eds缓存器700向主缓存器传递一个(特定大小的)数据块。该速率可以是能由用户配置的。在一些示例中,在不要求确认的情况下放入主缓存器702的块的数量受到传输窗口大小变化量的限制。例如,能够在不要求确认的情况下传输的块的数量可以由传输窗口大小变化量来设置。因此,导出过程310可以监测被发送但未被确认的块的数量,并且在被发送但未被确认的块的数量等于传输窗口大小变化量时暂时停止将数据传输到主缓存器702中。导出过程310可以访问传输状态的数据库以确定未被确认的块的数量。在特定示例中,传输窗口大小变化量被设置为100。在一个示例中,节拍率和/或传输窗口大小变化量能够基于设备102与服务器104之间的数据连接的带宽而变化。因此,可以在带宽测量过程(稍后参考图12进行描述)中确定设备102与服务器104之间的带宽。数据块创建如简要提到的,数据在被应用302导出之前可能已经被分成更小的块或元素。然而,在其他示例中,数据被分割为准备过程306的部分。图8描述了如何将数据分成更小的块。应用302在操作期间生成或测量原始数据802。例如,原始数据802可以是由仪器112测量的数据。应用302能够将原始数据802导出为多个较小的消息804。例如,这些较小的消息804可以具有固定的大小或不同的大小。一条消息可以对应于一个特定的事件,也可以包括在特定的时间间隔内记录的数据。在另一示例中,原始数据802被应用302导出而不被分成消息。准备过程306接收由应用302导出的数据。这里,数据被分割成多个可管理的eds块806。为了创建eds块806,分析所获得的数据(消息804或原始数据802)以确定其大小。如果数据小于“最大块大小”变化量,则将数据封装在一个块806中。如果数据超过最大块大小,则将数据封装在最大块大小的多个块806中,如果要求的话,可以将数据连同包括任何剩余数据的额外块一起封装在最大块大小的多个块806中。在一些示例中,每个块被分配有一个序列号。最大块大小可以使能由用户配置的。每个eds块806可以与eds块标头相关联。例如,标头可以指示以下各项中的至少一项:数据类型、消息序列号(如果相关)、用于封装消息的块的数量(如果相关)、块序列号,以及块的总长度。然后将块有效负载(即,实际数据)附到eds标头。一旦已经创建了块,就能够布置块并将其存储在一个或多个eds缓存器中,作为所描述的缓冲过程308的部分。一旦被服务器104接收到,就能够基于消息和/或块序列号来重建数据。能够重新传输缺失的块806。在一些示例中,通信过程312在块被发送到服务器104之前将单个块打包成数据分组。例如,这些数据分组可以是udp数据分组。这能够取决于最大块大小和最大分组大小。优选地,为了避免碎片,最大块大小被设置为小于最大分组大小。在其他示例中,两个或更多个块可以被打包成单个数据分组。例如,这些数据分组可以是udp数据分组。在一个特定示例中,不同类型的数据能够被打包在单个数据分组中。例如,要求可靠接收的类型的数据块与不要求可靠接收的类型的数据块可以被打包在单个分组中。在某些eds缓存器中,缓存器被配置为仅存储对应于一条消息804的数据。因此,当eds发送过程304生成并接收新的消息时(其中该消息可以对应于一个或多个块806),在缓存器中存储的旧的消息被删除。如果只需要最新生成的消息,这会是期望的情况。例如,可能只需要最新的“连接消息”。在另一示例中,某些eds缓存器被配置为在某个时间长度内存储消息/块。因此,早于配置的时间限制的数据将被删除。例如,如果某些类型的数据(例如,不要求可靠接收的数据)被认为是“旧的”,则该数据可能没有多大用处。缓存器管理图9是示出可以作为如图2所示的框208的部分执行的进一步的方法步骤的流程图。在框900处,该方法包括将一个或多个数据块传输到服务器104(例如作为过程310和312的部分)。一旦发送了数据块,就可以更新数据块的传输状态。在框902处,确定被发送的数据是否是要求可靠传输的数据类型。如果数据不要求可靠接收,则该方法包括在框904处从其中存储数据的eds缓存器中删除数据。如果数据确实要求可靠接收,则该方法包括在框906处通过参考预期的确认消息来确定服务器104是否已经接收到数据。框906可以作为确认过程314的部分而发生。例如,如果确定在阈值时间段内尚未肯定地确认数据,则可以确定服务器104没有接收到数据。替代地,接收到的确认消息可以指示服务器104没有接收到数据。因此,如果确定尚未接收到数据,则能够在框910中重新传输数据。例如,能够更新数据的传输状态以指示数据已经被否定地确认。作为过程310和312的部分,传输状态的这种变化引起数据被重新传输并因此被重新导出。如果确定已经接收到数据(即,数据已经被肯定地确认),则能够更新传输状态以指示数据已经被肯定地确认。这会引起在框908中从eds缓存器中删除数据。在一个示例中,框910还包括将数据的传输优先级更新到高于相同类型的其他数据的传输优先级的级别。例如,服务器104没有接收到的数据的优先级级别能够高于缓存器中的具有相同类型的其他数据的优先级级别。例如,数据可以被标记为“紧急”,因此优先于通常具有相同优先级的相同类型的数据。替代地,可以更新传输状态以指示数据已经被否定地确认。因此,导出过程310可以被配置为优先导出要求重新传输的数据,然后再导出被第一次发送的数据。因此,导出过程优先处理被标记为“紧急”或具有指示数据已经被否定地确认的传输状态的数据,然后再处理具有指示数据尚未被发送的传输状态的数据。确认消息如上所述,第二计算机(例如,服务器104)被配置为确认接收到的要求可靠接收的数据。图10描绘了由服务器104生成的“智能”确认消息1000。可以周期性地生成智能确认消息,也可以在服务器104每次接收到要求可靠接收的数据时生成智能确认消息。在该示例中,假定每个要求可靠接收的数据块都与序列号相关联。在一些示例中,每种类型的数据都与不同范围的序列号相关联。每个智能确认消息1000包括对由第二计算机1002接收的最高序列号的指示以及对任何缺失的序列号1004(即,与尚未接收到的数据块相关联的序列号)的指示。服务器104发送的确认消息可以与特定类型的数据相关联。在第一示例中,假定设备102已经将5个数据块传输到服务器104。这些数据块具有以下序列号:001、002、003、004、005。例如,块003和004可能在传输期间已经丢失了。其他块被成功接收。当服务器104接收块005时,作为确认过程414的部分,服务器104能够推断块003和004缺失,因为从未接收到它们。因此,服务器生成的确认消息在字段1002中包括序列号005,在字段1004中包括序列号003和004。因此,这样的确认消息具有肯定地确认块005和否定地确认块003和004的双重目的。如果所有数据都被成功接收,则确认消息不会指示字段1004中有缺失数据。分别作为过程416和314的部分,该确认消息然后由服务器104传输并且由设备102接收。在接收到确认消息时,能够相应地更新块的传输状态。例如,能够更新块001、002和005的传输状态以指示数据已经被肯定地确认,并且能够更新块003和004的传输状态以指示数据被否定地确认。因此,块003和004能够被重新传输,直到它们被肯定地确认为止。在一些示例中,块001和002可能已经被较早的确认消息肯定地确认(并且可能已经从eds缓存器中被删除)。在第二示例中,假定设备102已经传输了10个数据块。块001-005已经被成功接收并且被肯定地确认。然而,自从块006被发送而没有被肯定或否定地确认以来,阈值时间段现在已经过去了。在此期间,还传输了块007-010,因此块006-010均未被肯定或否定地确认。这可能是因为块006-010在传输期间丢失了,也可能是因为服务器104生成的(一个或多个)确认消息在传输到设备102期间丢失了。因为设备102无法明确地确定服务器104是否接收到这些块,所以可以重新传输所有数据块006-010。然而,如果发现实际接收到这些块中的若干块,则这样的过程将是对带宽的低效使用。因此,为了避免重新传输所有块006-010,设备102可以在阈值时间段已经过去之后重新传输最新传输的块。例如,设备102能够重新传输块010。如果成功接收到块010,则服务器104将生成并传输智能确认消息以指示块010是已经接收到的具有最高序列号的块(在字段1002中),并且指示任何缺失的块序列号(在字段1004中)。通过重新传输具有最高序列号的块,智能确认消息指示任何缺失的较低序列号数据。例如,可能是所有的块006、007、008都被接收到,但是相关联的确认消息丢失了。因此,随后的智能确认消息通知设备102仅块009缺失,并且能够传输块009。因此,该流程避免了在可能非必要时不必要地重新传输过量的数据。如前所述,“阈值时间段”是自上次发送每个数据块以来经过的时间。因此,在上面的示例中,当确定自传输任何未确认的块(在这种情况下为块006)以来经过的时间已经超过阈值时,重新传输最新传输的块(在这种情况下为块010)的过程发生。该阈值可以是能由用户配置的。在第三示例中,每种类型的数据都与不同范围的序列号相关联。在该示例中,假定设备102已经传输了10个数据块。这些块中的五个块是具有接收要求(该接收要求为要求接收该数据)的数据类型(例如,第一类型)的数据,并且这些块中的五个块是没有接收要求的数据类型(例如,第二类型)的数据。第一类型的数据与第一范围的序列号(例如,001-005)相关联。第二类型的数据与第二范围的序列号(例如,101-105)相关联。在示例中,从设备102发送数据的顺序如下:001、002、101、102、103、003、104、004、005、105,然而,应当理解,能够以任何顺序发送数据。在该示例中,假定块003和102丢失并且从未被服务器104接收。因此,服务器接收块001、002、004、005和块101、103、104、105。因此,服务器104能够基于与其接收到的数据块相关联的第一范围的序列号来确定尚未接收到第一数据块。例如,服务器104能够推断出块003缺失。这可以在服务器104不按顺序接收数据块时得到确定,或者在此后的任何时间点得到确定。类似地,服务器104能够基于与其接收到的数据块相关联的第二范围的序列号来确定尚未接收到第二数据块。例如,服务器104能够推断出块102缺失。另外,服务器104能够确定第一缺失数据块是具有接收要求(该接收要求为要求由服务器104来接收该数据)的数据。这能够基于其接收到的数据块的数据类型来确定。例如,服务器104能够确定块001、002、004、005是具有接收要求(该接收要求为要求接收该数据)的数据类型(例如,第一类型)的数据。因此,第一缺失数据块(块003)也必须是相同的类型。类似地,服务器104能够确定块101、103、104、105是没有接收要求的数据类型(例如,第二类型)的数据。因此,第二缺失数据块(块102)也必须是相同的类型。服务器104能够通过检查/解析接收到的数据块中的一个或多个数据块来确定与其接收到的数据相关联的数据类型。例如,可以根据javascript对象表示法(json)语法对数据进行格式化,并且数据字符串可以指示特定类型的数据。通过这种方式,服务器104能够确定是否要重新传输缺失的数据。在一些示例中,如果服务器104确定尚未接收到的数据块是具有接收要求(该接收要求为要求接收该数据)的数据,则服务器104能够生成确认消息。在某些示例中,仅针对具有接收要求(该接收要求为要求接收该数据)的数据发送确认消息。在其他示例中,即使不会重新传输任何缺失的数据,也会针对没有接收要求的数据发送确认消息。图11描绘了在第一计算机与第二计算机之间传输数据的方法1100。在框1102中,该方法包括由第一计算机获得用于传输到第二计算机的多个数据块,其中,多个数据块具有接收要求,该数据要求为要求由第二计算机来接收该数据。在框1104中,该方法包括将所获得的多个数据块存储在一个或多个缓存器中。在框1106中,该方法包括将多个数据块传输到第二计算机。在一些示例中,框1106还包括当每个数据块被传输时启动单独的计时器。计时器一直运行,直到第二计算机肯定或否定地确认该数据块为止。在框1108中,该方法包括确定在阈值时间段内第二计算机是否已经确认多个数据块。例如,如果计时器中的一个计时器(例如,与首先传输的数据块相关联的计时器)达到预定义的阈值时间,则这意味着该数据块尚未被第二计算机肯定或否定地确认。因此,框1108可以涉及确定与传输的数据块相关联的计时器达到预定义的时间阈值。如果第一计算机确定在阈值时间段内第二计算机尚未确认多个数据块中的任一个数据块,则该方法包括在框1110中重新传输多个数据块中的最新传输的数据块。如果尚未确认这些块中的任一个块,则尚未肯定或否定地确认这些块中的任一个块。因此,在该阈值时间段内,已经传输了多个数据块,但没有一个数据块被肯定或否定地确认。在重新传输多个数据块中的最新传输的数据块之后,该方法可以包括在框1112中接收来自第二计算机的智能确认消息,其中,该确认消息指示第二计算机已经接收到重新传输的数据块并且尚未接收到多个数据块中的至少一个另外的数据块。该方法然后可以包括在框1114中重新传输至少一个另外的数据块。如果第一计算机在框1108中确定多个数据块中的至少一个数据块已经被确认为在阈值时间段内被第二计算机接收到,则该方法包括在框1116中传输另外的数据块,并且,如果要求的话,重新传输多个数据块中的任何数据块。例如,第一计算机可以接收指示第二计算机已经接收到多个数据块中的至少一个数据块的智能确认消息,并且该确认消息还可以指示多个数据块中的任何数据块是否未由第二计算机接收到。因此,第一计算机能够重新传输那些没有接收到的数据块,并且能够继续正常发送数据。带宽测量如上所述,将数据发送到服务器104的速率能够根据设备102与服务器104之间的连接的带宽而变化。例如,将数据放入主缓存器702的预定义速率和/或传输窗口大小变化量能够根据带宽而增大/减小。图12是示出执行带宽测量的方法1200的流程图。在框1202中,该方法包括向服务器104传输三个或更多个带宽请求消息。因此,这些消息中的每个消息都按顺序传输,延迟可忽略不计。例如,首先传输消息#1,然后传输消息#2和消息#3。这三个消息均都具有相同的大小(例如,它们的大小可以都等于最大块大小)。在框1204中,该方法包括由服务器104接收三个或更多个带宽请求消息并且作为响应而确定设备102与服务器104之间的连接的带宽。可以通过监测接收到消息的时间并计算以下变化量来确定带宽:t1(秒)=消息#2接收时间–消息#1接收时间t2(秒)=消息#3接收时间–消息#2接收时间平均延迟(秒)=(t1+t2)/2带宽(千比特每秒)=消息大小(千比特)/平均延迟因此,能够确定带宽。在框1206处,该方法包括由服务器104向设备102传输带宽估计消息,该带宽估计消息指示由服务器104确定的带宽。在一些示例中,带宽估计消息还指示t1与t2之差是否超过阈值。例如,阈值可以是10%、20%、25%等。这指示延迟计算的变化量的程度。如果超过阈值,则可以确定带宽变化量很大。如果认为变化量很大,则可以稍后传输另一组带宽请求消息以更准确地确定带宽。在框1208处,该方法包括由设备102基于由服务器104确定的带宽来调整预定义速率。换句话说,能够根据测得的带宽来更改将数据放入主缓存器702的速率。例如,如果带宽增大,则能够增大预定义速率(这意味着每秒将更大量的数据(以比特为单位来测量)放入主缓存器)。替代地,框1208可以包括基于带宽来调整能够被发送而不要求确认的数据量。换句话说,能够根据测得的带宽来增大传输窗口大小变化量。例如,如果带宽增大,则能够增大传输窗口大小变化量以允许发送更大量的数据块。设备发现和套接字类型发现在一些情况下,设备102和服务器104位于相同的局域网(lan)上并且服务器104能够具有动态分配的网络地址(例如,ip地址)。在这种情况下,设备102无法被预先配置有服务器的ip地址。因此,设备102能够使用发现流程来查找服务器104的ip地址。如果设备102被配置有服务器的静态ip地址,则能够省去该发现流程。发现流程包括由设备102向lan中的所有计算机发送广播消息。例如,广播消息能够作为udp广播在经配置的udp端口上被发送。广播消息可以包括标识设备102的信息,例如,独特的序列号。服务器104将接收广播消息,并且服务器将发送响应消息。因此,设备102接收来自服务器104的响应消息,并且响应消息至少指示服务器104的网络地址(例如,ip地址)。响应服务器104的网络地址可以被包含在响应消息有效载荷中,或者可以通过检查udp分组的发送方网络地址来确定。在一些示例中,响应消息还可以包括标识设备102的信息,例如,独特的序列号。因此,能够确定服务器104的网络地址。在某些示例中,响应消息还指示由服务器104使用的安全设置。例如,安全设置指示服务器104是正在运行未加密的udp套接字还是正在运行加密的udp套接字。能够通过响应消息的性质来推断安全设置。例如,如果设备102和服务器104正在运行未加密的udp套接字,则服务器104将能够处理该消息并且作为响应而利用指示其网络地址的消息进行回复。然而,如果设备102正在运行未加密的udp套接字,并且服务器104正在运行加密的dtls套接字,则服务器104将拒绝该消息并且因此将用dtls拒绝消息进行响应。在这种情况下,设备102将通过检查dtls拒绝消息的发送方ip地址来确定网络地址。因此,响应消息类型能够用于推断服务器104的安全设置。换句话说,响应消息指示服务器104是正在运行加密的udp套接字还是正在运行未加密的udp套接字。一旦知道了安全设置,就能够根据安全设置将未来的数据传输到服务器104。例如,如果确定服务器104正在运行dtlsudp套接字,则导出过程310能够建立dtlsudp套接字。类似地,如果确定服务器104正在运行“普通的”未加密的udp套接字,则导出过程310能够建立未加密的udp套接字。在一些示例中,服务器104的网络地址是已知的。然而,确定服务器104使用的安全设置可能仍然很重要。因此,能够使用服务器104的预先配置的网络地址向服务器发送探查消息,而不是发送广播消息。例如,服务器104的网络地址可能已经被存储在设备102的存储器中。一旦服务器104接收到探查消息,服务器104就以响应消息进行响应。如上所述,该响应消息能够指示服务器104使用的安全设置。例如,如果设备102和服务器104正在运行未加密的udp套接字,则服务器104将能够处理该消息并且作为响应而用确认消息进行回复。然而,如果设备102正在运行未加密的udp套接字,并且服务器104正在运行加密的dtls套接字,则服务器104将拒绝该消息并且因此将用dtls拒绝消息进行响应。因此,以与上述方式相同的方式,响应消息能够用于推断服务器104的安全设置。上述实施例应被理解为本发明的说明性示例。设想了本发明的另外的实施例。应当理解,关于任何一个实施例描述的任何特征可以被单独使用,也与所描述的其他特征结合使用,并且也可以与实施例中的任何其他实施例的一个或多个特征结合使用,或者与实施例中的任何其他实施例的任何组合结合使用。此外,在不脱离由权利要求限定的本发明的范围的情况下,也可以采用上面未描述的等同方案和修改方案。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1