CN111371533B - 数据传输方法、装置、存储介质及设备 - Google Patents

数据传输方法、装置、存储介质及设备 Download PDF

Info

Publication number
CN111371533B
CN111371533B CN202010157500.1A CN202010157500A CN111371533B CN 111371533 B CN111371533 B CN 111371533B CN 202010157500 A CN202010157500 A CN 202010157500A CN 111371533 B CN111371533 B CN 111371533B
Authority
CN
China
Prior art keywords
data
round
field
data transmission
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010157500.1A
Other languages
English (en)
Other versions
CN111371533A (zh
Inventor
李剑
张鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010157500.1A priority Critical patent/CN111371533B/zh
Publication of CN111371533A publication Critical patent/CN111371533A/zh
Priority to PCT/CN2020/129811 priority patent/WO2021179667A1/zh
Application granted granted Critical
Publication of CN111371533B publication Critical patent/CN111371533B/zh
Priority to US17/715,507 priority patent/US20220231792A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1621Group acknowledgement, i.e. the acknowledgement message defining a range of identifiers, e.g. of sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0023Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the signalling
    • H04L1/0028Formatting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0084Formats for payload data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0085Formatting with cells
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • H04L43/0829Packet loss

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)

Abstract

本申请公开了一种数据传输方法、装置、存储介质及设备,属于云技术领域。所述方法包括:接收发送端在当前一个数据传输回合内发送的数据;向所述发送端发送针对所述数据传输回合的应答数据包;其中,所述应答数据包中包括目标字段,所述目标字段用于指示接收端在所述数据传输回合内接收到的数据包和未接收到的数据包。本申请中应答数据包明确指示了在该数据传输回合内接收端接收到的数据包和未接收到的数据包,即接收端可以详细地表示数据包的到达情况,进而发送端依据接收到的应答数据包可以明确哪些数据包到达了,哪些数据包未能到达,能够很好地解决诸如丢包等突发状况。该种数据传输方式效果较佳。

Description

数据传输方法、装置、存储介质及设备
技术领域
本申请涉及云技术领域,特别涉及一种数据传输方法、装置、存储介质及设备。
背景技术
在基于TCP(Transmission Control Protocol,传输控制协议)的数据通信中,数据的可靠传输依赖的是确认应答机制。其中,ACK(Acknowledge character,确认字符)即是数据通信中接收端发给发送端的一种传输类控制字符,用来表示发送端发送的数据已确认接收无误。换言之,由于通信过程的不可靠性,在数据通信中不可避免地会出现诸如数据丢失等突发状况,TCP为了解决这些突发状况设计了确认应答机制,即发送端在向接收端发送数据后,接收端还需向发送端返回ACK。
图1是相关技术给出的一种TCP包头101的结构示意图。在图1中,确认号(ACKNumber)占用32位,用于向发送端返回下次接收端期望接收到的数据包的序号。例如,主机A当前发送的数据包的序号是401、数据长度是100,则接收端在接收到该数据包后会返回一个确认号为501的到达确认给主机A。
上述数据传输方式不能很好地解决诸如丢包等突发状况。比如,针对丢包情形,假设发送端连续发送了序号为1-5的五个数据包,但接收端仅接收到了序号为1和5的数据包,序号为2至4的数据包丢失。此时,接收端仅能对序号为1的数据包进行确认,即向发送端发送确认号为2的ACK。而发送端在接收到该ACK后,无法明确每个数据包的到达情况,仅能重传序号为2的数据包,该种数据传输方式的效果较差。
发明内容
本申请实施例提供了一种数据传输方法、装置、存储介质及设备,该种数据传输方式的效果较佳。所述技术方案如下:
一方面,提供了一种数据传输方法,所述方法包括:
接收发送端在当前一个数据传输回合内发送的数据;
向所述发送端发送针对所述数据传输回合的应答数据包;
其中,所述应答数据包中包括目标字段,所述目标字段用于指示接收端在所述数据传输回合内接收到的数据包和未接收到的数据包。
另一方面,提供了一种数据传输方法,所述方法包括:
向接收端发送当前一个数据传输回合内的数据;
接收所述接收端发送的针对所述数据传输回合的应答数据包;
其中,所述应答数据包中包括目标字段,所述目标字段用于指示所述接收端在所述数据传输回合内接收到的数据包和未接收到的数据包。
另一方面,提供了一种数据传输装置,所述装置包括:
第一接收模块,被配置为接收发送端在当前一个数据传输回合内发送的数据;
第一发送模块,被配置为向所述发送端发送针对所述数据传输回合的应答数据包;
其中,所述应答数据包中包括目标字段,所述目标字段用于指示接收端在所述数据传输回合内接收到的数据包和未接收到的数据包。
在一种可能的实现方式中,所述目标字段中包括开始序号字段、M个第一类数据位和N个第二类数据位;
其中,所述第一类数据位和所述第二类数据位交替出现,M和N为正整数;
所述开始序号字段用于记录所述接收端在所述数据传输回合内接收到的首数据包的第一序号;所述第一类数据位用于记录所述接收端在所述数据传输回合内连续接收到的数据包数量,所述第二类数据位用于记录所述接收端在所述数据传输回合内连续丢失的数据包数量。
在一种可能的实现方式中,所述数据传输回合用于向所述接收端批量发送至少两个数据包;
其中,所述数据传输回合是根据所述发送端提供数据给网卡的时刻确定的。
在一种可能的实现方式中,所述应答数据包中还包括:回合标记字段、回合发送数据字段、回合接收数据字段和结束序号字段;
所述回合标记字段用于记录所述数据传输回合的回合标识;
所述回合发送数据字段用于记录所述发送端在所述数据传输回合内发送的数据包数量;
所述回合接收数据字段用于记录所述接收端在所述数据传输回合内接收到的数据包数量;
所述结束序号字段用于记录第一数据包的第二序号,所述第一数据包为所述接收端在所述数据传输回合确认接收的尾数据包。
在一种可能的实现方式中,所述应答数据包中还包括:延迟时间字段和数据发送时间字段;
所述延迟时间字段用于记录所述接收端在所述数据传输回合内延迟发送所述应答数据包的第一时间;
所述数据发送时间字段用于记录所述发送端在所述数据传输回合内发送数据的第二时间。
在一种可能的实现方式中,所述应答数据包中还包括:类型字段、第一长度字段、第二长度字段、校验和字段、接收速度字段、丢包率字段;
所述类型字段用于记录数据包类型;
所述第一长度字段用于记录所述目标字段的长度;
所述第二长度字段用于记录所述应答数据包的大小;
所述接收速度字段用于记录所述接收端在所述数据传输回合内确定的数据接收速度;
所述丢包率字段用于记录所述接收端在所述数据传输回合内确定的丢包率。
在一种可能的实现方式中,所述装置还包括:
确定模块,被配置为确定第二数据包的第三序号;根据所述第二数据包的第三序号与目标序号阈值,确定所述第一数据包的第二序号;
其中,所述第二数据包为所述接收端在所述数据传输回合内最后接收到的数据包,所述第二序号小于所述第三序号。
在一种可能的实现方式中,所述第一发送模块,还被配置为响应于所述第二数据包的到达时间超过一个往返时延,向所述发送端发送针对所述第二数据包的应答数据包,所述往返时延是根据第一时间、第二时间和第三时间确定的;
其中,所述第一时间为所述接收端在所述数据传输回合内延迟发送所述应答数据包的时间,所述第二时间为所述发送端在所述数据传输回合内发送数据的时间,所述第三时间为所述发送端接收到针对所述数据传输回合的应答数据包的时间。
另一方面,提供了一种数据传输装置,所述装置包括:
第二发送模块,被配置为向接收端发送当前一个数据传输回合内的数据;
第二接收模块,被配置为接收所述接收端发送的针对所述数据传输回合的应答数据包;
其中,所述应答数据包中包括目标字段,所述目标字段用于指示接收端在所述数据传输回合内接收到的数据包和未接收到的数据包。
在一种可能的实现方式中,所述数据传输回合用于向所述接收端批量发送至少两个数据包;
其中,所述数据传输回合是根据所述发送端提供数据给网卡的时刻确定的。
另一方面,提供了一种电子设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述发送端执行的数据传输方法。
另一方面,提供了一种电子设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述接收端执行的数据传输方法。
另一方面,提供了一种存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以上述发送端执行的数据传输方法;或,上述接收端执行的数据传输方法。
本申请实施例提供的技术方案带来的有益效果是:
接收端在接收到发送端在当前一个数据传输回合内发送的数据后,会向发送端发送针对该数据传输回合的应答数据包,该应答数据包中包括目标字段,该目标字段用于指示在该数据传输回合内接收端接收到的数据包和未接收到的数据包。针对上述数据传输方式,由于应答数据包明确指示了在该数据传输回合内接收端接收到的数据包和未接收到的数据包,即接收端可以详细地表示数据包的到达情况,进而发送端可以依据接收到的应答数据包明确哪些数据包到达了,哪些数据包未能到达,可以很好地解决诸如丢包等突发状况。该种数据传输方式的效果较佳。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术提供的一种TCP包头的结构示意图;
图2是相关技术提供的一种SACK选项的格式示意图;
图3是本申请实施例提供的数据传输方案涉及的实施环境的示意图;
图4是本申请实施例提供的数据传输方案涉及的实施环境的示意图;
图5是本申请实施例提供的一种服务器的结构示意图;
图6是本申请实施例提供的一种终端的结构示意图;
图7是本申请实施例提供的一种数据传输方法的流程图;
图8是本申请实施例提供的一种数据按回合发送的示意图;
图9是本申请实施例提供的一种应答数据包的结构示意图;
图10是本申请实施例提供的一种ACK数据的结构示意图;
图11是本申请实施例提供的一种数据传输装置的结构示意图;
图12是本申请实施例提供的一种数据传输装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
另外,云技术还可以是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
本申请实施例涉及云技术中的基于网络传输协议的数据传输技术,下面结合如下实施例方式对本申请实施例提供的数据传输方案进行详细介绍。
先对本公开实施例涉及到的一些名词术语或缩略语进行介绍。
TCP:是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。
其中,面向连接意味着使用TCP的应用程序在传输数据前必须先建立连接。而可靠的传输服务是指发送端能够将数据准确可靠地传输给接收端。字节流服务(Byte StreamService)是指,为了方便传输将大块数据分割成数据包进行管理。即,TCP为了更容易传输大块数据才将数据分割,而且TCP能够确认数据最终是否送达至接收端。
包(Packet):是TCP通信传输中进行数据传输的数据单位,一般也称数据包。
即,大块数据会被分割成TCP认为最适合发送的数据包。比如,发送大块数据就必须拆分成多个数据包。比如,一个10MB的文件可能会被拆分成数以千计的多个数据包。
序号:用来标识从发送端向接收端发送的数据字节流,它指示这个数据包中的第一个字节。如果将字节流看作在两个应用程序间的单向流动,则TCP用序号对每个字节进行计数。即,序号就是整个字节流中每个字节的编号。
需要说明的是,一个数据包中包含多个字节流的数据,而每个数据包中的数据大小不一定相同。另外,发送端向接收端发送的第一个数据包的序号可以是一个随机数,本申请实施例对此不进行具体限定。
换一种表达方式,在发送数据的时候,TCP会为每个数据包编号(SequenceNumber,简称Seq),以便接收端按照顺序还原。万一发生丢包,也可以知道丢失的是哪个数据包。而每个数据包的编号在本文中便称为每个数据包的序号。
ACK(Acknowledge character,确认字符):在数据通信中,接收端发送给发送端的一种传输类控制字符,表示发送端发送的数据已确认接收无误。
在TCP中,接收端成功接收到数据后,会返回给发送端一个ACK数据包,表示已经确认接收到确认号前面的所有数据。换言之,当发送端发送的数据到达接收端时,接收端会返回一个已收到消息的通知,这个消息便叫做确认应答,意指已经接收到发送的数据。即,TCP通过ACK实现可靠的数据传输。
而发送端在将数据发出之后会等待接收端的确认应答。如果接收到确认应答,则表明数据已经成功到达接收端。如果在一定时间内发送端没有等到确认应答,则发送端有可能会认为数据已经丢失,并进行重发。
RTT(Round-Trip Time,往返时延):是计算机网络中的一个重要的性能指标,指代从发送端发送数据开始,到发送端接收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。
DelayACK(延迟确认):简单的说,Delay ACK即是延时发送ACK。通常情况下,接收端接收到一个数据包后会立即回复一个ACK给发送端,然后发送端再发送下一个数据包,接收端再进行回复,以此类推。由于发送一次确认一次的效率比较低,因此接收端尝试接收多次确认一次,这便是延迟确认。例如,接收端接收到了序号分别为201、301和401的三个数据包,则接收端可以只对序号为401的数据包进行确认,而对序号为401的数据包进行确认,也即意味着数据包401之前的所有数据包均已经确认。
另外,由于利用Delay Ack机制可以不对每一个数据包发出单独的ACK,因此在通信过程中接收端也可以在发送数据时顺便将ACK发送。
SACK(Selective Acknowledgment,选择ACK):是TCP选项,由RFC 2018、2883和3517定义,只有接收到失序的数据包时接收端才可能会发送SACK,即SACK仅是针对失序到达的数据包。
ACK包括了两个TCP选项,一个选项为SACK允许选项(SACK Permitted Option),该选项用于标识是否支持SACK,是在TCP连接建立时发送;另一个选项为图2所示的SACK选项201,包含了具体的SACK信息。想要使用SACK,作为发送端和接收端的两个设备必须同时支持SACK,建立连接的时候需要使用SACK允许选项;如果允许,则在后续的数据传输过程中,数据包中可以携带SACK选项。
其中,SACK选项的格式如图2所示,该选项长度可变,但由于整个TCP选项长度不超过40字节,所以实际最多不超过4组边界值。该选项告诉发送端哪些数据包是接收端已接收到的不连续的数据包,发送端根据该选项可以检查究竟是哪个数据包丢失,从而重新发送相应的数据包。即,该选项包含的是一系列非连续且没有确认的数据包的序号区间。其中,Left Edge of Block指代已接收到的不连续块的第一个数据包的序号,也称数据块的左边界值;Right Edge of Block指代已接收到的不连续块的最后一个数据包的序号,也称数据块的右边界值。
下面对本申请实施例提供的数据传输方案涉及的实施环境进行介绍。
示例性地,参见图3,该实施环境可以包括:发送端301和接收端302。
作为一个示例,如图4所示,本申请实施例提供的数据方案可以应用在服务器向终端提供诸如视频、图片、文件等数据的场景下。
比如,可以应用在直播视频P2P(Peer-to-Peer,点对点)传输场景中,为视频数据传输提供稳定可靠的传输通道。针对该种场景,发送端301可以为服务器,接收端302可以为终端。
在一种可能的实现方式中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content DeliveryNetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
其中,终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。另外,发送端301和接收端302之间的数据传输可以是双向的,即二者的身份可以互换。
基于以上的实施环境,本申请实施例提出了一种基于新的ACK机制的数据传输方案,确保了网络的可靠传输,在该方案中:
a、发送端按照数据传输回合周期性地发送数据,并对每个数据传输回合进行标记,可以对数据进行更细粒度地统计,提高了数据统计准确性。其中,数据传输回合是根据发送端提供数据给网卡的时刻确定的。
b、设计了新的ACK结构可以表示更多数据,即提供了更丰富的ACK数据。
其中,接收端发送的应答数据包中通过接收数据数量-未接收数据数量-接收数据数量-未接收数据数量…这种结构来指示哪个数据包到达了、哪个数据包未到达,相比于SACK最多只能表示4组区间的方式,本申请实施例可以详细地表示更多数据的到达情况。另外,在数据聚集情况下这种表示方式也可显著提高存储效率。
c、ACK与数据传输回合相对应,即通过回合来发送ACK,可以大幅减少ACK的发送频率,避免对网络带宽的占用,减少了数据浪费。
d、对需要返回ACK的尾数据包进行优化处理,为了应对数据包乱序到达,加入了ACKNDUPACK(尾包稍后反馈)。同时,为了解决尾数据包不能反馈ACK的问题,加入了时间超时机制,即如果尾数据包到达时间超过一个RTT,接收端会反馈ACK给发送端。
下面通过如下实施例对本申请实施例提供的数据传输方案进行详细介绍。
图5是本申请实施例提供的一种服务器的结构示意图,该服务器可以为图3或图4中示出的发送端301或接收端302。
其中,该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central Processing Units,CPU)501、一个或一个以上的存储器502、以及通信单元503。所述存储器502中存储有至少一条指令,所述至少一条指令由所述处理器501加载并执行以实现本申请实施例提供的数据存储方法。通信单元503用于执行数据收发。
需要说明的是,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
图6示出了本申请实施例提供的一种终端的结构示意图。该终端可以为图3或图4中示出的发送端301或接收端302。
通常,终端600包括有:处理器601和存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的数据传输方法。
在一些实施例中,终端600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、触摸显示屏605、摄像头606、音频电路607、定位组件608和电源609中的至少一种。
外围设备接口603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏605用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置终端600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在终端600的不同表面或呈折叠设计;在再一些实施例中,显示屏605可以是柔性显示屏,设置在终端600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。
定位组件608用于定位终端600的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件608可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源609用于为终端600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。
加速度传感器611可以检测以终端600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制触摸显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器612可以检测终端600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对终端600的3D动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器613可以设置在终端600的侧边框和/或触摸显示屏605的下层。当压力传感器613设置在终端600的侧边框时,可以检测用户对终端600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在触摸显示屏605的下层时,由处理器601根据用户对触摸显示屏605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置终端600的正面、背面或侧面。当终端600上设置有物理按键或厂商Logo时,指纹传感器614可以与物理按键或厂商Logo集成在一起。
光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制触摸显示屏605的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏605的显示亮度;当环境光强度较低时,调低触摸显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。
接近传感器616,也称距离传感器,通常设置在终端600的前面板。接近传感器616用于采集用户与终端600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与终端600的正面之间的距离逐渐变小时,由处理器601控制触摸显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与终端600的正面之间的距离逐渐变大时,由处理器601控制触摸显示屏605从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图6中示出的结构并不构成对终端600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图7是本申请实施例提供的一种数据传输方法的流程图。
其中,该方法的交互主体为图3或图4中示出的发送端301和接收端302。参见图7,本申请实施例提供的方法流程包括:
701、发送端按照数据传输回合周期性地向接收端发送数据,其中,一个数据传输回合用于向接收端批量发送至少两个数据包。
图8示出了发送端301和接收端302之间周期性地按照数据传输回合进行数据传输的示意图。其中,图8中示出了三个数据传输回合,在每个数据传输回合中,发送端301会向接收端发送多个数据包。即,上述至少两个数据包的含义是:在一个数据传输回合中,发送端301会向接收端302发送两个数据包或两个以上数据包。另外,批量的含义即是成批的数量。
针对每个数据传输回合,接收端302会标记一个回合编号,在本文中回合编号也被称之为回合标识。示例性地,图8中示出的三个数据传输回合的回合标识可分别为R0、R1和R2,本申请实施例对此不进行具体限定。
在本申请实施例中,当一个数据传输回合的数据发送完成后,接收端302会向发送端301反馈针对该数据传输回合的应答数据包。在图8中,在数据传输回合R0的数据发送完成后,接收端302会向发送端301反馈针对该数据传输回合的应答数据包Ack:0;在数据传输回合R1的数据发送完成后,接收端302会向发送端301反馈针对该数据传输回合的应答数据包Ack:1;在数据传输回合R2的数据发送完成后,接收端302会向发送端301反馈针对该数据传输回合的应答数据包Ack:2。
在一种可能的实现方式中,本申请实施例提出的数据传输回合是根据发送端提供数据给网卡的时刻确定的。其中,每个数据传输回合在发送数据时可以间隔几百毫秒,本申请实施例对此不进行具体限定。
702、接收端接收发送端在当前一个数据传输回合内发送的数据。
如前文所述,由于一个数据传输回合内发送端会向接收端批量发送至少两个数据包,因此在不产生诸如丢包等突发状况时,接收端正常情况下在当前一个数据传输回合内也会接收到至少两个数据包。
703、接收端向发送端发送针对当前一个数据传输回合的应答数据包,其中,应答数据包中包括目标字段,该目标字段用于指示在当前一个数据传输回合内接收端接收到的数据包和未接收到的数据包。
在本申请实施例中,接收端返回给发送端的应答数据包会通过目标字段来详细指示当前一个数据传输回合内的数据到达情况,具体到该数据传输回合内哪一个数据包接收到了,哪一个数据包未接收到。
相较于SACK最多只能表示4组边界值,如果有超过4个数据片段没有被确认则不能表示的局限性,本申请实施例提出了一种新的ACK结构,可以表示更多的数据,即接收端返回的应用数据包不但指示了在相应数据传输回合内接收到数据包,而且指示了在该数据传输回合内未接收到的数据包。基于此,发送端在接收到应答数据包后可以迅速明确该数据传输回合内的数据到达情况。
结合图9所示的应答数据包901的结构图,下面对接收端返回的应答数据包901中携带的反馈(feedback)信息进行介绍。其中,反馈信息中包括类型字段(type)、第一长度字段(size)、校验和字段(checksum)、延迟时间字段(delayed)、接收速度(recvRate)、丢包率字段(pmiss)、数据发送时间字段(usend)、回合标记字段(round)、回合发送数据字段(sendCount)、回合接收数据字段(recvCount)、开始序号字段(ack_start)、结束序号字段(end_idx)和第二长度字段(ack_size)和ack数据字段(acks)。上述各个字段的解释如下:
type:16位无符号整型,用来记录数据包类型;即通过该字段来指明这个数据包是一个应答确认包,用于应答确认。
size:16位无符号整型,用来记录应答数据包的大小。需要说明的是,为了便于区分,这个长度字段在本文中也被称之为第二长度字段。
checksum:16位无符号整型,可以为16位校验和。
作为一个示例,计算校验和的步骤如下:
(1)、在发送一方,首先将校验和字段本身清零,将被校验的相邻字节成对配成16位的整数,之后将所有的配对相加,同时将进位加到校验和的低字节上,例如将得到的校验和定义为a,最后再将校验和取反记为-a,并将-a存放到校验和字段中。(2)、如果在数据传输过程中没有比特位改变,则在接收一方计算的校验和应该等于a+(-a),即二进制反码-0(全1),而它的二进制反码为0(全0)。所以在接收一方,一个没有被损坏数据包计算出来的校验和总是0。
delayed:64位双精度浮点型,指代在接收端延迟发送的时间,表示在接收端停留的时间。示例性地,延迟时间字段可以记录接收端在每个数据传输回合内延迟发送应答数据包的时间;需要说明的是,这个时间在本文中也被称之为第一时间。
recvRate:64位双精度浮点型,用于记录接收端计算的接收速度。
pmiss:64位双精度浮点型,用于记录接收端计算的丢包率。
示例性地,接收速度和丢包率可以是针对每个数据传输回合的,本申请实施例对此不进行具体限定。
usend:64位,用于记录发送端发送数据的时间,示例性地,可以通过Moment()来获取时间。
其中,数据发送时间返回给发送端用来计算RTT。示例性地,数据发送时间字段可以记录发送端在每个数据传输回合内发送数据的时间。需要说明的是,这个时间在本文中也被称之为第二时间。
round:32位无符号整型,用来标记每一个数据传输回合。
sendCount:32位无符号整型,用来记录每个数据传输回合内发送端发送的数据量。
recvCount:32位无符号整型,用于记录接收端在每个数据传输回合内接收到的数据数量。
示例性地,上述数据量指代的是发送的数据包的数量,或接收到的数据包的数量,本申请实施例对此不进行具体限定。
ack_start:32位无符号整型。
end_idx:32位无符号整型。
ack_size:16位无符号整型,用于记录ack数组的长度。其中,这个长度字段在本文中也被称之为第一长度字段。
示例性地,在计算接收速度时,以每个数据传输回合内首个数据包接收开始至最后一个数据包到达为止来计算,即通过每个数据传输回合数据到达的开始时间+全量回合数据接收完的结束时间来计算接收速度,提高了接收速度的计算准确性。另外,统计每个数据传输回合内的数据发送量和数据接收量,可以实现更精细地数据传输情况统计。
acks:字符指针类型,指代ack数组中具体的ack数据。
在一种可能的实现方式中,目标字段1001的结构如图10所示。其中,该目标字段中包括开始序号字段ack_start、第一长度字段ack_size、M个第一类数据位(get)和N个第二类数据位(lost)。其中,M和N为正整数。
需要说明的是,目标字段中之所以没有出现结束序号字段end_idx,是因为:通过开始序号字段ack_start、第一长度字段ack_size以及其后的M个第一类数据位和N个第二类数据位,即可确定出结束序号,图9中结束序号字段中给出的结束序号可以用来校验。
其中,在一个数据传输回合的应答数据包中,结束序号字段用于记录第一数据包的第二序号,其中,第一数据包为接收端在该数据传输回合确认接收的尾数据包。
如图9和图10所示,第一类数据位(get)和第二类数据位(lost)交替出现。即出现一个第一类数据位后,紧接着便会出现一个第二类数据位,接下来,再出现一个第一类数据位,以此类推。这些数据位便构成了上述具体的ack数据。
对于任意一个数据传输回合,开始序号字段用于记录接收端在该数据传输回合内接收到的首数据包的第一序号;第一类数据位用于记录接收端在该数据传输回合内连续接收到的数据包数量,第二类数据位用于记录接收端在该数据传输回合内连续丢失的数据包数量。
举例来说,假设在一个数据传输回合内发送端向接收端发送了20个数据包,序号分别为1-20。如果序号为1-10的数据包接收端收到了,但序号为11的数据包丢失,序号为12-20的数据包接收端也收到了,那么采用上述图9或图10的表示方式,这20个数据包的到达情况便可以表示为10-1-9的形式。其中,10代表序号为1-10的数据包收到了,即接收端连续接收到了序号为1-10的数据包,1代表序号为11的数据包未接收到,即序号为11的数据包发生丢失;9代表序号为12-20的数据包收到了,即接收端连续接收到了序号为12-20的数据包。
这种ACK表示方式,相较于SACK可以表示更多的数据,如上述举例所示,可以表示20个数据包的到达情况,详细给出了这些数据包中哪些数据包到达了,哪些数据包没有到达。另外,该种ACK表示方式在数据聚集情况下能够显著提高存储效率。继续参考上述举例,通过2个第一类数据位和1个第二类数据位即可表示20个数据包的详细到达情况。
本申请实施例提供的数据传输方法至少具有以下有益效果:
在本申请实施例中,发送端按照数据传输回合周期性地发送数据,相应地,接收端返回的ACK也与数据传输回合相对应,即本申请实施例通过回合来发送ACK,相较于接收端每接收到一个数据包便立刻返回给发送方一个ACK的确认应答方式,可以大幅减少ACK的发送频率,避免了对网络带宽的占用,减少了数据浪费。
另外,本申请实施例提供的数据传输方案按回合进行数据传输,使得数据统计更加准确。比如,标记每个数据传输回合、统计每个数据传输回合发送的数据量以及每个数据传输回合接收到的数据量,以此来表示更精确的数据信息,进而可以为传输控制提供更多信息。
另外,在本申请实施例中,ACK数据使用如图9和图10所示的数据结构,扩充了可以使用的数据位,即设计了优化的ACK结构来表示更多的数据。在接收端发送的应答数据包中通过接收数据数量-未接收数据数量-接收数据数量-未接收数据数量…这种结构来指示哪个数据包到达了、哪个数据包未到达,相比于SACK最多只能表示4组区间的方式,本申请实施例可以详细地表示更多数据的到达情况。另外,在数据聚集情况下这种表示方式也可显著提高存储效率。
即,本申请实施例不但解决了传统TCP方案中ACK数据使用TCP包头中的32位仅能表示一个累积确认的数据,而无法对诸如丢包等突发状况进行很好表示的问题。同时也解决了SACK方式最多只能表示4组边界值,无法完全表示详细的数据到达情况的问题。
需要说明的是,虽然Delay ACK方案也可以减少ACK发送频率,但是该种方案需要配置一个延迟的超时时间,而这个超时时间设置的太长的话,会对传输方案的信息更新产生不良影响。
综上所述,本申请实施例提供的新的ACK机制,为上层传输协议提供了可靠的传输和传输控制数据,可以应用在数据传输协议XNTP(X Next generation TransmissionProtocol,新一代传输协议)中,也可以应用在直播视频P2P传输场景中,基于该种ACK机制的数据传输方案为视频数据的传输提供了稳定可靠的传输通道,效果较佳。
在另一个实施例中,针对乱序数据,本申请实施例还引入了延迟校验和超时检查,提高了乱序数据的传输效率,为数据的可靠传输和传输控制提供了基础保障,请参见如下描述:
在默认情况下,TCP采取的是累积确认机制,如果发生了数据乱序到达,则接收端会重复确认最后一个按序到达的数据包,为此发送端的处理只能是重复发送按序到达接收端的数据包之后的那个数据包,因而它无法准确知道哪些数据包到达了,哪些没有到达。即,传统的ACK机制对乱序支持不足,当数据乱序到达时,仅会返回给发送端重复的ACK,而重复ACK超过一定次数后,发送端便会重发相关数据,然而如果数据只是乱序,后面会到达,相关数据的重复发送便浪费了网络带宽。
在本申请实施例中,针对数据乱序到达,引入了ACKNDUPACK(尾包稍后反馈)机制,也称延迟校验。即,本申请实施例提供的数据传输方法还包括:
针对当前一个数据传输回合,确定第二数据包的第三序号,并根据第二数据包的第三序号与目标序号阈值确定第一数据包的第二序号。
其中,第二数据包为接收端在该数据传输回合内最后接收到的数据包。第一数据包的第二序号小于第二数据包的第三序号。另外,第一数据包为接收端在该数据传输回合内确认接收的尾数据包。
其中,目标序号阈值的取值可以为3,即真正的尾数据包序号与本次接收端确认的数据包的序号之间差值为3,本申请实施例对此不进行具体限定。
举例来说,假设接收端最新接收到的数据包的序号是100,那么接收端在反馈ACK时可能仅会统计到序号100减去ACKNDUPACK后得到的序号指示的数据包,以ACKNDUPACK的取值为3为例,即本次接收端仅确认接收到序号为97的数据包。
另外,本申请实施例还引入了时间超时机制,也称超时检查,可以解决尾包不能反馈ACK的问题,即如果尾数据包到达时间超过一个RTT,接收端会反馈针对尾数据包的ACK给发送端。也即,本申请实施例提供的数据传输方法还包括:针对当前一个数据传输回合,响应于第二数据包(真正的尾数据包)的到达时间超过一个往返时延,向发送端发送针对第二数据包的应答数据包。示例性地,针对第二数据包的应答数据包也可以为图9所示的结构。
作为一个示例,上述往返时延是根据第一时间、第二时间和第三时间确定的,其中,第一时间为接收端在该数据传输回合延迟发送应答数据包的时间,第二时间为发送端在该数据传输回合内发送数据的时间,第三时间为发送端接收到针对该数据传输回合的应答数据包的时间。其中,第一时间即为前述的delayed,第二时间即对应前述的usend,第三时间以符号uget表示,指代发送端接收到应答数据包的时间,即RTT=uget-usend–delayed。
需要说明的是,虽然上述各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,本申请实施例对此不进行具体限定。
图11是本申请实施例提供的一种数据传输装置的结构图,应用于发送端,该装置包括:
第一接收模块1101,被配置为接收发送端在当前一个数据传输回合内发送的数据;
第一发送模块1102,被配置为向所述发送端发送针对所述数据传输回合的应答数据包;
其中,所述应答数据包中包括目标字段,所述目标字段用于指示接收端在所述数据传输回合内接收到的数据包和未接收到的数据包。
本申请实施例提供的数据传输装置,在接收到发送端在当前一个数据传输回合内发送的数据后,会向发送端发送针对该数据传输回合的应答数据包,该应答数据包中包括目标字段,该目标字段用于指示在该数据传输回合内接收端接收到的数据包和未接收到的数据包。针对上述数据传输方式,由于应答数据包明确指示了在该数据传输回合内接收端接收到的数据包和未接收到的数据包,即接收端可以详细地表示数据包的到达情况,进而发送端可以依据接收到的应答数据包明确哪些数据包到达了,哪些数据包未能到达,可以很好地解决诸如丢包等突发状况。该种数据传输方式的效果较佳。
在一种可能的实现方式中,所述目标字段中包括开始序号字段、M个第一类数据位和N个第二类数据位;
其中,所述第一类数据位和所述第二类数据位交替出现,M和N为正整数;
所述开始序号字段用于记录所述接收端在所述数据传输回合内接收到的首数据包的第一序号;所述第一类数据位用于记录所述接收端在所述数据传输回合内连续接收到的数据包数量,所述第二类数据位用于记录所述接收端在所述数据传输回合内连续丢失的数据包数量。
在一种可能的实现方式中,所述数据传输回合用于向所述接收端批量发送至少两个数据包;
其中,所述数据传输回合是根据所述发送端提供数据给网卡的时刻确定的。
在一种可能的实现方式中,所述应答数据包中还包括:回合标记字段、回合发送数据字段、回合接收数据字段和结束序号字段;
所述回合标记字段用于记录所述数据传输回合的回合标识;
所述回合发送数据字段用于记录所述发送端在所述数据传输回合内发送的数据包数量;
所述回合接收数据字段用于记录所述接收端在所述数据传输回合内接收到的数据包数量;
所述结束序号字段用于记录第一数据包的第二序号,所述第一数据包为所述接收端在所述数据传输回合确认接收的尾数据包。
在一种可能的实现方式中,所述应答数据包中还包括:延迟时间字段和数据发送时间字段;
所述延迟时间字段用于记录所述接收端在所述数据传输回合内延迟发送所述应答数据包的第一时间;
所述数据发送时间字段用于记录所述发送端在所述数据传输回合内发送数据的第二时间。
在一种可能的实现方式中,所述应答数据包中还包括:类型字段、第一长度字段、第二长度字段、校验和字段、接收速度字段、丢包率字段;
所述类型字段用于记录数据包类型;
所述第一长度字段用于记录所述目标字段的长度;
所述第二长度字段用于记录所述应答数据包的大小;
所述接收速度字段用于记录所述接收端在所述数据传输回合内确定的数据接收速度;
所述丢包率字段用于记录所述接收端在所述数据传输回合内确定的丢包率。
在一种可能的实现方式中,该装置还包括:
确定模块,被配置为确定第二数据包的第三序号;根据所述第二数据包的第三序号与目标序号阈值,确定所述第一数据包的第二序号;
其中,所述第二数据包为所述接收端在所述数据传输回合内最后接收到的数据包,所述第二序号小于所述第三序号。
在一种可能的实现方式中,第一发送模块,还被配置为响应于所述第二数据包的到达时间超过一个往返时延,向所述发送端发送针对所述第二数据包的应答数据包,所述往返时延是根据第一时间、第二时间和第三时间确定的;
其中,所述第一时间为所述接收端在所述数据传输回合内延迟发送所述应答数据包的时间,所述第二时间为所述发送端在所述数据传输回合内发送数据的时间,所述第三时间为所述发送端接收到针对所述数据传输回合的应答数据包的时间。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
图12是本申请实施例提供的一种数据传输装置的结构图,应用于接收端,该装置包括:
第二发送模块1201,被配置为向接收端发送当前一个数据传输回合内的数据;
第二接收模块1202,被配置为接收所述接收端发送的针对所述数据传输回合的应答数据包;
其中,所述应答数据包中包括目标字段,所述目标字段用于指示所述接收端在所述数据传输回合内接收到的数据包和未接收到的数据包。。
本申请实施例提供的数据传输装置,在向接收端发送当前一个数据传输回合内的数据后,接收端会向发送端发送针对该数据传输回合的应答数据包,该应答数据包中包括目标字段,该目标字段用于指示在该数据传输回合内接收端接收到的数据包和未接收到的数据包。针对上述数据传输方式,由于应答数据包明确指示了在该数据传输回合内接收端接收到的数据包和未接收到的数据包,即接收端可以详细地表示数据包的到达情况,进而发送端可以依据接收到的应答数据包明确哪些数据包到达了,哪些数据包未能到达,可以很好地解决诸如丢包等突发状况。该种数据传输方式的效果较佳。
在一种可能的实现方式中,所述数据传输回合用于向所述接收端批量发送至少两个数据包;
其中,所述数据传输回合是根据所述发送端提供数据给网卡的时刻确定的。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的数据传输方法在进行数据传输时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据传输装置与数据传输方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成上述实施例中发送端执行的数据传输方法;或接收端执行的数据传输方法。例如,所述计算机可读存储介质可以是只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、光盘只读存储器(CompactDisc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (15)

1.一种数据传输方法,其特征在于,所述方法包括:
接收发送端在当前一个数据传输回合内发送的数据,所述数据传输回合用于向所述接收端批量发送至少两个数据包;其中,所述数据传输回合是根据所述发送端提供数据给网卡的时刻确定的;
统计所述数据传输回合接收到的数据量,基于所述接收到的数据量,确定所述数据传输回合对应的应答数据包中的回合接收数据字段;
向所述发送端发送针对所述数据传输回合的应答数据包;
确定第二数据包的第三序号;
根据所述第二数据包的第三序号与目标序号阈值,确定第一数据包的第二序号;
其中,所述第二数据包为所述接收端在所述数据传输回合内最后接收到的数据包,所述第二序号小于所述第三序号,所述第一数据包为所述接收端在所述数据传输回合确认接收的尾数据包;所述应答数据包中包括目标字段、回合发送数据字段、回合接收数据字段、回合标记字段、结束序号字段和校验和字段,所述目标字段用于指示接收端在所述数据传输回合内接收到的数据包和未接收到的数据包,所述回合发送数据字段用于记录所述数据传输回合内发送端发送的数据量,所述回合接收数据字段用于记录接收端在所述数据传输回合内接收到的数据数量,所述回合发送数据字段为所述发送端基于发送的数据量统计得到的,所述回合标记字段用于记录所述数据传输回合的回合标识,所述结束序号字段用于记录第一数据包的第二序号,所述校验和字段用于校验数据包是否被损坏。
2.根据权利要求1所述的方法,其特征在于,所述目标字段中包括开始序号字段、M个第一类数据位和N个第二类数据位;
其中,所述第一类数据位和所述第二类数据位交替出现,M和N为正整数;
所述开始序号字段用于记录所述接收端在所述数据传输回合内接收到的首数据包的第一序号;所述第一类数据位用于记录所述接收端在所述数据传输回合内连续接收到的数据包数量,所述第二类数据位用于记录所述接收端在所述数据传输回合内连续丢失的数据包数量。
3.根据权利要求1至2中任一项权利要求所述的方法,其特征在于,所述应答数据包中还包括:延迟时间字段和数据发送时间字段;
所述延迟时间字段用于记录所述接收端在所述数据传输回合内延迟发送所述应答数据包的第一时间;
所述数据发送时间字段用于记录所述发送端在所述数据传输回合内发送数据的第二时间。
4.根据权利要求1至2中任一项权利要求所述的方法,其特征在于,所述应答数据包中还包括:类型字段、第一长度字段、第二长度字段、接收速度字段、丢包率字段;
所述类型字段用于记录数据包类型;
所述第一长度字段用于记录所述目标字段的长度;
所述第二长度字段用于记录所述应答数据包的大小;
所述接收速度字段用于记录所述接收端在所述数据传输回合内确定的数据接收速度;
所述丢包率字段用于记录所述接收端在所述数据传输回合内确定的丢包率。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于所述第二数据包的到达时间超过一个往返时延,向所述发送端发送针对所述第二数据包的应答数据包,所述往返时延是根据第一时间、第二时间和第三时间确定的;
其中,所述第一时间为所述接收端在所述数据传输回合内延迟发送所述应答数据包的时间,所述第二时间为所述发送端在所述数据传输回合内发送数据的时间,所述第三时间为所述发送端接收到针对所述数据传输回合的应答数据包的时间。
6.一种数据传输方法,其特征在于,所述方法包括:
向接收端发送当前一个数据传输回合内的数据,所述数据传输回合用于向所述接收端批量发送至少两个数据包;其中,所述数据传输回合是根据所述发送端提供数据给网卡的时刻确定的;
统计所述数据传输回合发送的数据量,基于所述发送的数据量,确定所述数据传输回合对应的回合发送数据字段;
接收所述接收端发送的针对所述数据传输回合的应答数据包,所述接收端用于确定第二数据包的第三序号;根据所述第二数据包的第三序号与目标序号阈值,确定第一数据包的第二序号;其中,所述第二数据包为所述接收端在所述数据传输回合内最后接收到的数据包,所述第二序号小于所述第三序号,所述第一数据包为所述接收端在所述数据传输回合确认接收的尾数据包;
其中,所述应答数据包中包括目标字段、回合发送数据字段、回合接收数据字段、回合标记字段、结束序号字段和校验和字段,所述目标字段用于指示所述接收端在所述数据传输回合内接收到的数据包和未接收到的数据包,所述回合发送数据字段用于记录所述数据传输回合内发送端发送的数据量,所述回合接收数据字段用于记录接收端在所述数据传输回合内接收到的数据数量,所述回合接收字段为所述接收端基于接收的数据量统计得到的,所述回合标记字段用于记录所述数据传输回合的回合标识,所述结束序号字段用于记录第一数据包的第二序号,所述校验和字段用于校验数据包是否被损坏。
7.一种数据传输装置,其特征在于,所述装置包括:
第一接收模块,被配置为接收发送端在当前一个数据传输回合内发送的数据,所述数据传输回合用于向所述接收端批量发送至少两个数据包;其中,所述数据传输回合是根据所述发送端提供数据给网卡的时刻确定的;统计所述数据传输回合接收到的数据量,基于所述接收到的数据量,确定所述数据传输回合对应的应答数据包中的回合接收数据字段;
第一发送模块,被配置为向所述发送端发送针对所述数据传输回合的应答数据包;
确定模块,被配置为确定第二数据包的第三序号;根据所述第二数据包的第三序号与目标序号阈值,确定第一数据包的第二序号;
其中,所述第二数据包为所述接收端在所述数据传输回合内最后接收到的数据包,所述第二序号小于所述第三序号,所述第一数据包为所述接收端在所述数据传输回合确认接收的尾数据包;所述应答数据包中包括目标字段、回合发送数据字段、回合接收数据字段、回合标记字段、结束序号字段和校验和字段,所述目标字段用于指示接收端在所述数据传输回合内接收到的数据包和未接收到的数据包,所述回合发送数据字段用于记录所述数据传输回合内发送端发送的数据量,所述回合接收数据字段用于记录接收端在所述数据传输回合内接收到的数据数量,所述回合发送数据字段为所述发送端基于发送的数据量统计得到的,所述回合标记字段用于记录所述数据传输回合的回合标识,所述结束序号字段用于记录第一数据包的第二序号,所述校验和字段用于校验数据包是否被损坏。
8.根据权利要求7所述的装置,其特征在于,所述目标字段中包括开始序号字段、M个第一类数据位和N个第二类数据位;
其中,所述第一类数据位和所述第二类数据位交替出现,M和N为正整数;
所述开始序号字段用于记录所述接收端在所述数据传输回合内接收到的首数据包的第一序号;所述第一类数据位用于记录所述接收端在所述数据传输回合内连续接收到的数据包数量,所述第二类数据位用于记录所述接收端在所述数据传输回合内连续丢失的数据包数量。
9.根据权利要求7-8任一项所述的装置,其特征在于,所述应答数据包中还包括:延迟时间字段和数据发送时间字段;
所述延迟时间字段用于记录所述接收端在所述数据传输回合内延迟发送所述应答数据包的第一时间;
所述数据发送时间字段用于记录所述发送端在所述数据传输回合内发送数据的第二时间。
10.根据权利要求7-8任一项所述的装置,其特征在于,所述应答数据包中还包括:类型字段、第一长度字段、第二长度字段、校验和字段、接收速度字段、丢包率字段;
所述类型字段用于记录数据包类型;
所述第一长度字段用于记录所述目标字段的长度;
所述第二长度字段用于记录所述应答数据包的大小;
所述接收速度字段用于记录所述接收端在所述数据传输回合内确定的数据接收速度;
所述丢包率字段用于记录所述接收端在所述数据传输回合内确定的丢包率。
11.根据权利要求7所述的装置,其特征在于,所述第一发送模块,还被配置为响应于所述第二数据包的到达时间超过一个往返时延,向所述发送端发送针对所述第二数据包的应答数据包,所述往返时延是根据第一时间、第二时间和第三时间确定的;
其中,所述第一时间为所述接收端在所述数据传输回合内延迟发送所述应答数据包的时间,所述第二时间为所述发送端在所述数据传输回合内发送数据的时间,所述第三时间为所述发送端接收到针对所述数据传输回合的应答数据包的时间。
12.一种数据传输装置,其特征在于,所述装置包括:
第二发送模块,被配置为向接收端发送当前一个数据传输回合内的数据,所述数据传输回合用于向所述接收端批量发送至少两个数据包;其中,所述数据传输回合是根据所述发送端提供数据给网卡的时刻确定的;统计所述数据传输回合发送的数据量,基于所述发送的数据量,确定所述数据传输回合对应的回合发送数据字段;
第二接收模块,被配置为接收所述接收端发送的针对所述数据传输回合的应答数据包,所述接收端用于确定第二数据包的第三序号;根据所述第二数据包的第三序号与目标序号阈值,确定第一数据包的第二序号;其中,所述第二数据包为所述接收端在所述数据传输回合内最后接收到的数据包,所述第二序号小于所述第三序号,所述第一数据包为所述接收端在所述数据传输回合确认接收的尾数据包;
其中,所述应答数据包中包括目标字段、回合发送数据字段、回合接收数据字段、回合标记字段、结束序号字段和校验和字段,所述目标字段用于指示所述接收端在所述数据传输回合内接收到的数据包和未接收到的数据包,所述回合发送数据字段用于记录所述数据传输回合内发送端发送的数据量,所述回合接收数据字段用于记录接收端在所述数据传输回合内接收到的数据数量,所述回合接收数据字段用于记录接收端在所述数据传输回合内接收到的数据数量,所述回合标记字段用于记录所述数据传输回合的回合标识,所述结束序号字段用于记录第一数据包的第二序号,所述校验和字段用于校验数据包是否被损坏。
13.一种电子设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现权利要求1至5中任一项权利要求所述的数据传输方法。
14.一种电子设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现权利要求6所述的数据传输方法。
15.一种存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现权利要求1至5中任一项权利要求所述的数据传输方法;或,权利要求6所述的数据传输方法。
CN202010157500.1A 2020-03-09 2020-03-09 数据传输方法、装置、存储介质及设备 Active CN111371533B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010157500.1A CN111371533B (zh) 2020-03-09 2020-03-09 数据传输方法、装置、存储介质及设备
PCT/CN2020/129811 WO2021179667A1 (zh) 2020-03-09 2020-11-18 数据传输方法、装置、存储介质及设备
US17/715,507 US20220231792A1 (en) 2020-03-09 2022-04-07 Data transmission method and apparatus, storage medium, and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010157500.1A CN111371533B (zh) 2020-03-09 2020-03-09 数据传输方法、装置、存储介质及设备

Publications (2)

Publication Number Publication Date
CN111371533A CN111371533A (zh) 2020-07-03
CN111371533B true CN111371533B (zh) 2022-02-22

Family

ID=71210435

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010157500.1A Active CN111371533B (zh) 2020-03-09 2020-03-09 数据传输方法、装置、存储介质及设备

Country Status (3)

Country Link
US (1) US20220231792A1 (zh)
CN (1) CN111371533B (zh)
WO (1) WO2021179667A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022110229A1 (zh) * 2020-11-30 2022-06-02 北京小米移动软件有限公司 数据丢失检测方法、装置、通信设备及存储介质
CN113645600A (zh) * 2021-08-13 2021-11-12 Oppo广东移动通信有限公司 数据传输方法、装置、终端及存储介质
CN113590431B (zh) * 2021-09-27 2022-01-21 联想长风科技(北京)有限公司 一种cpu与fpga的数据传输动态监测方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1946078A (zh) * 2006-10-27 2007-04-11 清华大学 一种适用于卫星网络的高效交互传输方法
CN103701675A (zh) * 2013-12-18 2014-04-02 中联重科股份有限公司 信息传输方法、系统、读取设备、源设备和工程机械
CN103703828A (zh) * 2012-12-28 2014-04-02 华为技术有限公司 数据传输方法和设备
CN104066201A (zh) * 2013-03-22 2014-09-24 联想(北京)有限公司 数据传输方法、装置及电子设备
CN106126465A (zh) * 2016-06-21 2016-11-16 广东欧珀移动通信有限公司 一种数据传输方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7457242B2 (en) * 2004-02-12 2008-11-25 Avaya, Inc. System for transmitting high quality speech signals on a voice over internet protocol network
KR100678943B1 (ko) * 2004-08-24 2007-02-07 삼성전자주식회사 블록 ack 프레임 전송방법 및 장치
JP6094357B2 (ja) * 2013-04-22 2017-03-15 富士通株式会社 通信方法、通信システム、及び通信装置
CN104243097A (zh) * 2014-09-19 2014-12-24 东软集团股份有限公司 基于卫星网络的数据传输方法及系统
CN107276727A (zh) * 2017-05-04 2017-10-20 电信科学技术研究院 一种进行反馈的方法和设备
CN109600316B (zh) * 2017-09-30 2022-08-26 华为技术有限公司 控制流量的方法及装置
CN109194450B (zh) * 2018-08-15 2021-05-04 西安电子科技大学 天地一体化网络通信的snack-p应答系统及方法、无线通信系统
CN109412753A (zh) * 2018-10-25 2019-03-01 网易(杭州)网络有限公司 数据传输方法及装置、电子设备以及存储介质
CN110601921B (zh) * 2019-09-16 2022-04-08 腾讯科技(深圳)有限公司 数据包传输参数的检测方法及装置、数据包传输系统
CN110620638B (zh) * 2019-09-27 2022-03-22 北京奇艺世纪科技有限公司 数据传输控制方法及相关设备、存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1946078A (zh) * 2006-10-27 2007-04-11 清华大学 一种适用于卫星网络的高效交互传输方法
CN103703828A (zh) * 2012-12-28 2014-04-02 华为技术有限公司 数据传输方法和设备
CN104066201A (zh) * 2013-03-22 2014-09-24 联想(北京)有限公司 数据传输方法、装置及电子设备
CN103701675A (zh) * 2013-12-18 2014-04-02 中联重科股份有限公司 信息传输方法、系统、读取设备、源设备和工程机械
CN106126465A (zh) * 2016-06-21 2016-11-16 广东欧珀移动通信有限公司 一种数据传输方法及装置

Also Published As

Publication number Publication date
WO2021179667A1 (zh) 2021-09-16
US20220231792A1 (en) 2022-07-21
CN111371533A (zh) 2020-07-03

Similar Documents

Publication Publication Date Title
CN111371533B (zh) 数据传输方法、装置、存储介质及设备
CN108306771B (zh) 日志上报方法、装置及系统
CN110868459B (zh) 数据传输方法、装置、终端及存储介质
CN110213024B (zh) 数据包重传方法、装置及设备
CN110602733B (zh) 应用提速、带宽管理方法、装置、终端及存储介质
CN111355774B (zh) 一种基于p2p的服务通信方法、装置及系统
CN114095437B (zh) 发送数据包的方法、装置、电子设备和存储介质
CN111400610A (zh) 车载社交方法及装置、计算机存储介质
CN108616835B (zh) 基于浏览器的网络资源获取方法、装置、系统及存储介质
CN111315038B (zh) 数据传输方法、装置、电子设备及存储介质
CN110601921B (zh) 数据包传输参数的检测方法及装置、数据包传输系统
CN110149491B (zh) 视频编码方法、视频解码方法、终端及存储介质
CN111106902B (zh) 数据报文传输方法、装置、设备及计算机可读存储介质
CN111131392A (zh) 处理消息的方法、装置、电子设备及介质
CN109995704B (zh) 广告拦截方法、装置、设备及计算机可读存储介质
CN114339294A (zh) 网络抖动的确认方法、装置、设备及存储介质
EP4044513A1 (en) Method, apparatus and system for displaying alarm file
CN110086814B (zh) 一种数据获取的方法、装置及存储介质
CN109688064B (zh) 数据传输方法、装置、电子设备和存储介质
CN110912830A (zh) 传输数据的方法和装置
CN114785766A (zh) 智能设备的控制方法、终端及服务器
CN111741040B (zh) 连接建立方法、地址获取方法、装置、设备及存储介质
CN113259370B (zh) 数据传输方法、装置、设备、系统及可读存储介质
CN114168167A (zh) 固件更新方法、装置、终端、服务器及可读存储介质
CN115086200B (zh) 丢包类型确定方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40026380

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant