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

一种缓冲区管理方法及相关装置与流程

2022-02-21 08:17:23 来源:中国专利 TAG:

技术领域
:本申请涉及通信
技术领域
:,尤其涉及一种缓冲区管理方法及相关装置。
背景技术
:随着移动终端技术的发展以及移动终端功能多样化,移动终端可以接收到其他移动终端或服务器传输的文件数据。随着移动终端技术的发展以及移动终端功能多样化,移动终端可以与其他移动终端进行文件传输,以满足用户对文件(如照片、音视频等)共享的需求。目前,移动终端可以基于传输控制协议(transmissioncontrolprotocol,TCP)或用户数据包协议(userdatagramprotocol,UDP),将文件数据传输到对端。传统的TCP传输协议是针对低速、低延迟的网络而设计的。针对端到端的近距离传输场景中,由于两个移动终端无需通过中间节点进行数据的转发,两个移动终端之间的网络基本上不会有抖动,使用TCP传输文件数据时,发送端与接收端需要先建立连接,并引入了窗口拥塞控制机制保证可靠性和有序性,这样会影响文件传输的速率。而UDP是一个非连接协议,当使用UDP传输文件数据时,虽然可以增大文件的传输速率,但是无法保证可靠的数据传输,可能会导致接收端接收到的文件不完整。因此,在端到端近距离的大文件数据传输场景中,传统的传输协议无法同时满足高传输速率和可靠性的需求。技术实现要素:本申请提供了一种缓冲区管理方法及相关装置,实现了可以实现终端接收文件数据的过程中,根据缓冲区的已缓冲数据、可用内存、网卡接收速率、磁盘写入速率、可用内存以及接收到用户交互操作的频繁程度,对缓冲区的大小进行调整。这样,可以降低高速传输文件数据时终端中缓冲区的溢出几率,减小丢包率。第一方面,本申请提供了一种缓冲区管理方法,包括:终端接收第一文件的数据,并将该第一文件的数据存入第一缓冲区中,并将该第一缓冲区中的数据写入磁盘中。该终端监测该第一缓冲区的已缓冲数据量、第一文件的待传输数据量、第一缓冲区的缓冲数据增长速率、可用内存容量。若该第一缓冲区的缓冲数据增长速率大于0,该终端根据该第一缓冲区的已缓冲数据量、第一文件的待传输数据量、第一缓冲区的缓冲数据增长速率和网卡接收速率,确定出第一缓冲区的所需总容量值。若该第一缓冲区的所需总容量值大于等于第二值且小于等于第一值,且该第一缓冲区的剩余缓冲容量小于该第一文件的待传输数据量,该终端将该第一缓冲区的大小调整为该第一缓冲区的所需总容量值,该第一值大于该第二值。通过本申请提供一种缓冲区管理方法,可以实现终端接收文件数据的过程中,根据缓冲区的已缓冲数据、可用内存、网卡接收速率、磁盘写入速率、可用内存容量等因素以及接收到用户交互操作的频繁程度,对缓冲区的大小进行调整。在不同场景下,调整缓冲区的大小,尽可能的为缓冲区申请到更多的存储空间。这样,可以降低高速传输文件数据时缓冲区的溢出几率,减小丢包率。在一种可能的实现方式中,若该第一缓冲区的所需总容量值大于该第一值,该终端将该第一缓冲区的大小调整为第一缓冲容量,其中,该第一缓冲容量与该可用内存容量的比值为第一值。在一种可能的实现方式中,若该第一缓冲区的所需总容量值小于该第二值,该终端将该第一缓冲区的大小调整为该第一缓冲区的所需总容量值。在一种可能的实现方式中,在该终端将该第一缓冲区的大小调整为该第一缓冲区的所需总容量值之后,该方法还包括:若该终端在指定时间段内接收到用户输入的次数大于次数阈值,且第一缓冲区的已缓冲数据量小于等于第二缓冲容量,该终端根据该第二缓冲容量、该第一缓冲区的已缓冲数据量、该第一文件的剩余数据量、该第一缓冲区的缓冲数据增长速率,确定出安全发送速率,该第二缓冲容量与该可用内存容量的比值为该第二值。该终端发送第一速率信息给该第一文件的发送端,该第一速率信息用于指示该发送端调整该第一文件的发送速率为该安全发送速率。该终端接收到该发送端发送的确认信息。响应于该确认信息,该终端将该第一缓冲区的大小调整为该第二缓冲容量。在一种可能的实现方式中,若该第一缓冲区的所需总容量大于等于第二值且小于等于该第一值,该第二值小于该第一值,在该终端将该第一缓冲区的大小调整为该第一缓冲区的所需总容量值之后,该方法还包括:若该终端在指定时间段内接收到用户输入的次数大于次数阈值,且第一缓冲区的已缓冲数据量大于第二缓冲容量,该终端发送第二速率信息给该发送端,该第二速率信息用于指示该发送端调整第一文件的发送速率小于等于速率阈值,该第二缓冲容量与该可用内存容量的比值为该第二值。若该第一缓冲区的已缓冲数据量小于该第二缓冲容量,该终端将该第一缓冲区的大小调整为该第二缓冲容量。在一种可能的实现方式中,在该终端将该第一缓冲区的大小调整为该第二缓冲容量后,该方法还包括:该终端根据该第一缓冲区的剩余缓冲容量、该第一文件的剩余数据量、该第一缓冲区的缓冲数据增长速率,确定出安全发送速率。该终端发送第一速率信息给该第一文件的发送端,该第一速率信息用于指示该发送端调整该第一文件的发送速率为该安全发送速率。在一种可能的实现方式中,在该终端将该第一缓冲区的大小调整为该第一缓冲容量之后,该方法还包括:若该终端在指定时间段内接收到用户输入的次数大于次数阈值,且第一缓冲区的已缓冲数据量小于等于第二缓冲容量,该终端根据该第二缓冲容量、该第一缓冲区的已缓冲数据量、该第一文件的剩余数据量、该第一缓冲区的缓冲数据增长速率,确定出安全发送速率,该第二缓冲容量与该可用内存容量的比值为该第二值。该终端发送第一速率信息给该第一文件的发送端,该第一速率信息用于指示该发送端调整该第一文件的发送速率为该安全发送速率。该终端接收到该发送端发送的确认信息。响应于该确认信息,该终端将该第一缓冲区的大小调整为该第二缓冲容量。在一种可能的实现方式中,在该终端将该第一缓冲区的大小调整为该第一缓冲容量之后,该方法还包括:若该终端在指定时间段内接收到用户输入的次数大于次数阈值,且第一缓冲区的已缓冲数据量大于第二缓冲容量,该终端发送第二速率信息给该发送端,该第二速率信息用于指示该发送端调整第一文件的发送速率小于等于速率阈值,该第二缓冲容量与该可用内存容量的比值为该第二值。若该第一缓冲区的已缓冲数据量小于该第二缓冲容量,该终端将该第一缓冲区的大小调整为该第二缓冲容量。在一种可能的实现方式中,在该终端将该第一缓冲区的大小调整为该第一缓冲容量之后,该方法还包括:若该终端在指定时间段内接收到用户输入的次数大于次数阈值,且第一缓冲区的已缓冲数据量大于第二缓冲容量,该终端发送第二速率信息给该发送端,该第二速率信息用于指示该发送端调整第一文件的发送速率小于等于速率阈值,该第二缓冲容量与该可用内存容量的比值为该第二值。若该第一缓冲区的已缓冲数据量小于该第二缓冲容量,该终端将该第一缓冲区的大小调整为该第二缓冲容量。在一种可能的实现方式中,在该终端将该第一缓冲区的大小调整为该第一缓冲区的所需总容量值之后,该方法还包括:当终端确定出该第一缓冲区的缓冲数据增长速率小于0时,该终端将该第一缓冲区的大小减小指定容量。在一种可能的实现方式中,该终端根据如下公式确定出该第一缓冲区的所需容量值:c*(H-W)/A-FLS/rateNet=0其中,c为保守系数,0<c≤1,H为该第一缓冲区的所需总容量值,W为该第一缓冲区的已缓冲数据量,A为该第一缓冲区的缓冲数据增长速率,FLS为该第一文件的待传输数据量,rateNet为该网卡接收速率。在一种可能的实现方式中,该终端根据如下公式确定出该安全发送速率:c*(X-W)/A-FLS/V1=0其中,c为保守系数,0<c≤1,X为该第二缓冲容量,W为该第一缓冲区的已缓冲数据量,A为该第一缓冲区的缓冲数据增长速率,FLS为该第一文件的待传输数据量,V1为该安全发送速率。在一种可能的实现方式中,该终端根据该第一缓冲区的剩余缓冲容量、该第一文件的剩余数据量、该第一缓冲区的缓冲数据增长速率,确定出安全发送速率,具体包括:该终端根据如下公式确定出该安全发送速率:c*P/A-FLS/V1=0其中,c为保守系数,0<c≤1,P为该第一缓冲区的剩余缓冲容量,A为该第一缓冲区的缓冲数据增长速率,FLS为该第一文件的待传输数据量,V1为该安全发送速率。在一种可能的实现方式中,若该第一文件的待传输数据量占该第一文件的总数据量的比值小于指定比例值,该终端调整该第一缓冲区的大小为第三缓冲容量,该第三缓冲容量占该可用内存容量的比例为第三值,该第三值大于该第一值。在一种可能的实现方式中,该终端获取该第一缓冲区的缓冲数据增速率,具体包括:该终端通过监测该第一缓冲区中的已缓冲数据量的变化,获取到该第一缓冲区的缓冲数据增长速率。在一种可能的实现方式中,该终端获取该第一缓冲区的缓冲数据增速率,具体包括:该终端获取该第一文件的数据写入该磁盘的写入速率。该终端根据该网卡接收速率和该写入速率,确定出该第一缓冲区的缓冲数据增长速率。第二方面,本申请提供了一种数据传输方法,包括:第一终端与第二终端建立文件传输连接,该文件传输连接用于传输第一文件。该第一终端获取网卡的物理层发送速率上限。该第一终端根据该物理层发送速率上限确定出第一速率。该第一终端以该第一速率向MAC层发送缓冲区qdisk_buffer写入该第一文件的第一数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的第一数据发送给该第二终端。当该第一终端确定该MAC层发送缓冲区的已缓冲数据量大于等于第一预警水位线时,该第一终端以第二速率向该MAC层发送缓冲区写入该第一文件的第二数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的第二数据发送给该第二终端,其中,该第一速率大于该第二速率。通过本申请实施例提供的一种数据传输的方法,可以通过设置发送端210的MAC层发送缓冲区(qdisk_buffer)的缓冲容量和第一预警水位线,并根据MAC层发送缓冲区(qdisk_buffer)的已缓冲数据量决定发送端210写入第一文件的数据至MAC层发送缓冲区的发送速率,实现文件的传输速度接近物理信道极限速率且降低丢包率。在一种可能的实现方式中,该第一终端获取到MAC层上报的第一水位线信息,该第一水位线信息用于指示该MAC层发送缓冲区的已缓冲数据量大于等于该第一预警水位线。这样,MAC层发送缓冲区的已缓冲数据量超过第一预警水位线时,MAC层可以主动上报告警信息,及时降低第一文件的数据写入MAC层发送缓冲区的速率。在一种可能的实现方式中,当该第一终端确定该MAC层发送缓冲区的已缓冲数据量大于等于该第一预警水位线且该MAC层发送缓冲区的剩余容量小于该第一文件的待发送数据量时,该第一终端以该第二速率向该MAC层发送缓冲区写入该第一文件的该第二数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的该第二数据发送给该第二终端。在一种可能的实现方式中,在该第一终端以第一速率向MAC层发送缓冲区写入该第一文件的第一数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的第一数据发送给该第二终端之后,该方法还包括:当该第一终端确定该MAC层发送缓冲区的已缓冲数据量大于等于该第一预警水位线且该MAC层发送缓冲区的剩余容量大于等于该第一文件的待发送数据量时,该第一终端以该第一速率向该MAC层发送缓冲区写入该第一文件的该第二数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的该第二数据发送给该第二终端。这样,在MAC层发送缓冲区的剩余容量足够容纳第一文件的剩余发送数据时,第一终端以大速率传输第一文件的数据,提高了文件传输速率。在一种可能的实现方式中,在该第一终端以第二速率向该MAC层发送缓冲区写入该第一文件的第二数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的第二数据发送给该第二终端之后,该方法还包括:当该第一终端确定该第一缓冲区中的已缓冲数据量小于等于第一指定阈值时,该第一终端以该第一速率向该MAC层发送缓冲区写入该第一文件的第三数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的第三数据发送给该第二终端,其中,该第一指定阈值小于该第一预警水位线。这样,在MAC层发送缓冲区已缓冲数据量减低到第一指定阈值以下时,第一终端可以以大速率传输第一文件的数据,提高了文件传输速率。在一种可能的实现方式中,在该第一终端以第一速率向MAC层发送缓冲区写入该第一文件的数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的数据发送给该第二终端,该方法还包括:该第一终端接收该第二终端在确定该第二终端上的第一缓冲区的缓冲水位线大于等于第二预警水位线时发送的第一反馈信息。响应于该第一反馈信息,该第一终端以第三速率向该MAC层发送缓冲区写入该第一文件的第四数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的该第四数据发送给该第二终端,其中,该第一速率大于该第三速率。在一种可能的实现方式中,该第一缓冲区包括:该第二终端上的IP分片重组缓冲区ip_defrag_buffer、该第二终端上的写缓冲区write_buffer中的任一个。这样,可以进一步通过监控第二终端的IP分片重组缓冲区(ip_defrag_buffer)和第二端的写缓冲区(write_buffer)的已缓冲数据量,决定第一终端的发送速率,实现文件的传输速度接近物理信道极限速率且降低丢包率。在一种可能的实现方式中,在该第一终端以第三速率向该MAC层发送缓冲区写入该第一文件的第四数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的数据发送给该第二终端之后,该方法还包括:该第一终端接收该第二终端在确定该第一缓冲区的已缓冲数据量小于等于第二指定阈值时发送的第二反馈信息,该第二指定阈值小于该第二预警水位线。响应于该第二反馈信息,该第一终端以该第一速率向该MAC层发送缓冲区写入该第一文件的第五数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的第五数据发送给该第二终端,其中,该第一速率大于该第三速率。这样,在第一缓冲区的已缓冲数据量减低到第二指定阈值以下时,第一终端可以以大速率传输第一文件的数据,提高了文件传输速率。在一种可能的实现方式中,在该第一终端以第一速率向MAC层发送缓冲区写入该第一文件的数据之前,该方法还包括:该第一终端获取MAC层上报的测量数据包,该测量数据包包括该MAC层上报该测量数据包的时间。该第一终端根据该MAC层上报该测量数据包的时间和该第一终端获取到该测量数据包的时间,确定出该MAC层的反馈时间。该第一终端根据该物理层发送速率上限和该MAC层的反馈时间,确定该MAC层发送缓冲区的缓冲容量和该第一预警水位线。其中,该第一终端确定出该MAC层发缓冲区的缓冲容量和该第一预警水位线的公式为:((1-A)*M)/Vmax≥Ts(A*M)/Vmax≥2*Ts其中,M为该MAC层发送缓冲区的缓冲容量,A为该预警水位线,Vmax为该物理层发送速率上限,Ts为该反馈时间,M取满足该公式中的最小值。在一种可能的实现方式中,该文件传输连接包括:Wi-Fi直连、Wi-FisoftAP、超宽带通信连接、蓝牙连接中的任一种。在一种可能的实现方式中,第二终端根据该物理层发送速率上限和文件传输连接上的往返时延,确定该第一缓冲区的缓冲容量和该第二预警水位线。其中,该第二终端确定出该第一缓冲区的缓冲容量和该第二预警水位线的公式为:((1-a)*m)/Vmax≥0.5*RTT(a*m)/Vmax≥0.5*RTT 0.5*RTT其中,m为该MAC层发送缓冲区的缓冲容量,a为该预警水位线,Vmax为该物理层发送速率上限,RTT为该往返时延,m取满足该公式中的最小值。第三方面,本申请提供了一种数据存储方法,包括:终端接收第一文件的数据,并将该第一文件的数据存入网络协议栈接收缓冲区中。该终端从网络协议栈接收缓冲区中取出第一文件的数据直接写入磁盘中。该终端获取该网络协议栈接收缓冲区的剩余缓冲容量、第一文件的待传输数据量、该网络协议栈接收缓冲区的缓冲数据增长速率。若该网络协议栈接收缓冲区的缓冲数据增速率大于0,该终端根据该网络协议栈接收缓冲区的剩余缓冲容量、该第一文件的待传输数据量、该网络协议栈接收缓冲区的缓冲数据增长速率和网卡接收速率,确定出该网络协议栈接收缓冲区的溢出时间和该第一文件的剩余传输时间。若该网络协议栈接收缓冲区的溢出时间小于该第一文件的剩余传输时间,且该网络协议栈接收缓冲区的已缓冲数据量大于第一阈值,该终端将存入该网络协议栈接收缓冲区中的数据转存到用户态缓冲区,并将该用户态缓冲区中的数据经过内核态写缓冲区写入该磁盘中。本申请提供的一种数据存储方法,终端可以在接收到文件数据后,通过内核态的网络协议栈接收缓冲区中的水位线,采取不同的数据存储路径,这样,可以避免网络协议栈接收缓冲区中溢出而导致丢包,在高速传输文件数据的同时,降低丢包率。在一种可能的实现方式中,该终端根据该网络协议栈接收缓冲区的缓冲数据增长速率和该网络协议接收缓冲区的剩余缓冲容量,确定出该网路协议栈接收缓冲区的溢出时间。该终端根据该第一文件的待传输数据量和网卡接收速率,确定第一文件的剩余传输时间。在一种可能的实现方式中,在该终端将该网络协议栈接收缓冲区中的已缓冲数据转存到用户态缓冲区,并从该用户态缓冲区中取出该第一文件的数据经过内核态写缓冲区写入该磁盘中之后,该方法还包括:该终端根据该用户态缓冲区的缓冲数据增长速率和该用户态缓冲区的剩余缓冲容量,确定出该用户态缓冲区的溢出时间。若该用户态缓冲区的溢出时间小于该第一文件的剩余传输时间时,该终端发送缓冲信息给该第一文件的发送端,该缓冲信息用于指示该发送端降低该第一文件的发送速率。这样,可以在用户态缓冲区的溢出时间小于该第一文件的剩余传输时间时,及时让发送端降低发送速率,防止用户态缓冲区溢出。在一种可能的实现方式中,若该用户态缓冲区的溢出时间大于等于第一文件的剩余传输时间,该方法还包括:若该网络协议栈接收缓冲区的已缓冲数据量低于第二阈值,该终端根据该网络协议栈接收缓冲区的总缓冲容量、该用户态缓冲区的缓冲数据增长速率,确定出该网络协议栈接收缓冲区的最大溢出时间。若该网络协议栈接收缓冲区的最大溢出时间大于等于该第一文件的剩余传输时间,该终端从该网络协议栈接收缓冲区中取出该第一文件的数据直接写入该磁盘中。这样,网络协议栈接收缓冲区的空余容量较多时,直接从网络协议栈接收缓冲区将第一文件的数据写入至磁盘中,节约处理器的处理功耗。在一种可能的实现方式中,该终端将存入该网络协议栈接收缓冲区中的数据转存到用户态缓冲区,具体包括:该终端将存入该网络协议栈接收缓冲区中的所有数据转存到该用户态缓冲区。在一种可能的实现方式中,该终端将存入该网络协议栈接收缓冲区中的数据转存到用户态缓冲区,具体包括:该终端将存入该网络协议栈接收缓冲区中的第一部分数据转存到该用户态缓冲区。该方法还包括:该终端将该存入该网络协议栈接收缓冲区中的第二部分数据直接写入该磁盘中。在一种可能的实现方式中,该终端获取网络协议栈接收缓冲区的缓冲数据增长速率,具体包括:该终端通过监测该网络协议栈接收缓冲区中的已缓冲数据量的变化,获取到该网络协议栈接收缓冲区的缓冲数据增长速率。在一种可能的实现方式中,该终端获取网络协议栈接收缓冲区的缓冲数据增长速率,具体包括:该终端获取该第一文件的数据写入该磁盘的写入速率。该终端根据该网卡接收速率和该写入速率,确定出该网络协议栈接收缓冲区的缓冲数据增长速率。在一种可能的实现方式中,该网络协议栈接收缓冲区包括:用户数据报协议UDP接收缓冲区。第四方面,本申请提供了一种多路径数据预取方法,包括:终端获取该终端的第一应用针对第一URI发起的第一HTTP请求,该第一HTTP请求用于向服务器请求第一数据。该终端生成L个第二HTTP请求,该L个第二HTTP请求用于向该服务器请求第二数据,其中,该第二数据包括该第一数据且该第二数据的数据量大于该第一数据的数据量,L为正整数。该终端将该L个第二HTTP请求分别通过L个网络路径发送给该服务器。该终端接收该服务器在该L个网络路径上发送的L个第一HTTP响应,该L个第一HTTP响应包括有该第二数据。该终端从该第二数据中取出该第一数据,并将该第一数据通过HTTP响应返回给该第一应用。该终端接收到该第一应用针对该第一URI发起的第三HTTP请求,该第三HTTP请求用于向该服务器请求第三数据。若该第二数据包括该第三数据,该终端从该第二数据中取出该第三数据,并将该第三数据通过HTTP响应返回给该第一应用。通过本申请提供的一种多路径数据预取方法,终端可以当应用业务请求第一数据量的数据时,向服务器预取第二数据量的数据,其中,第二数据量大于第一数据量。然后,终端接收到服务器返回的第二数据量的数据后,可以先将第二数据量中的第一数据量的数据返回给应用。然后,将剩余(第二数据量-第一数据量)的数据存到预取缓冲区。当应用下次请求剩余的(第二数据量-第一数据量)字节的数据时,终端可以直接从预取缓冲区中提取该剩余的(第二数据量-第一数据量)字节的数据给到应用。提高了终端与服务器之间的网络路径的带宽利用率,并且,当应用频繁访问同一URI地址上的不同范围的数据时,可以节省应用获取到数据的时间。在一种可能的实现方式中,若该第三数据的字节范围不在该第二数据的字节范围之内,该终端生成S个第四HTTP请求,该S个第四HTTP请求用于向该服务器请求第四数据,其中,该第四数据与该第二数据的集合包括该第三数据,S为正整数。该终端接收该服务器在该S个网络路径上发送的S个第二HTTP响应,该S个第二HTTP响应包括有该第四数据。该终端从该第四数据和该第二数据中取出该第三数据,并将该第三数据通过HTTP响应返回给该第一应用。这样,可以在终端上次预取的数据量不够满足应用本次的数据量时,向服务器请求更多的数据。在一种可能的实现方式中,在该终端接收到该第一应用针对该第一URI发起的第三HTTP请求之前,该方法还包括:该终端将该第二数据中除该第一数据之外的剩余数据,保存到第一URI对应的第一预取缓冲区中。该若该第二数据包括该第三数据,该终端从该第二数据中取出该第三数据,并将该第三数据通过HTTP响应返回给该第一应用,具体包括:若该第二数据包括该第三数据,该终端从该第一预取缓冲区中取出该第三数据,并将该第三数据通过HTTP响应返回给该第一应用。这样,终端可以将多预取的数据存储到缓冲区中,在应用下次请求数据时,可以及时返回数据给应用。在一种可能的实现方式中,在该终端生成L个第二HTTP请求之前,该方法还包括:该终端根据该第一应用上一次请求该第一URI对应资源的字节范围,确定出第二数据的字节范围。在一种可能的实现方式中,该终端根据该第一应用上一次请求该第一URI对应资源的字节范围,确定出第二数据的字节范围,具体包括:该终端从该第一应用上次请求该第一URI对应资源的字节范围中,获取该第一应用上次请求该第一URI对应资源的上次请求数据量和上次请求末端字节位置。当指定倍数的上次请求数据量小于等于该第一预取缓冲区中的剩余缓冲容量时,该终端确定本次请求数据量为该指定倍数的上次请求数据量。该终端根据该本次请求数据量和该上次请求末端字节位置,确定出该第二数据的字节范围。这样,终端100可以决定每次向服务器预取数据的数据量。在一种可能的实现方式中,该方法还包括:当该指定倍数的上次请求数据量大于该第一预取缓冲区中的剩余缓冲容量时,该终端确定该本次请求数据量为该上次请求数据量。在一种可能的实现方式中,该终端根据该第一应用上一次请求该第一URI对应资源的字节范围,确定出第二数据的字节范围,具体包括:该终端从该第一应用上次请求该第一URI对应资源的字节范围中,获取该第一应用上次请求该第一URI对应资源的上次请求数据量和上次请求末端字节位置。该终端根据N个可用网络路径的带宽和往返时延,确定出当请求数据量为指定倍数的上次请求数据量时该终端上N个可用网络路径的第一总带宽利用率,N≥L,N为正整数。当该第一总带宽利用率小于等于指定阈值且该指定倍数的上次请求数据量小于等于该第一预取缓冲区中的剩余缓冲容量时,该终端确定该指定倍数的本次请求数据量为上次请求数据量。该终端根据该本次请求数据量和该上次请求末端字节位置,确定出该第二数据的字节范围。其中,本次请求数据量的确定可以如下:1、当该第一总带宽利用率小于等于该指定阈值且该指定倍数的上次请求数据量大于该第一预取缓冲区中的剩余缓冲容量时,该终端确定该本次请求数据量为上次请求数据量。2、当该第一总带宽利用率大于该指定阈值时,该终端根据该N个可用网络的带宽和时延,确定在该N个可用网络路径的总带宽利用率为该指定阈值时对应的第一预取数据量。当该终端确定该第一预取数据量小于等于该第一预取缓冲区中剩余缓冲容量时,该终端确定该本次请求数据量为该第一预取数据量。3、当该终端确定该第一预取数据量大于该第一预取缓冲区中剩余缓冲容量时,该终端确定该本次请求数据量为上次请求数据量。在一种可能的实现方式中,该终端根据该终端与该服务器之间的L个网络路径的带宽和往返时延、该L个网络路径上该服务器的IP地址和该第二数据的字节范围,生成该L个第二HTTP请求。这样,终端可以根据各网络路径的网络性能决定每个网络路径上请求的数据量,提高网络路径的带宽利用率并减小数据传输时间。在一种可能的实现方式中,在终端获取第一应用针对第一URI发起的第一HTTP请求之前,该方法还包括:该终端获取该第一应用首次针对该第一URI发起的初次HTTP请求,该初次HTTP请求用于请求第五数据。该终端根据该第五数据的字节范围,生成N个第五HTTP请求,其中,该N个第五HTTP请求中请求范围的长度相同,N大于等于L。该终端将该N个第五HTTP请求分别通过N个可用网络路径发送给该服务器。该终端接收该服务器在该N个可用网络路径上发送的第五数据,并将该第五数据返回给该第一应用。该终端获取该N个可用网络路径上的往返时延和吞吐量。该终端根据该N个可用网络路径上的往返时延和吞吐量,以及该N个第五HTTP请求分别请求的数据量,确定出该N个可用网络路径的带宽。这样,终端可以获取到每个网络路径上的网络性能信息。其中,在该终端获取该第一应用首次针对该第一URI发起的初次HTTP请求后,该终端创建该第一URI对应的该第一预取缓冲区。其中,该终端通过如下公式,确定出该N个可用网络路径的带宽:TransTimei=max{Ui/Zi,0.5*RTTi}其中,表示第i个可用网络路径的理论带宽利用率,Zi表示第i个网络路径的真实带宽,Xi表示第i个网络路径的吞吐量,TransTimei表示第i个可用网络路径上的数据传输耗时,Ui表示第i个可用网络路径上对应的第五HTTP请求所请求的数据量,RTTi表示第i个可用网络路径上的往返时延,i≤N。在一种可能的实现方式中,在该终端获取该第一应用首次针对该第一URI发起的初次HTTP请求之前,该终端根据该第一URI的域名在所有网络路径上发送DNS请求。该终端在该N个可用网络路径上接收到N个DNS响应。该终端从该N个DNS响应中,获取到该N个可用网络路径中每一个网络路径上对应的该服务器的IP地址。这样,终端可以获取到每个网路路径上服务器的IP地址。在一种可能的实现方式中,该终端根据该终端与服务器之间的L个网络路径的带宽和往返时延、该第二数据的字节范围确定出该L个网络路径各自对应的请求数据量。该终端根据该L个网络路径各自对应的请求数据量,和该第二数据的字节范围确定出该L个第二HTTP请求各自对应的请求范围。该终端根据该服务器的IP地址和该L个第二HTTP请求各自对应的请求范围,生成该L个第二HTTP请求。其中,在该终端根据该终端与服务器之间的L个网络路径的带宽和往返时延、该L个网络路径上该服务器的IP地址和该第二数据的字节范围生成L个第二HTTP请求之前,该终端分别在该L个网络路径上与该服务器建立TCP连接。其中,该终端通过如下公式,确定该L个网络路径各自对应的请求数据量:FCTi=Ui/Zi 0.5*RTTiFCTi=c其中,M为该第二数据的数据量,Ui用于表示该L个网络路径中第i个网络路径对应的子请求数据量,FCTi用于表示该L个网络路径中第i个网络路径的传输完Ui长度的数据所需时间。Zi用于表示该L个网络路径中第i个网络路径的带宽,c为固定值,1≤i≤L。在一种可能的实现方式中,在该终端根据该终端与服务器之间的L个网络路径的带宽和往返时延、该L个网络路径上该服务器的IP地址和该第二数据的字节范围生成L个第二HTTP请求之后,该终端分别在该L个网络路径上与该服务器建立TCP连接。其中,该终端通过如下公式,确定该L个网络路径各自对应的请求数据量:FCTi=Ui/Zi 2*RTTiFCTi=c其中,M为该第二数据的数据量,Ui用于表示该L个网络路径中第i个网络路径对应的子请求数据量,FCTi用于表示该L个网络路径中第i个网络路径的传输完Ui长度的数据所需时间。Zi用于表示该L个网络路径中第i个网络路径的带宽,c为固定值,1≤i≤L。在一种可能的实现方式中,在该终端根据该终端与服务器之间的L个网络路径的带宽和往返时延、该L个网络路径上该服务器的IP地址和该第二数据的字节范围,生成L个第二HTTP请求之前,该终端从N个可用网络路径中,选出该L个网络路径。在一种可能的实现方式中,当终端确定指定时间段内所述第一应用请求该第一URI对应资源的次数大于指定次数阈值时,所述终端生成上述L个第二HTTP请求。在一种可能的实现方式中,当终端确定指定时间段内所述第一应用请求该第一URI对应资源的次数大于指定次数阈值时且第一URI对应的第一预取缓冲区中不包括上述第一数据时,该终端生成上述L个第二HTTP请求。第五方面,本申请提供了一种终端,包括一个或多个处理器和一个或多个存储器。该一个或多个存储器与一个或多个处理器耦合,一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,使得终端执行上述任一方面任一项可能的实现方式中的缓冲区管理方法或数据传输方法或数据存储方法或多路径数据预取方法。第六方面,本申请实施例提供了一种计算机存储介质,包括计算机指令,当计算机指令在终端上运行时,使得终端执行上述任一方面任一项可能的实现方式中的缓冲区管理方法或数据传输方法或数据存储方法或多路径数据预取方法。第七方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述任一方面任一项可能的实现方式中的缓冲区管理方法或数据传输方法或数据存储方法或多路径数据预取方法。第八方面,本申请提供了一种终端,包括:一个或多个功能模块,该一个或多个功能模块用于执行上述任一方面任一项可能的实现方式中的缓冲区管理方法或数据传输方法或数据存储方法或多路径数据预取方法。附图说明图1为本申请实施例的第一部分提供的一种数据传输的场景示意图;图2为本申请实施例的第一部分提供的一种内存占用率与用户交互操作频繁程度的关系示意图;图3为本申请实施例的第一部分提供的一种缓冲区管理策略的示意图;图4为本申请实施例的第一部分提供的一种终端的硬件结构示意图;图5为本申请实施例的第一部分提供的一种缓冲区管理方法的流程示意图;图6为本申请实施例的第二部分提供的一种数据传输系统的架构示意图;图7为本申请实施例的第二部分提供的一种数据传输系统的缓冲区示意图;图8为本申请实施例的第二部分提供的一种数据传输方法的流程示意图;图9为本申请实施例的第二部分提供的一种缓冲区的模型示意图;图10为本申请实施例的第二部分提供的一种数据传输方法的流程示意图;图11为本申请实施例的第二部分提供的MAC层发送缓冲区的缓冲水位线变化示意图;图12为本申请实施例的第三部分提供的传输控制协议TCP中拥塞控制机制的基本逻辑示意图;图13为本申请实施例的第三部分提供的传输控制协议TCP中拥塞控制机制的问题示意图;图14为本申请实施例的第三部分提供的一种数据存储系统的架构示意图;图15为本申请实施例的第三部分提供的一种数据存储方法的流程示意图;图16为本申请实施例的第四部分提供的多路劲传输控制协议MPTCP的原理示意图;图17为本申请实施例的第四部分提供的多路径超文本传输协议MPHTTP的原理示意图;图18为本申请实施例的第四部分提供的多径传输的系统架构示意图;图19为本申请实施例的第四部分提供的基于多路径超文本传输协MPHTTP进行多径传输的流程示意图;图20为本申请实施例的第四部分提供的终端通过HTTP请求向服务器请求数据的时序示意图;图21为本申请实施例的第四部分提供的带宽利用率与分片大小和网络带宽的关系示意图;图22A为本申请实施例的第四部分提供的多路径数据预取方法的原理示意图;图22B为本申请实施例的第四部分提供的另一多路径数据预取方法的原理示意图;图23为本申请实施例的第四部分提供的终端的软件架构示意图;图24为本申请实施例的第四部分提供的第一应用首次获取服务器上数据的方法流程示意图;图25为本申请实施例的第四部分提供的第一应用再次获取服务器上数据的方法流程示意图;图26为本申请实施例的第四部分提供的多路径数据预取方法的流程示意图;图27为本申请实施例的第四部分提供的多路径数据预取方法的交互流程示意图。具体实施方式下面将结合附图对本申请实施例中的技术方案进行清楚、详尽地描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。下面结合图1-图5介绍本申请实施例的第一部分提供的一种缓冲区管理方法及相关内容。在本申请实施例的第一部分中一些名词的序号不继续沿用本申请实施例其他部分中的序号的顺序,在本申请实施例的第一部分中的名词仅仅在在本申请实施例第一部分中使用。在大带宽传输场景中,高速传输的主要矛盾是信道极限速率与终端内部处理速率不匹配。发送端传输文件数据给接收端时,若发送太快,容易丢数据包,若发送太慢,文件传输速率无法接近信道极限速率,浪费带宽,也无法满足用户的需求。例如,采用通用闪存存储(universalflashstorage,UFS)3.0标准的终端,在空闲时的顺序写入速率可以达到2.4Gbps。采用通用闪存存储(universalflashstorage,UFS)2.0标准的终端,在空闲时的顺序写入速率可以达到1.2Gbps。机械硬盘7200在空闲时的顺序写入速率可以达到1.2Gbps。固态硬盘(solidstatedisk,SSD)在空闲时的顺序写入速率可以达到3Gbps。而配置有2x2多输入多输出(muti-inputmuti-output,MIMO)天线的终端基于无线高保真(wirelessfidelity,Wi-Fi)5的无线局域网络的信道发送速率可以达到1.7Gbps,基于WiFi6的无线局域网络的信道传输速率可以达到信道发送速率可以达到2.4Gbps。其中,信道极限发送速率与终端内部处理速率存在静态不匹配。当发送端和接收端的中央处理单元(centralprocessingunit,CPU)算力或存储器输入/输出(input/output,I/O)算力不对称时,I/O或CPU算力高的发送设备给I/O或CPU算力低的接收设备高速发送数据时,I/O或CPU算力低的接收设备内核态接收缓冲区容易溢出,从而导致丢包。这样,会导致在端到端近距离大带宽的传输场景中,发送端传输文件数据时的速率太慢。信道极限发送速率与终端内部处理速率还存在动态不匹配。当接收端的负载动态变化,会引发I/O算力或CPU算力的动态变化,从而影响接收端从内核态接收缓冲区中取出数据的速率,可能会导致丢包率升高。如图1所示,数据包发送端(packetsender)可以通过网络(network)发送文件数据给数据包接收端(packetreceiver)。数据包接收端在接收到数据包后可以将数据包先存入缓冲区中,然后,数据包接收端的数据包处理模块(packethandler)可以从缓冲区中顺序取出数据包进行处理,并释放缓冲区中已取出数据所占用的存储空间。例如,假设上述缓冲区可以为用户态缓冲区,数据包处理模块从用户态缓冲区取出数据的处理速率Vsrv与CPU的算力以及I/O算力有关,用户态缓冲区的接收速率Vrerv与信道有关。默用户态缓冲区的容量仅为131Kb,假设Vsrv比Vrerv的瞬时速率少1%,对于1Gbps传输链路,用户态缓冲区从空到溢出大约只需花费0.1s,溢出的所有数据包将必须全部丢弃。这样,会导致发送端发送数据包太快,丢包率过高,发送端发送数据包太慢,不满足端对端近距离大带宽传输场景的高速传输需求。图2示出了本申请实施例的第一部分中提供的一种内存占用率与用户交互操作频繁程度的关系图。如图2所示,当终端频繁接收到用户交互操作时,即表示终端需要占用较高的内存,响应用户交互操作,处理用户交互操作对应的功能事项。因此,当终端频繁接收到用户交互操作时,终端的内存占用率(使用内存占总内存的比值)会较高。图3示出了本申请实施例的第一部分中提供的一种缓冲区管理策略的示意图。如图3所示,终端在确定出缓冲区的缓冲容量后,可以判断缓冲区的缓冲容量占可用内存的比例在风险区、安全区和临界区的中的哪个取值区间。其中,风险区为大于第一值(例如50%),临界区为小于等于第一值且大于等于第二值(例如20%),安全区为小于第二值,第一值大于第二值。当缓冲区的缓冲容量在安全区中时,终端可以一次性快速的在可用内存中为缓冲区申请到缓冲容量的存储空间,之后当终端确定缓冲区的缓冲容量过大时,终端可以分多次减小缓冲区的缓冲容量到指定值。当缓冲区的缓冲容量在在临界区和风险区中时,终端可以一次性快速的在可用内存中为缓冲区申请到缓冲容量的存储空间,之后当终端确定有交互场景下时,终端可以一次性减小缓冲区的缓冲容量到指定值。这样,尽可能的为缓冲区申请到更多的存储空间,以保证文件数据的高速传输,但在用户交互场景下,可以及时释放缓冲区的存储空间,为终端处理用户交互对应功能事项,提供更多的可用内存。因此,本申请实施例的第一部分提供一种缓冲区管理方法,可以实现接收终端接收文件数据的过程中,根据缓冲区的已缓冲数据、可用内存、网卡接收速率、磁盘写入速率、可用内存以及接收到用户交互操作的频繁程度,对缓冲区的大小进行调整,在不同场景下,管理缓冲区的大小,尽可能的为缓冲区申请到更多的存储空间。这样,可以降低高速传输文件数据时缓冲区的溢出几率,减小丢包率。图4示出了终端100的结构示意图。下面以终端100为例对实施例进行具体说明。应该理解的是,图4所示终端100仅是一个范例,并且终端100可以具有比图4中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图4中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。终端100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universalserialbus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriberidentificationmodule,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等中的一种或多种。可以理解的是,本发明实施例示意的结构并不构成对终端100的具体限定。在本申请另一些实施例中,终端100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(applicationprocessor,AP),调制解调处理器,图形处理器(graphicsprocessingunit,GPU),图像信号处理器(imagesignalprocessor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digitalsignalprocessor,DSP),基带处理器,和/或神经网络处理器(neural-networkprocessingunit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是终端100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integratedcircuit,I2C)接口,集成电路内置音频(inter-integratedcircuitsound,I2S)接口,脉冲编码调制(pulsecodemodulation,PCM)接口,通用异步收发传输器(universalasynchronousreceiver/transmitter,UART)接口,移动产业处理器接口(mobileindustryprocessorinterface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriberidentitymodule,SIM)接口,和/或通用串行总线(universalserialbus,USB)接口等。充电管理模块140用于从充电器接收充电输入。终端100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。天线1和天线2用于发射和接收电磁波信号。终端100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。移动通信模块150可以提供应用在终端100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoiseamplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。无线通信模块160可以提供应用在终端100上的包括无线局域网(wirelesslocalareanetworks,WLAN)(如无线保真(wirelessfidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(globalnavigationsatellitesystem,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(nearfieldcommunication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。在一些实施例中,终端100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得终端100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(globalsystemformobilecommunications,GSM),通用分组无线服务(generalpacketradioservice,GPRS),码分多址接入(codedivisionmultipleaccess,CDMA),宽带码分多址(widebandcodedivisionmultipleaccess,WCDMA),时分码分多址(time-divisioncodedivisionmultipleaccess,TD-SCDMA),长期演进(longtermevolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(globalpositioningsystem,GPS),全球导航卫星系统(globalnavigationsatellitesystem,GLONASS),北斗卫星导航系统(beidounavigationsatellitesystem,BDS),准天顶卫星系统(quasi-zenithsatellitesystem,QZSS)和/或星基增强系统(satellitebasedaugmentationsystems,SBAS)。终端100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquidcrystaldisplay,LCD),有机发光二极管(organiclight-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganiclightemittingdiode的,AMOLED),柔性发光二极管(flexlight-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantumdotlightemittingdiodes,QLED)等。在一些实施例中,终端100可以包括1个或N个显示屏194,N为大于1的正整数。终端100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。外部存储器接口120可以用于连接外部存储卡,例如MicroSD卡,实现扩展终端100的存储能力。内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行终端100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflashstorage,UFS)等。终端100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。终端100可以通过扬声器170A收听音乐,或收听免提通话。受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。耳机接口170D用于连接有线耳机。压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。陀螺仪传感器180B可以用于确定终端100的运动姿态。气压传感器180C用于测量气压。磁传感器180D包括霍尔传感器。加速度传感器180E可检测终端100在各个方向上(一般为三轴)加速度的大小。距离传感器180F,用于测量距离。终端100可以通过红外或激光测量距离。接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。环境光传感器180L用于感知环境光亮度。指纹传感器180H用于采集指纹。温度传感器180J用于检测温度。触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于终端100的表面,与显示屏194所处的位置不同。骨传导传感器180M可以获取振动信号。按键190包括开机键,音量键等。马达191可以产生振动提示。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口195用于连接SIM卡。终端100设备类型可以包括手机、电视、平板电脑、音箱、手表、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,UMPC)、上网本,以及个人数字助理(personaldigitalassistant,PDA)、增强现实(Augmentedreality,AR)\\虚拟现实(virtualreality,VR)设备等,本申请实施例对终端的具体类型不作特殊限制。本申请实施例的第一部分介绍了一种缓冲区管理方法,提供了一种缓冲区管理方法,包括:终端接收第一文件的数据,并将该第一文件的数据存入第一缓冲区中,并将该第一缓冲区中的数据写入磁盘中。该终端监测该第一缓冲区的已缓冲数据量、第一文件的待传输数据量、第一缓冲区的缓冲数据增长速率、可用内存容量。若该第一缓冲区的缓冲数据增长速率大于0,该终端根据该第一缓冲区的已缓冲数据量、第一文件的待传输数据量、第一缓冲区的缓冲数据增长速率和网卡接收速率,确定出第一缓冲区的所需总容量值。若该第一缓冲区的所需总容量值大于等于第二值且小于等于第一值,且该第一缓冲区的剩余缓冲容量小于该第一文件的待传输数据量,该终端将该第一缓冲区的大小调整为该第一缓冲区的所需总容量值,该第一值大于该第二值。通过本申请实施例的第一部分提供的一种缓冲区管理方法,可以实现终端接收文件数据的过程中,根据缓冲区的已缓冲数据、可用内存、网卡接收速率、磁盘写入速率、可用内存容量等因素以及接收到用户交互操作的频繁程度,对缓冲区的大小进行调整。在不同场景下,调整缓冲区的大小,尽可能的为缓冲区申请到更多的存储空间。这样,可以降低高速传输文件数据时缓冲区的溢出几率,减小丢包率。请参考图5,图5示出了本申请实施例提供的一种缓冲区管理方法的流程示意图。如图5所示,该方法可包括:S501、终端100可以与第一文件的发送端建立文件传输连接,设置第一缓冲区的大小为默认值。第一文件的发送端可以是其他终端或服务器。当第一文件的发送方为其他终端时,终端100可以与其他终端通过Wi-Fi直连(例如,无线高保真点对点(wirelessfidelitypeertopeer,Wi-FiP2P))、Wi-FisoftAP、超宽带(ultra-wideband,UWB)等通信技术传输第一文件的数据。当发送端为服务器时,终端100可以通过因特网接收到服务器传输第一文件的数据。在终端100与第一文件的发送端建立文件传输连接之后,终端100可以接收到发送端发送的第一文件的总数据量。终端100可以设置第一缓冲区的大小为默认值。示例性的,第一文件的总数据量可以为3000兆字节(megabytes,MB),默认值可以为20MB。示例仅仅用于解释本申请,不应构成限定。S502、终端100接收第一文件的数据,将第一文件的数据存入第一缓冲区中,并将第一缓冲区中的数据写入磁盘中。在一些实施例中,终端100可以从第一缓冲区取出第一文件的数据直接写入磁盘中,在另一些实施例中,终端100可以从第一缓冲区取出第一文件的数据间接通过其他缓冲区写入磁盘中。S503、终端100可以监测第一缓冲区的已缓冲数据量、第一文件的待传输数据量、网卡接收速率、第一缓冲区的缓冲数据增长速率、可用内存容量。其中,终端100可以周期性获取到第一缓冲区的已缓冲数据量、第一文件的待传输数据量、第一缓冲区的缓冲数据量增长速率。由于在后续整个文件传输过程中,第一缓冲区的已缓冲数据量、第一文件的待传输数据量、第一缓冲区的缓冲数据量增长速率和可用内存容量,都是在不断变化的。因此,终端100每次使用到缓冲区的已缓冲数据量、第一文件的待传输数据量和缓冲区的缓冲数据量增长速率之前,都需要重新获取第一缓冲区的已缓冲数据量、第一文件的待传输数据量、第一缓冲区的缓冲数据增长速率和可用内存容量。终端100上的总内存容量是固定的,例如,8吉字节(gigabyte,GB),终端100可以监测已占用的内存容量。然后,终端100可以根据总内存容量和已占用的内存容量,确定出可用内存容量。例如,可用内存容量为总内存容量与已占用的内存容量之差。S504、当第一缓冲区的缓冲数据增长速率大于0时,终端100根据第一缓冲区的已缓冲数据量(此时值为W1)、第一文件的待传输数据量(此时值为FLS1)、网卡接收速率(此时值为rateNet1)第一缓冲区的缓冲数据增长速率(此时值为A1),确定出第一缓冲区的所需总容量值。终端100可以通过监测第一缓冲区中的缓冲水位线变化,获取到第一缓冲区的缓冲数据增长速率。在一种可能的实现方式中,终端100可以监测网卡接收速率和第一文件的磁盘写入速率。终端100可以根据网卡接收速率和第一文件的磁盘写入速率,确定出第一缓冲区的缓冲数据增长速率。其中,第一缓冲区的缓冲数据增长速率可以为网卡的接收速率与第一文件的磁盘写入速率之差。示例性的,网卡的接收速率可以为100兆字节每秒(megabytespersecond,MBps),第一文件的磁盘写入速率可以为90MBps,终端100可以确定出第一缓冲区的缓冲数据增长速率为10MBps。示例仅仅用于解释本申请,不应构成限定。其中,终端100通过如下公式确定出第一缓冲区的所需总容量值:c*(H-W)/A-FLS/rateNet=0公式(1)其中,上述公式(1)中,0<c≤1,c为保守系数,为了防止第一缓冲区真正溢出,可以让c<1,这样,可以使得终端100预计第一缓冲区的溢出时间比实际的溢出时间提前。H为第一缓冲区的所需总容量值,W可以指第一缓冲区的已缓冲数据量,A可以指第一缓冲区的缓冲数据增长速率,FLS指第一文件的待传输数据量,rateNet可以指网卡接收速率。其中,终端100在执行上述步骤S504时,测量得到第一缓冲区的已缓冲数据量的值为W1、第一缓冲区的缓冲数据增长速率的值可以为A1、第一文件的待传输数据量的值为FLS1、网卡接收速率的值为rateNet1。示例性的,保守系数c可以取0.8,第一缓冲区的已缓冲数据量的值W1可以为12.5MB,第一缓冲区的缓冲数据增长速率的值A1可以为17MBps,第一文件的待传输数据量的值FLS1可以为2000MB,网卡接收速率的值rateNet1可以为200MBps。因此,终端100可以通过上述公式(1)确定出第一缓冲区的所需总容量值H为200MB。上述示例仅仅用于解释本申请,不应构成限定。S505、终端100判断第一缓冲区的所需总容量值与终端100上可用内存容量(此时为R1)的比值是否小于第二值。其中,终端100在执行上述步骤S504时,可以测得终端100上可用内存容量的值为R1。示例性的,第二值可以为0.2。S506、当第一缓冲区的所需总容量值与终端100上可用内存容量(此时为R1)的比值小于第二值时,终端100可以将第一缓冲区的大小立即调整为所需总容量值。示例性的,第二值可以为0.2,终端100可以确定出第一缓冲区的所需总容量值为200MB,此时,可用内存容量的值R1可以为2000MB,所需总容量值与可用内存容量的比值可以为0.1(小于0.2)。因此,终端100可以将第一缓冲区的大小设置为200MB,即,终端100从可用内存中为第一缓冲区申请到200MB的存储空间。示例仅仅用于解释本申请,不应构成限定。S507、终端100可以判断缓冲区的缓冲数据增长速率是否小于等于0,若是,则执行S508、终端100可以缓慢减小第一缓冲区的大小。在第一缓冲区的所需总容量值与终端100上可用内存容量(此时为R1)的比值小于第二值(例如0.2),终端100将第一缓冲区的大小立即调整为所需总容量值之后,终端100可以周期性(例如周期可以为2ms)判断第一缓冲区的缓冲数据增长速率是否小于等于0,若是,则终端100可以缓慢减小第一缓冲区的大小;若否,则终端100可以重新执行上述步骤S504。在一种可能的实现方式中,终端100缓慢减小第一缓冲区的大小可以包括当终端100每次确定出第一缓冲区的缓冲数据增长速率小于等于0时,将第一缓冲区的大小减少指定容量。示例性的,终端100确定出第一缓冲区的所需总容量值可以为200MB,此时,可用内存容量的值R1可以为2000MB,终端100从可用内存中为第一缓冲区申请到200MB的存储空间。之后,终端100周期性判断第一缓冲区的缓冲数据增长速率是否小于等于0,在每次终端100确定出第一缓冲区的缓冲数据增长速率小于等于0时,可以将第一缓冲区的大小减小10MB,即,每次释放第一缓冲区10MB的存储空间。示例仅仅用于解释本申请,不应构成限定。S509、当终端100判断第一缓冲区的所需总容量值与终端100上可用内存容量的比值大于等于第二值时,终端100可以判断第一缓冲区的所需缓冲容量与终端100上可用内存容量的比值是否大于第一值。S510、当第一缓冲区的所需缓冲总容量值与终端100上可用内存容量的比值大于第一值时,终端100可以判断第一缓冲区的剩余缓冲容量是否小于第一文件的待传输数据量。S511、当第一缓冲区的剩余缓冲容量小于第一文件的待传输数据,则S511、终端100可以将第一缓冲区的大小设置为第一缓冲容量,第一缓冲容量与可用内存容量的比值为第一值。其中,第一值(例如0.5)大于第二值(例如0.2)。示例性的,第一值可以为0.5,终端100可以确定出第一缓冲区的所需总容量值为200MB,此时,可用内存容量的值R1可以为300MB,第一文件的待传输数据量的值FLS1为2000MB,第一缓冲区的剩余缓冲容量的值P1为7.5MB,终端100可以确定第一缓冲区的所需总容量值与可用内存容量的比值可以为2/3(大于0.5),第一缓冲区的剩余缓冲容量小于第一文件的待传输数据量,第一缓冲容量为150MB。终端100可以将第一缓冲区的大小立即调整为150MB。上述示例仅仅用于解释本申请,不应构成限定。S512、当第一缓冲区的所需缓冲总容量值与终端100上可用内存容量的比值小于等于第一值且大于等于第二值时,终端100可以将第一缓冲区的大小设置为所需总容量值。示例性的,第一值可以为0.5,第二值可以为0.2,终端100可以确定出第一缓冲区的所需总容量值为200MB,此时,可用内存容量的值R1可以500MB,终端100可以确定第一缓冲区的所需总容量值与可用内存容量的比值可以为0.4(大于等于0.2且小于等于0.5)。终端100可以将第一缓冲区的大小立即调整为200MB。上述示例仅仅用于解释本申请,不应构成限定。S513、当第一缓冲区的所需总容量值与终端100上可用内存容量的比值大于第一值,终端100立即调整完第一缓冲区的大小之后,终端100可以判断指定时间段内接收到用户输入的次数是否大于次数阈值。其中,用户输入可以包括针对触摸屏的触控输入、针对实体按键的输入、语音输入等等中的一种或多种。指定时间段的长度可以指终端100接收到某一用户输入之后的一定时长内(例如3秒),例如,终端100接收到用户的连续输入,终端100可以判断在该连续输入中是否有3秒时间内终端100接收到用户输入的次数大于5次。S514、当终端100在指定时间段内接收到用户输入的次数阈值大于次数阈值时,终端100可以判断第一缓冲区的已缓冲数据量是否小于等于第二缓冲容量,其中,第二缓冲容量与可用内存容量(此时为R2)的比值为第二值。S515、当第一缓冲区的已缓冲数据量(此时为W2)小于等于第二缓冲容量时,终端100可以根据第二缓冲容量、第一缓冲区的已缓冲数据量(此时为W2)、第一文件的待传输数据量(此时为FLS2)和第一缓冲区的缓冲数据增长速率(此时为A2),确定出安全发送速率。S516、终端100可以发送第一速率信息给第一文件的发送端,用于指示发送端立即调整第一文件的发送速率为安全发送速率。当终端100在指定时间段内接收到用户输入的次数阈值大于次数阈值,且第一缓冲区的已缓冲数据量的值W2小于等于第二缓冲容量时,终端100可以根据第二缓冲容量、第一缓冲区的已缓冲数据量(此时值为W2)、第一文件的待传输数据量(此时为FLS2)和第一缓冲区的缓冲数据量增长速率(此时值为A2),确定出安全发送速率。终端100可以根据如下公式(2)确定出安全发送速率。c*(X1-W2)/A2-FLS2/V1=0公式(2)其中,上述公式(2)中,0<c≤1,c为保守系数,为了防止第一缓冲区真正溢出,可以让c<1,这样,可以使得终端100预计第一缓冲区的溢出时间比实际的溢出时间提前。X1为第二缓冲容量,W2指第一缓冲区的已缓冲数据量,A2为第一缓冲区的缓冲数据增长速率,FLS2指第一文件的待传输数据量、V1可以指安全发送速率。上述公式(2)仅仅用于解释本申请,不应构成限定。在一种可能的实现方式中,终端100可以监测网卡接收速率和第一文件的磁盘写入速率。终端100可以根据网卡接收速率和第一文件的磁盘写入速率,确定出第一缓冲区的缓冲数据增长速率。因此,上述公式(2)可以替换为如下公式(3):c*(X1-W2)/(Vt-rateIO1)-FLS2/V1=0公式(3)其中,rateIO1为第一文件的磁盘写入速率。上述公式(3)仅仅用于解释本申请,不应构成限定。示例性的,次数阈值为5,终端100在指定时间段内接收到用户输入的次数阈值为8次,c可以为0.8,第一缓冲区的已缓冲数据量的值W2可以为100MB,可用内存容量的值R2可以为1000MB,第二值可以为0.2,第一文件的待传输数据量的值FLS2可以为1000MB,磁盘写入速率rateIO1可以为180MBps。终端100可以确定出第二缓冲容量可以为200MB。其中,在指定时间段内接收到用户输入的次数阈值大于次数阈值且第一缓冲区的已缓冲数据量小于第二缓冲容量。因此,终端100可以确定出安全发送速率V1为195.65MBps。上述示例仅仅用于解释本申请,不应构成限定。终端100在确定出安全发送速率后,可以将第一速率信息发送给第一文件的发送端。该第一速率信息用于指示发送端立即调整第一文件的发送速率为该安全发送速率。S517、终端100接收到发送端返回的确认信息,响应于确认信息将第一缓冲区的大小设置为第二缓冲容量(值为X1)。其中,发送端在将第一文件的发送速率立即调整为上述安全发送速率后,可以发送确认信息给终端100。终端100接收到该确认信息后,可以响应于该确认信息将第一缓冲区的大小设置为第二缓冲容量(值为X1)。S518、当第一缓冲区的已缓冲数据量(此时为W2)大于第二缓冲容量(此时为X1)时,终端100可以发送第二速率信息给第一文件的发送端,第二速率信息用于指示发送端调整第一文件的发送速率小于等于速率阈值。S519、终端100可以判断第一缓冲区的已缓冲数据量是否小于第二缓冲容量。若是,则S520、终端100将第一缓冲区的大小立即调整为第二缓冲容量(此时值为X2)。在发送第二速率信息给第一文件的发送端之后,发送端可以根据第二速率信息降低第一文件的发送速率。这样,终端100上第一缓冲区中的已缓冲数据量会逐渐减少。在发送第二速率信息给第一文件的发送端之后,终端100可以一直监测第一缓冲区的已缓冲数据量是否小于第二缓冲容量。当第一缓冲区的已缓冲数据量小于第二缓冲容量时,终端100可以将第一缓冲区的大小立即调整为第二缓冲容量(此时值为X2)。S521、在终端100将第一缓冲区的大小立即调整为第二缓冲容量之后,终端100根据第一缓冲区的剩余缓冲容量、第一缓冲区的已缓冲数据量(此时值为W3)、第一文件的待传输数据量(此时为FLS3)和第一缓冲区的缓冲数据量增长速率(此时值为A3),确定出安全发送速率。S522、终端100发送第一速率信息给第一文件的发送端,第一速率信息用于指示发送端立即调整第一文件的发送速率为安全发送速率。终端100可以根据如下公式(4)确定出安全发送速率。c*P/A3-FLS3/V2=0公式(4)其中,上述公式(4)中,0<c≤1,c为保守系数,为了防止第一缓冲区真正溢出,可以让c<1,这样,可以使得终端100预计第一缓冲区的溢出时间比实际的溢出时间提前。X2为第二缓冲容量,W3指第一缓冲区的已缓冲数据量,A3为第一缓冲区的缓冲数据增长速率,FLS3指第一文件的待传输数据量、V2可以指安全发送速率。上述公式(4)仅仅用于解释本申请,不应构成限定。在一种可能的实现方式中,终端100可以监测网卡接收速率和第一文件的磁盘写入速率。终端100可以根据网卡接收速率和第一文件的磁盘写入速率,确定出第一缓冲区的缓冲数据增长速率。因此,上述公式(4)可以替换为如下公式(5):c*P/(V2-rateIO2)-FLS3/V2=0公式(5)其中,rateIO2为第一文件的磁盘写入速率。上述公式(5)仅仅用于解释本申请,不应构成限定。示例性的,在终端100将第一缓冲区的大小立即调整为第二缓冲容量之后,第一缓冲区的剩余缓冲容量的值P可以为100MB,第一文件的待传输数据量的值FLS3可以为800MB,磁盘写入速率rateIO2可以为150MBps。因此,终端100可以确定出安全发送速率V2为166.67MBps。上述示例仅仅用于解释本申请,不应构成限定。终端100在确定出安全发送速率后,可以将第一速率信息发送给第一文件的发送端。该第一速率信息用于指示发送端调整第一文件的发送速率为该安全发送速率。在一些实施例中,当第一文件的待传输数据量占第一文件的总数据量的比值小于指定比例值(例如0.1)时,终端100可以立即调整第一缓冲区的大小为第三缓冲容量,其中,第三缓冲容量占可用内存容量的比例为第三值,第三值大于上述第一值大于上述第二值。当终端100调整第一缓冲区的大小为上述第三缓冲容量的指定时间(例如3秒)之后第一文件的待传输数据量大于0,则终端100可以重新执行上述步骤S513。示例性的,上述指定比例值可以为0.1,第一文件的总数据量可以为3000MB,第一文件的待传输数据量可以为100MB,第三值可以为0.8,可用内存容量可以为1000MB。终端100可以确定出第一文件的待传输数据量占第一文件的总数据量的比值为0.03(小于0.1),则终端100可以立即调整第一缓冲区的大小为800MB。当终端100调整第一缓冲区的大小为800MB的3秒钟之后,第一文件的待传输数据量还大于0,则终端100可以重新执行上述步骤S513。上述示例仅仅用于解释本申请,不应构成限定。本申请实施例1提供一种缓冲区管理方法,可以实现终端接收文件数据的过程中,根据缓冲区的已缓冲数据、可用内存、网卡接收速率、磁盘写入速率、可用内存容量等因素以及接收到用户交互操作的频繁程度,对缓冲区的大小进行调整。在不同场景下,调整缓冲区的大小,尽可能的为缓冲区申请到更多的存储空间。这样,可以降低高速传输文件数据时缓冲区的溢出几率,减小丢包率。下面结合图6-图11介绍本申请实施例的第二部分提供的一种数据传输方法及相关内容。在本申请实施例的第二部分中一些名词的序号不继续沿用本申请实施例其他部分中的序号的顺序,在本申请实施例的第二部分中的名词仅仅在在本申请实施例第二部分中使用。本申请实施例的第二部分提供了一种数据传输方法,包括:第一终端与第二终端建立文件传输连接,该文件传输连接用于传输第一文件。该第一终端获取网卡的物理层发送速率上限。该第一终端根据该物理层发送速率上限确定出第一速率。该第一终端以该第一速率向MAC层发送缓冲区qdisk_buffer写入该第一文件的第一数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的第一数据发送给该第二终端。当该第一终端确定该MAC层发送缓冲区的已缓冲数据量大于等于第一预警水位线时,该第一终端以第二速率向该MAC层发送缓冲区写入该第一文件的第二数据,并通过该网卡将该MAC层发送缓冲区中该第一文件的第二数据发送给该第二终端,其中,该第一速率大于该第二速率。通过本申请实施例的第二部分提供的一种数据传输的方法,可以通过设置发送端210的MAC层发送缓冲区(qdisk_buffer)的缓冲容量和第一预警水位线,并根据MAC层发送缓冲区(qdisk_buffer)的已缓冲数据量决定发送端210写入第一文件的数据至MAC层发送缓冲区的发送速率,实现文件的传输速度接近物理信道极限速率且降低丢包率。图6示出了系统20的架构示意图。如图6所示,该系统20包括有发送终端210、接收终端220。其中,发送终端210和接收终端220之间可以通过无线网络点对点传输文件数据。其中,发送终端210和接收终端220可以通过Wi-Fi直连(例如,无线高保真点对点(wirelessfidelitypeertopeer,Wi-FiP2P))、Wi-FisoftAP、超宽带(ultra-wideband,UWB)等通信技术传输文件数据。发送终端210和接收终端220的设备类型可以包括手机、电视、平板电脑、音箱、手表、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,UMPC)、上网本,以及个人数字助理(personaldigitalassistant,PDA)、增强现实(Augmentedreality,AR)\\虚拟现实(virtualreality,VR)设备等,本申请实施例对终端的具体类型不作特殊限制。下面介绍本申请实施例的第二部分提供的一种数据传输系统的架构图。请参考图7,图7示出了本申请实施例的第二部分提供的一种数据传输系统400的架构图。该数据传输系统400中可以包括有发送终端210和接收终端220。本申请实施例中,发送终端210可以被称为第一终端,接收终端220可以被称为第二终端。其中,该发送终端210和接收终端220上的软件系统可以采用分层架构,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。其中,发送终端210和接收终端220的软件系统可以包括用户态,内核态,硬件层。其中,该用户态可以包括应用层、极简协议层。内核态可以包括套接字(Socket)抽象层、用户数据协议层(UDP层)/网络层(IP层)、MAC层。硬件层可以包括有网卡(networkinterfacecontroller,NIC)。发送终端210的应用层可以包括一个或多个应用。例如,应用211可以为华为分享(huaweishare)等数据分享应用。发送终端210的极简协议层可以包括有发送速率调度模块212和读缓冲区(read_buffer)213。其中,该读缓冲区213可用于缓冲发送终端210从磁盘中读取到内存中的文件数据。该发送速率调度模块212可用于设置发送终端210中指定一个或多个缓冲区(例如,MAC层发送缓冲区215)的缓冲容量和预警水位线。发送速率调度模块212还可用于根据发送终端210中一个或多个缓冲区(例如,MAC层发送缓冲区215)的缓冲水位线以及接收终端220上发送速率反馈模块222发送的缓冲信息,调整MAC层发送缓冲区215的数据写入速率。其中,缓冲信息可用于指示接收终端220上一个或多个缓冲区(例如,写缓冲区223和MAC层接收缓冲区226)的缓冲水位线。发送终端210的套接字抽象层可以包括有套接字发送缓冲区(socket_send_buffer)214。该套接字发送缓冲区214可用于缓冲发送终端210中应用211的进程向对应的socket写入的数据。发送终端210的UDP层/IP层可以将套接字抽象层下发的文件数据封装成数据包(例如,UDP数据包或IP数据包),并将数据包下发给MAC层。发送终端210的MAC层可以包括有MAC层发送缓冲区(qdisk_buffer)215。该MAC层发送缓冲区215可用于缓冲UDP层/IP层下发的数据包(例如UDP数据包/IP数据包)。MAC层可用于从MAC层发送缓冲区215中顺序取出数据包,并封装成MAC数据帧下发至网卡中。发送终端210的网卡中可以包括网卡发送缓冲区216,该网卡发送缓冲区216的缓冲区类型可以为环形缓冲区(ring_buffer)。该网卡发送缓冲区216可用于缓冲MAC层下发的MAC数据包。该发送终端210的网卡可用于从网卡发送缓冲区216中顺序取出MAC数据帧并转换为物理帧通过无线网络点对点发送给接收终端220。接收终端220的应用层可以包括一个或多个应用。例如,应用221可以为华为分享等数据分享应用。接收终端220的极简协议层可以包括有发送速率反馈模块222和写缓冲区(write_buffer)223。其中,该写缓冲区223可用于缓冲接收终端220从套接字接收缓冲区224取出的文件数据,接收终端220可以从写缓冲区223中顺序取出文件数据写入磁盘中。该发送速率反馈模块222可用于设置接收终端220上一个或多个缓冲区(例如,写缓冲区223和MAC层接收缓冲区226)的缓冲容量和预警水位线。该发送速率反馈模块222还用于获取接收终端220的上述一个或多个缓冲区的缓冲信息,并发送到发送终端210的发送速率调度模块212上。其中,该缓冲信息可以用于指示接收终端220上一个或多个缓冲区(例如,写缓冲区223和MAC层接收缓冲区226)的缓冲水位线。接收终端220的套接字抽象层可以包括有套接字接收缓冲区(socket_receive_buffer)224。该套接字接收缓冲区224可用于缓冲UDP层/IP层上报的文件数据。接收终端220可以从套接字接收缓冲区224中拷贝文件数据到写缓冲区223中。接收终端220从MAC层直接获取的是IP数据包时,该接收终端220的UDP层/IP层可以包括有IP分片重组缓冲区(ip_defrag_buffer)225。接收终端220从MAC层中获取到解析出来的IP数据包之后,可以将IP数据包依次存入IP分片重组缓冲区225中,然后,接收终端220可以从IP分片重组缓冲区225中依次取出IP数据包并根据分片重组成一个重组数据包,并在对该重组数据包执行UDP层/IP层的逻辑处理之后放到套接字接收缓冲区224中。接收终端220的MAC层可以包括有MAC层接收缓冲区(netdev_backlog_buffer)226。该MAC层接收缓冲区226可用于缓冲从网卡中获取的MAC数据包。该接收终端220可以从MAC层接收缓冲区226中的顺序取出MAC数据帧,并执行MAC层的逻辑处理,将处理完得到的UDP数据包/IP数据包上报给UDP层/IP层。接收终端220的网卡中可以包括有网卡接收缓冲区227。该网卡接收缓冲区227的缓冲区类型可以为环形缓冲区(ring_buffer)。该网卡接收缓冲区227可用于缓冲接收终端220从接收到的物理帧中解析出来的MAC数据帧。接收终端220可以从网卡接收缓冲区227中顺序取出MAC数据帧,并进行MAC层的逻辑处理解析出UDP数据包/IP数据包。下面结合文件传输场景,示例性说明发送终端210和接收终端220的软件工作流程。在发送终端210向接收终端220传输文件数据之前,发送速率调度模块212可以设置发送终端210上多个缓冲区的缓冲容量。其中,发送速率调度模块212可以根据物理信道的最大传输速率以及传输往返时延,设置MAC层发送缓冲区215的缓冲容量和预警水位线。发送速率反馈模块222可以设置接收终端220上多个缓冲区的缓冲容量。其中,发送速率反馈模块222可以根据物理信道的最大传输速率以及传输往返时延,设置MAC层发送缓冲区215和写缓冲区223的缓冲容量和预警水位线。发送终端210的应用211可以下发针对第一文件的文件发送请求到极简协议层,请求极简协议层从磁盘(即,只读存储器(readonlymemory,ROM))中读取第一文件的文件数据到读缓冲区213中,然后再从读缓冲区213中拷贝文件数据到套接字发送缓冲区214中。例如,应用211通过文件发送调用接口send_file(),调用极简协议层从磁盘中读取文件数据到读缓冲区213中。发送终端210的极简协议层可以通过调用套接字发送接口socket_sendto(),将读缓冲区213中的文件数据拷贝到套接字发送缓冲区214。发送终端210的套接字抽象层可以调用UDP数据包发送接口(例如,udp_sendmsg()),从套接字发送缓冲区214中取出文件数据,下发至UDP层。发送终端210的UDP层可以将文件数据封装成UDP数据包,并调用IP数据包发送接口(例如,ip_queue_xmit()),触发IP层设置路由、创建IP协议头和IP选项,将UDP数据包封装成IP数据包。IP层可以将IP数据包下发到MAC层发送缓冲区215中。在一种可能的实现方式中,由于发送终端210与接收终端220之间是近距离端对端传输,发送终端210与接收终端220之间的数据传输无需选择路由。发送终端210可以包括UDP层,不包括IP层。发送终端210的UDP层可以将文件数据封装成UDP数据包之后,可以直接下发到MAC层发送缓冲区215中。发送终端210的MAC层可以从MAC层发送缓冲区215中取出数据包(例如,UDP数据包或IP数据包),封装成MAC数据包,并调用网卡发送接口(例如,hard_start_xmit()或net_tx_action())将MAC数据包下发至网卡中的网卡发送缓冲区216中。发送终端210的网卡可以从网卡发送缓冲区216中取出MAC数据包,并封装成数据帧发送给接收终端220。接收终端220的网卡在接收到发送终端210发送的数据帧后,可以先存入网卡接收缓冲区227中。接收终端220的网卡可以从数据帧中解析出MAC数据包,并通过网卡接收接口(例如,net_rx_action()或netif_receive_skb())将MAC数据包上发给MAC层接收缓冲区226。接收终端220的MAC层可以从MAC层接收缓冲区226中取出MAC数据包,从MAC数据包中解析出IP数据包,然后通过调用IP数据包接收接口(例如,ip_rcv())将IP数据包上发给IP层。接收终端220的IP层可以将从MAC层获取到的IP数据包先存到IP分片重组缓冲区225然后IP层可以从IP分片重组缓冲区225取出IP数据包,将属于同一分片的IP数据包重组成一个UDP数据包,上发给到UDP层。接收终端220的UDP层可以从UDP数据包解析出文件数据,并通过调用UDP接收接口(例如,udp_rcv()),将文件数据上发到套接字抽象层的套接字接收缓冲区224中。接收终端220的套接字抽象层可以将套接字接收缓冲区224中的文件数据拷贝到极简协议层的写缓冲区223中。接收终端220的应用221可以通过调用文件写入接口(例如,write_file()),从写缓冲区223中取出文件数据,写入到接收终端220的磁盘中。在上述数据传输系统400中,对于发送终端210和接收终端220,都可以包括有至少三类物理存储介质:磁盘(即,ROM)、运行内存(即,随机存储器(randomaccessmemory,RAM))、网卡存储。其中,该磁盘中可以在断电后依然保留数据,可用于保存文档、图片、音乐、视频等文件数据。运行内存可用于操作系统和应用运行时所产生的临时数据。网卡中可以包括有存储器,可用于临时保存待发送或已接收到的数据帧。其中,发送终端210上的读缓冲区213、套接字发送缓冲区214、MAC层发送缓冲区215建立在发送终端210的运行内存上。发送终端210上的网卡发送缓冲区216建立在发送终端211的网卡上。接收终端220的写缓冲区223、套接字接收缓冲区224、IP分片重组缓冲区225和MAC层接收缓冲区226是建立在接收终端220上。接收终端220的网卡接收缓冲区227是建立在接收终端220的网卡上。一般来说对于同一物理存储介质内部两个缓冲区之间的数据传输速率都比较快,要高于物理信道的最大传输速率。例如,发送终端210中套接字发送缓冲区214中的数据取出速率,可以达到物理信道的最大传输速率。发送终端210的UDP层/IP层对数据的处理速率也可以达到物理信道的最大传输速率。又例如,接收终端220中套接字接收缓冲区224中的数据取出速率,可以达到物理信道的最大传输速率。但是,当发送终端210的IP层采用IP分片传输时,接收终端220的IP层需要对接收到的IP数据包按照IP数据包的序号整合成一个数据报文,这时接收终端220必须等待一个序号范围内的IP数据包全接收后,才能按顺序整合成一个数据报文。而接收终端220接收IP数据包的时间顺序与IP数据包的序号顺序并不完全相同。因此,接收终端220会花较长时间等待一个序号范围内的所有IP数据包,若有多个序号范围内缺失有IP数据包,IP层无法及时将每个序号范围内的多个IP数据包重组成数据报文,容易造成IP分片重组缓冲区(ip_defrag_buffer)225的溢出。对于处于不同物理存储介质中两个缓冲区之间的数据传输速率主要会受到CPU算力以及I/O算力的影响。其中,例如,发送终端210上MAC层发送缓冲区215中数据的积压程度受信道运力和发送终端210的CPU算力的影响,其中,MAC层发送缓冲区215中数据的取出速率,主要受网卡限制,次要受CPU软中断负载的限制。接收终端220的CPU算力会影响内核态从网卡中取出数据放到MAC层接收缓冲区226中的速率,因此,MAC层接收缓冲区226中数据的积压程度会受到接收终端220的CPU算力的影响。接收终端220的I/O算力会影响从写缓冲区223取出数据写入磁盘的速率。因此,在本申请的实施例中,可以基于MAC层发送缓冲区(qdisk_buffer)215、MAC层接收缓冲区(netdev_backlog_buffer)226、IP分片重组缓冲区(ip_defrag_buffer)225、写缓冲区(write_buffer)223中的一个或多个缓冲区,控制文件数据写入的MAC层发送缓冲区215的速率。其中,在发送终端210向接收终端220传输文件数据的过程中,接收终端220中的发送速率反馈模块222可以将MAC层接收缓冲区226的缓冲水位线以及写缓冲区223的缓冲水位线反馈给发送终端210的发送速率调度模块212。发送速率调度模块212还可以获取MAC层发送缓冲区215的缓冲水位线。发送速率调度模块212可以根据这一个或多个缓冲区的水位线,控制发送终端210从将文件数据写入到MAC层发送缓冲区215的速率。当这一个或多个缓冲均低于预警水位线时,发送终端210以网卡极限速率(例如,物理协商速率90%)将文件数据写入到MAC层发送缓冲区215,并将MAC层发送缓冲区215中文件数据下发至网卡中,通过网卡发送个接收终端220。当这一个或多个缓冲区中的任何一个超过预警水位线时,发送终端210可以降低将文件数据写入到MAC层发送缓冲区215的速率(例如,物理层发送速率上限的10%),等这一个或多个缓冲区中的内容都被消化完,发送终端210再恢复以网卡极限速率(例如,物理层发送速率上限的90%)从机身存储中将文件数据读取到读缓冲区213。这样,可以实现文件的传输速度接近物理信道极限且降低丢包率。下面介绍本申请实施例的第二部分中提供的一种数据传输方法。请参考图8,图8示出了本申请实施例的第二部分提供的一种数据传输方法的流程示意图。其中,发送终端210可以被称为第一终端,接收终端220可以被称为第二终端。如图8所示,该方法可以包括如下步骤:S801、发送终端210获取到针对第一文件的传输请求。第一文件可以是图片、视频、文档等类型的文件。第一文件可以存储在发送终端210的机身存储中。其中,发送终端210可以获取到用户输入的针对第一文件的传输请求,该传输请求可以包括第一文件的存储地址以及接收终端220的地址信息(例如IP地址或MAC地址等)。例如,用户可以打开发送终端210上针对视频文件的分享界面,该分享界面可以包括发送终端210发现的一个或多个设备的选项,其中,该一个或多个设备可以包括该接收终端220。当发送终端210接收到用户选择接收终端220对应的选项的输入操作时,发送终端210可以获取到针对该视频文件的传输请求。S802、发送终端210与接收终端220建立文件传输连接。在发送终端210获取到第一文件的传输请求后,发送终端210可以根据接收终端220的地址信息与接收终端220建立文件传输连接。其中,该文件传输连接可以包括Wi-Fi直连(例如,Wi-FiP2P)、Wi-FisoftAP、超宽带(ultrawideband,UWB)、蓝牙等通信连接。S803、发送终端210获取物理层传输速率上限Vmax和MAC层的反馈时间Ts。物理层发送速率上限Vmax可以是预设在发送终端210上的。例如,当发送终端210和接收终端220配置的是2x2的MIMO天线,发送终端210和接收终端220之间的连接网络是基于Wi-Fi5的无线局域网络时,物理层传输速率上限Vmax可以是1Gbps。当发送终端210和接收终端220配置的是2x2的MIMO天线,发送终端210和接收终端220之间的连接网络是基于Wi-Fi6的无线局域网络时,物理层传输速率上限Vmax可以是2.4Gbps。在一种可能的实现方式中,在发送终端210与接收终端220建立文件传输连接后,发送终端210可以与接收终端220协商发送终端210上网卡的物理层发送速率上限Vmax。在发送终端210开始传输第一文件的数据之前,发送终端210的MAC层可以上报测量数据包到上层的发送速率调度模块。其中,该测量数据包中包括有MAC层上报该测量数据包的时间,发送终端210的发送速率调度模块在获取到该测量数据包后可以记录出获取到该测量数据包的时间。发送终端210可以根据MAC层上报该测量数据包的时间和所述第一终端获取到该测量数据包的时间,确定出该MAC层的反馈时间Ts。S804、发送终端210根据物理层发送速率上限Vmax和MAC层的反馈时间Ts,确定出MAC层发送缓冲区的缓冲容量和第一预警水位线。如图9所示,该缓冲区可以是上述MAC层发送缓冲区、接收终端220上的MAC层接收缓冲区、接收终端220上的IP分片重组缓冲区ip_defrag_buffer、接收终端220上的写缓冲区中任一缓冲区的抽象模型。其中,MAC缓冲区的总容量可以为M,第一预警水位线可以为A*M,因此,当缓冲区中的缓冲水位线处于第一预警水位线时,缓冲区的剩余容量为(1-A)*M。其中,0<A<1。因为需要尽量保证最高的传输速率,同时又要降低丢包率,所以需要监控MAC层发送缓冲区中的缓冲数据量既不能空,又不能溢出。若在t时刻该MAC层发送缓冲区的已缓冲数据量达到第一预警水位线A*M,且在t Δt时刻MAC层发送缓冲区的已缓冲数据量还会继续增长,要保证MAC层发送缓冲区不溢出,发送终端210的MAC层需要上报第一指示信息给上层的发送速率调度模块,进而让上层的发送速率调度模块降低第一文件的数据写入至MAC层发送缓冲区的速率。该过程所花费的最大时间为Ts。若在t时刻该缓冲区的已缓冲数据量达到第一预警水位线A*M,且在t Δt时刻已缓冲数据量继续下降,要保证MAC层给发送速率调度模块一次错误的反馈后(耗时0.5RTT),重新调整回正常的发送速率(又耗时Ts)。因此,发送终端210可以根据物理层传输速率上限Vmax和MAC层的反馈时间Ts,通过如下公式(6)和公式(7)确定出MAC层发送缓冲区的缓冲容量和预警水位线。((1-A)*M)/Vmax≥Ts公式(6)(A*M)/Vmax≥2*Ts公式(7)其中,缓冲区的缓冲容量M应满足上述公式(6)和公式(7)所限定范围中的最小值。示例性的,Vmax可以为2.4Gbps(300MB/s),Ts可以为2ms,根据上述公式(6)和公式(7)可以计算出M≥1.8MB,A=2/3。因此,发送终端220可以给MAC层发送缓冲区的容量设置为1.8MB,第一预警水位线设置为1.2MB。在一种可能的实现方式中,缓冲区的缓冲容量的单位可以是最大长度的数据包的个数,在根据上述公式(6)和公式(7)计算出缓冲区的以兆字节(MB)为单位的缓冲容量后,可以根据数据包的最大长度进行换算,得到缓冲区的以数据包的个数为单位的缓冲容量。例如,M为1.2MB,一个数据包的最大可以是1500字节(Byte),则缓冲区的缓冲容量为800个数据包。在一种可能的实现方式中,第一预警水位线可以是预设的,发送终端210可以根据上述公式(6)和公式(7)确定出MAC层缓冲区的缓冲容量。在一种可能的实现方式中,MAC层缓冲区的缓冲容量可以是预设的,发送终端210可以根据上述公式(6)和公式(7)确定出第一预警水位线。S805、在发送终端210设置完MAC层发送缓冲区的缓冲容量和第一预警水位线后,发送终端210可以以第一速率向MAC层发送缓冲区中写入第一文件的第一数据。S806、发送终端210通过网卡将MAC层发送缓冲区中第一文件的第一数据发送给接收终端220。其中,发送终端210可以根据物理层发送速率上限确定出第一速率。第一速率可以为接近物理层发送速率上限的值。物理层发送速率上限,即为发送终端210的网卡可支持的发送速率上限。例如,第一速率可以为物理层最大速率的90%。当物理层发送速率上限为2.4Gbps时,第一速率可以为2.16Gbps。发送终端210以第一速率从磁盘中中读取第一文件的第一数据后,写入至MAC层发送缓冲区的过程可以参考上述图7所示实施例,在此不再赘述。发送终端210在将第一文件的第一数据下发至MAC层发送缓冲区后,可以通过网卡从MAC层发送缓冲区获取第一文件的第一数据,并封装成数据帧,发送给接收终端220。接收终端220的网卡在接收到发送终端210发送的数据帧后,可以从数据帧中解析出MAC数据包,并上发给MAC层接收缓冲区,然后,接收终端220可以从MAC层接收缓冲区中取出第一文件的数据,发送至写缓冲区。接着,接收终端220再从写缓冲区中第一文件的数据写入接收终端220的磁盘中。其中,接收终端220从MAC层接收缓冲区中取出第一文件的数据,上发至写缓冲区的过程可以参考上述图7所示实施例,在此不再赘述。S807、发送终端210监测MAC层发送缓冲区的已缓冲数据量是否大于等于第一预警水位线。若是,则执行S808、发送终端210可以判断MAC层发送缓冲区的剩余容量是否小于第一文件的待发送数据量。当MAC层发送缓冲区的剩余容量小于第一文件的待发送数据量时,则执行S809、发送终端210以第二速率向MAC层发送缓冲区中写入第一文件的第二数据。S810、发送终端210可以通过网卡将MAC层发送缓冲区中第一文件的第二数据发送给接收终端220。S811、发送终端210可以通过网卡将MAC层发送缓冲区中第一文件的第二数据发送给接收终端220后,发送终端210可以判断MAC层发送缓冲区中的已缓冲数据量是否小于第一指定阈值,若是,则执行S812、发送终端210以第一速率向MAC层发送缓冲区中写入第一文件的第三数据。S813、发送终端210可以通过网卡将MAC层发送缓冲区中第一文件的第三数据发送给接收终端220。其中,第二速率小于上述第一速率。例如,第一速率可以为物理层发送速率上限的90%,第二速率可以为物理层发送速率上限的10%或0。当第二速率为0时,发送终端210停止从磁盘中读取第一文件的数据。上述第一指定阈值小于第一预警水位线小于MAC层发送缓冲区的缓冲容量。当发送终端210监测到MAC层发送缓冲区的已缓冲数据量大于等于第一预警水位线,且MAC层发送缓冲区的剩余容量小于第一文件的待发送数据量时,发送终端210以第二速率向MAC层发送缓冲区写入第一文件的第二数据,并通过网卡将MAC层发送缓冲区中第一文件的第二数据发送给接收终端220。发送终端210的网卡尽可能的以最大速率从MAC层发送缓冲区中取出第一文件的数据,发送给接收终端220。之后,当发送终端210监测到MAC层发送缓冲区的数据量小于等于第一指定阈值(例如,MAC层发送缓冲区总容量的10%或0)时,发送终端210可以以第一速率向MAC层发送缓冲区写入第一文件的第三数据,并通过网卡将MAC层发送缓冲区中第一文件的第三数据发送给接收终端220。发送终端210的网卡仍然尽可能的以最大速率从MAC层发送缓冲区中取出第一文件的数据,发送给接收终端220。示例性的,第一文件的数据大小为800MB,物理层发送速率上限Vmax可以为2.4Gbps(300MB/s),MAC层的反馈时间Ts可以为2ms,MAC层发送缓冲区的缓冲容量可以为1.8MB,第一预警水位线可以为1.2MB。第一速率可以为物理层发送速率上限Vmax的90%,即为2.16Gbps(270MB/s),第二速率可以为物理层发送速率上限Vmax的10%,即为0.24Gbps(30MB/s)。上述第一指定阈值可以为MAC层发送缓冲区的缓冲容量的10%,即为0.18MB。在发送终端210设置完MAC层发送缓冲区的缓冲容量和第一预警水位线后,发送终端210可以以2.16Gbps(270MB/s)的速率向MAC层发送缓冲区写入第一文件的第一数据。发送终端210的网卡可以尽可能的以最大速率从MAC层发送缓冲区中取出第一文件的第一数据,发送给接收终端220。当发送终端210监测到MAC层发送缓冲区的已缓冲数据量已经达到1.2MB时,MAC层发送缓冲区的剩余容量为0.6MB。若第一文件的待发送数据量为600MB,此时,MAC层发送缓冲区的剩余容量小于第一文件的待发送数据量,发送终端210可以以0.24Gbps(30MB/s)的速率向MAC层发送缓冲区写入第一文件的第二数据。发送终端210的网卡可以尽可能的以最大速率从MAC层发送缓冲区中取出第一文件的第二数据,发送给接收终端220。由于降低了发送终端210读取第一文件的数据的速率,而网卡还在尽可能的以最大速率从MAC层发送缓冲区中取出第一文件的数据,并发送给接收终端220,MAC层发送缓冲区中的数据量会下降。当发送终端210监测到MAC层发送缓冲区中的数据量下降至0.18MB(总容量的10%)时,发送终端210可以以2.16Gbps(270MB/s)的速率向MAC层发送缓冲区写入第一文件的第三数据。发送终端210的网卡可以尽可能的以最大速率从MAC层发送缓冲区中取出第一文件的第三数据,发送给接收终端220。上述示例仅用于解释本申请,不应构成限定。在一种可能的实现方式中,当发送终端210监测到MAC层发送缓冲区的已缓冲数据量大于等于第一预警水位线,且MAC层发送缓冲区的剩余容量大于等于第一文件的待发送数据量时,发送终端210可以继续以第一速率向MAC层发送缓冲区写入第一文件的第二数据,并通过网卡将MAC层发送缓冲区中第一文件的第二数据发送给接收终端220。发送终端210的网卡尽可能的以最大速率从MAC层发送缓冲区中取出第一文件的数据,发送给接收终端220。这样,可以在MAC层发送缓冲区的剩余容量足够支撑第一文件的待发送数据量时,发送终端210可以以极限速率读取第一文件的数据并发送给接收终端220,且MAC层发送缓冲区不会溢出丢包。在一种可能的实现方式中,当发送终端210监测到MAC层发送缓冲区的已缓冲数据量小于第一预警水位线时,发送终端210可以继续以第一速率向MAC层发送缓冲区写入第一文件的第二数据,并通过网卡将MAC层发送缓冲区中第一文件的第二数据发送给接收终端220。在一些实施例中,发送终端210可以只通过监测MAC层发送缓冲区的已缓冲数据量与第一预警水位线的关系,来决定第一文件的数据写入至MAC层发送缓冲区的速率。具体的,当发送终端210监测到MAC层发送缓冲区的已缓冲数据量大于等于第一预警水位线时,发送终端210可以以第二速率向MAC层发送缓冲区写入第一文件的第二数据,并通过网卡将MAC层发送缓冲区中第一文件的第二数据发送给接收终端220。当发送终端210监测到MAC层发送缓冲区的已缓冲数据量小于第一预警水位线时,发送终端210可以继续以第一速率向MAC层发送缓冲区写入第一文件的第二数据,并通过网卡将MAC层发送缓冲区中第一文件的第二数据发送给接收终端220。通过本申请实施例的第二部分提供的一种数据传输的方法,可以通过设置发送端210的MAC层发送缓冲区(qdisk_buffer)的缓冲容量和第一预警水位线,并根据MAC层发送缓冲区(qdisk_buffer)的已缓冲数据量决定发送端210写入第一文件的数据至MAC层发送缓冲区的发送速率,实现文件的传输速度接近物理信道极限速率且降低丢包率。请参考图10,图10示出了本申请实施例的第二部分提供的一种数据传输方法的流程示意图。其中,发送终端210可以被称为第一终端,接收终端220可以被称为第二终端。如图10所示,该方法可以包括如下步骤:S1001、发送终端210获取到针对第一文件的传输请求。具体内容,可以参考前述图8所示实施例中的步骤S501,在此不再赘述。S1002、发送终端210与接收终端220建立文件传输连接。具体内容,可以参考前述图8所示实施例中的步骤S502,在此不再赘述。S1003、接收终端220获取发送终端210物理层传输速率上限Vmax和文件传输连接上的往返时延RTT。其中,物理层传输速率上限Vmax可以是预设在接收终端220上的。例如,当发送终端210和接收终端220配置的是2x2的MIMO天线,发送终端210和接收终端220之间的连接网络是基于Wi-Fi5的无线局域网络时,物理层传输速率上限Vmax可以是1Gbps。当发送终端210和接收终端220配置的是2x2的MIMO天线,发送终端210和接收终端220之间的连接网络是基于Wi-Fi6的无线局域网络时,物理层传输速率上限Vmax可以是2.4Gbps。接收终端220可以在与发送终端210建立文件传输连接之后,检测接收终端220与发送终端210之间的往返时延。其中,接收终端220可以发送一个ICMP包给发送终端210,发送终端210在接收到ICMP包后,可以向接收终端220返回一个响应包。然后,接收终端220可以通过发送ICMP包的时间以及接收到发送终端210返回的响应包的时间,计算出的往返时延RTT。在一种可能的实现方式中,接收终端220可以多次发送ICMP包给发送终端210,接收终端220可以根据多个发包与收包的时间差,确定出RTT。例如,接收终端210可以将多个发包与收包的时间差,确定出RTT。又例如,接收终端220可以将多个发包与收包的时间差中的最大值,确定为RTT。S1004、接收终端220根据物理层发送速率上限Vmax和往返时延RTT,确定出IP分片重组缓冲区和写缓冲区各自的缓冲容量和第二预警水位线。IP分片重组缓冲区和写缓冲区的缓冲容量可以都为m,第二预警水位线可以为a*m,因此,当缓冲区中的缓冲水位线处于第一预警水位线时,缓冲区的剩余容量为(1-a)*m。其中,0<a<1。因为需要尽量保证最高的传输速率,同时又要降低丢包率,所以需要监控该IP分片重组缓冲区(或写缓冲区)的缓冲数据量既不能空,又不能溢出。若在t时刻该IP分片重组缓冲区(或写缓冲区)的已缓冲数据量达到第二预警水位线a*m,且在t Δt时刻该IP分片重组缓冲区(或写缓冲区)的已缓冲数据量还会继续增长,要保证该IP分片重组缓冲区(或写缓冲区)不溢出,接收终端220需要发送缓冲信息给发送终端210的发送速率调度模块,进而让发送终端210的发送速率调度模块降低第一文件的数据写入至MAC层发送缓冲区的速率。该过程所花费的最大时间为0.5*RTT。若在t时刻该缓冲区的已缓冲数据量达到第二预警水位线a*m,且在t Δt时刻已缓冲数据量继续下降,要保证接收终端220发送一次错误的反馈后(耗时0.5RTT),重新调整回正常的发送速率(又耗时0.5*RTT)。因此,发送终端210可以根据物理层传输速率上限Vmax和往返时延RTT,通过如下公式(8)和公式(9)确定出IP分片重组缓冲区和写缓冲区的缓冲容量和第二预警水位线。((1-a)*m)/Vmax≥0.5*RTT公式(8)(a*m)/Vmax≥0.5*RTT 0.5*RTT公式(9)其中,接收终端220可以根据物理层传输速率上限Vmax和往返时延RTT,通过公式(8)和公式(9),设置IP分片重组缓冲区和写缓冲区的缓冲容量和第二预警水位线。示例性的,Vmax可以为2.4Gbps(300MB/s),RTT可以为16ms,根据上述公式(8)和公式(9)可以计算出m≥7.2MB,a=2/3。因此,接收终端220可以给MAC层接收缓冲区的容量和写缓冲区的容量都设置为7.2MB,第二预警水位线设置为4.8MB。在一种可能的实现方式中,缓冲区的缓冲容量的单位可以是最大长度的数据包的个数,在根据上述公式(8)和公式(9)计算出缓冲区的以兆字节(MB)为单位的缓冲容量后,可以根据数据包的最大长度进行换算,得到缓冲区的以数据包的个数为单位的缓冲容量。例如,M为7.2MB,一个数据包的最大可以是1500字节(Byte),则缓冲区的缓冲容量为4800个数据包。在一种可能的实现方式中,第二预警水位线可以是预设的,发送终端210可以根据上述公式(8)和公式(9)确定出IP分片重组缓冲区和写缓冲区的缓冲容量。在一种可能的实现方式中,IP分片重组缓冲区和写缓冲区的缓冲容量可以是预设的,发送终端210可以根据上述公式(8)和公式(9)确定出第二预警水位线。S1005、在接收终端220设置完IP分片重组缓冲区的缓冲容量和写缓冲区这两个缓冲区的缓冲容量和第二预警水位线后,发送终端210可以以第一速率向MAC层发送缓冲区中写入第一文件的第一数据。S1006、发送终端210通过网卡将MAC层发送缓冲区中第一文件的第一数据,并传输给接收终端220。其中,发送终端210可以根据物理层发送速率上限确定出第一速率。第一速率可以为接近物理层发送速率上限的值。物理层发送速率上限,即为发送终端210的网卡可支持的发送速率上限。例如,第一速率可以为物理层最大速率的90%。当物理层发送速率上限为2.4Gbps时,第一速率可以为2.16Gbps。发送终端210以第一速率从磁盘中中读取第一文件的第一数据后,写入至MAC层发送缓冲区的过程可以参考上述图7所示实施例,在此不再赘述。发送终端210在将第一文件的第一数据下发至MAC层发送缓冲区后,可以通过网卡从MAC层发送缓冲区获取第一文件的第一数据,并封装成数据帧,发送给接收终端220。接收终端220的网卡在接收到发送终端210发送的数据帧后,可以从数据帧中解析出MAC数据包,并上发给MAC层接收缓冲区,然后,接收终端220可以从MAC层接收缓冲区中取出第一文件的数据,发送至写缓冲区。接着,接收终端220再从写缓冲区中第一文件的数据写入接收终端220的磁盘中。其中,接收终端220从MAC层接收缓冲区中取出第一文件的数据,上发至写缓冲区的过程可以参考上述图7所示实施例,在此不再赘述。S1007、接收终端220可以监测IP分片重组缓冲区和写缓冲区中是否存在已缓冲数据量大于等于第二预警水位线的第一缓冲区,若是,则执行S1008、接收终端220可以判断第一缓冲区中的剩余容量是否小于第一文件中待发送数据量。若是,则执行S1009、接收终端220可以反馈第一缓冲信息给发送终端210。S1010、发送终端210在接收到第一缓冲信息后,可以响应于该第一缓冲信息,以第三速率(例如物理层发送速率上限的10%或0)向MAC层发送缓冲区写入第一文件的第四数据。S1011、发送终端210通过网卡将MAC层发送缓冲区中第一文件的第四数据,发给接收终端220。第三速率小于第一速率。例如,第三速率可以为发送端210的物理层发送速率上限的10%,等等。其中,在发送终端210与接收终端220建立文件传输连接时,发送终端210可以将第一文件的总数据量发送给接收终端220。接收终端220可以统计第一文件的已接收数据量,然后,接收终端220可以根据第一文件的总数据量和已接收数据量,确定出第一文件的待发送数据量。接收终端220可以监测IP分片重组缓冲区和写缓冲区的已缓冲数据量,当监测到IP分片重组缓冲区和写缓冲区中的第一缓冲区的已缓冲数据量大于等于预警水位线,且第一缓冲区的剩余容量小于第一文件的待发送数据量时,接收终端220可以向发送终端210反馈第一缓冲信息,其中,该第一缓冲信息可用于指示发送终端210以第三速率向MAC层发送缓冲区中写入第一文件的第四数据。发送终端210在接收到该第一缓冲信息后,可以以第三速率向MAC层发送缓冲区写入第一文件的第四数据,并通过网卡将MAC层发送缓冲区中第一文件的第四数据发送给接收终端220。这样,可以在接收终端220的MAC层接收缓冲区或写缓冲区的缓冲水位线超过第二预警水位线,且IP分片重组缓冲区或写缓冲区的剩余容量不足以支撑第一文件的待发送数据量时,让发送终端210降低读取第一文件的数据,接着,发送终端210网卡的发送速率就会降低,接收终端220上的IP分片重组缓冲区或写缓冲区不会溢出丢包。当接收终端220监测到MAC层和写缓冲区中第一缓冲区的已缓冲数据量大于等于第二预警水位线,且第一缓冲区的剩余容量大于等于第一文件的待发送数据量时,接收终端220无需通知发送终端210,发送终端210继续以第一速率向MAC层发送缓冲区写入第一文件的第四数据,并通过网卡将MAC层发送缓冲区中第一文件的第四数据发送给接收终端220。这样,可以在IP分片重组缓冲区和写缓冲区的剩余容量足够支撑第一文件的待发送数据量时,发送终端210可以以极限速率读取第一文件的数据并发送给接收终端220,且接收终端220上的IP分片重组缓冲区和写缓冲区不会溢出丢包。在一种可能的实现方式中,当接收终端220监测到MAC层和写缓冲区中第一缓冲区的已缓冲数据量小于等于第二预警水位线时,接收终端220无需通知发送终端210,发送终端210继续以第一速率向MAC层发送缓冲区写入第一文件的第四数据,并通过网卡将MAC层发送缓冲区中第一文件的第四数据发送给接收终端220。在一些实施例中,接收终端220可以只通过监测第一缓冲区的已缓冲数据量与第二预警水位线的关系,来决定是否触发发送终端210降低第一文件的数据写入至MAC层发送缓冲区的速率。具体的,当接收终端220监测到第一缓冲区的已缓冲数据量大于等于第一预警水位线时,接收终端220发送第一缓冲信息给发送终端210。发送终端210可以响应于第一缓冲信息以第三速率向MAC层发送缓冲区写入第一文件的第四数据,并通过网卡将MAC层发送缓冲区中第一文件的第四数据发送给接收终端220。当接收终端220监测到第一缓冲区的已缓冲数据量小于第二预警水位线时,接收终端220无需发送第一缓冲信息给发送终端210。发送终端210可以继续以第一速率向MAC层发送缓冲区写入第一文件的第四数据,并通过网卡将MAC层发送缓冲区中第一文件的第四数据发送给接收终端220。S1012、接收终端220在向发送终端210反馈第一缓冲信息后,接收终端220可以判断第一缓冲区中的已缓冲数据量是否小于第二指定阈值。若是,则执行步骤S1013、接收终端220向发送终端210反馈第二缓冲信息。S1014、发送终端210接收到接收终端220反馈的第二缓冲信息后,可以响应于该第二缓冲信息,以第一速率向MAC层发送缓冲区中写入第一文件的第五数据。S1015、发送终端210通过网卡将MAC层发送缓冲区中第一文件的第五数据,发给接收终端220。在接收终端220向发送终端210反馈第一缓冲信息之后,当接收终端220检测到第一缓冲区中的已缓冲数据量小于等于第二指定阈值(例如IP分片重组缓冲区或写缓冲区总容量的10%或0)时,接收终端220可以向发送终端210反馈第二缓冲信息。其中,该第二缓冲信息可用于指示发送终端210以第一速率向MAC层发送缓冲区中写入第一文件的第五数据。发送终端210在接收到接收终端220反馈的第二缓冲信息后,可以以第一速率向MAC层发送缓冲区中写入第一文件的第五数据,并通过网卡将MAC层发送缓冲区中第一文件的第五数据,发给接收终端220。在一种可能的实现方式中,当发送终端210在接收到接收终端220反馈的第二缓冲信息后,若MAC层发送缓冲区的缓冲水位线大于等于第一预警水位线,且MAC层发送缓冲区的剩余容量小于等于第一文件的待发送数据量,发送终端210以第二速率向MAC层发送缓冲区中写入第一文件的数据,并通过网卡将MAC层发送缓冲区中第一文件的数据,发给接收终端220。在一种可能的实现方式中,当发送终端210在接收到接收终端220反馈的第二缓冲信息后,若MAC层发送缓冲区的缓冲水位线大于等于第一预警水位线,且MAC层发送缓冲区的剩余容量小于第一文件的待发送数据量,发送终端210以第一速率从向MAC层发送缓冲区中写入第一文件的数据,并通过网卡将MAC层发送缓冲区中第一文件的数据,发给接收终端220。示例性的,第一文件的数据大小为800MB,物理层发送速率上限Vmax可以为2.4Gbps(300MB/s),发送终端210的MAC层反馈时间Ts为2ms,MAC层发送缓冲区、MAC层接收缓冲区和写缓冲区的缓冲容量都可以为1.8MB,第一预警水位线可以为1.2MB。发送终端210与接收终端220之间的往返时延RTT可以为16ms。IP分片重组缓冲区和写缓冲区的缓冲容量可以为7.2MB。第二预警水位线可以为4.8MB。第一速率可以为物理层发送速率上限Vmax的90%,即为2.16Gbps(270MB/s),第二速率可以为物理层发送速率上限Vmax的10%,即为0.24Gbps(30MB/s)。第三速率可以为物理层发送速率上限Vmax的10%,即为0.24Gbps(30MB/s)。上述第一指定阈值可以为MAC层发送缓冲区的缓冲容量的10%,即为0.18MB。上述第二指定阈值可以为IP分片重组缓冲区和写缓冲区的缓冲容量的10%,即为0.72MB。在发送终端210与接收终端220都设置完各自缓冲区的容量和预警水位线后,发送终端210可以以2.16Gbps(270MB/s)的速率,向MAC层发送缓冲区第一文件的第一数据,发送终端210的网卡可以尽可能的以最大速率从MAC层发送缓冲区中取出第一文件的第一数据,发送给接收终端220。当接收终端220监测到IP分片重组缓冲区(或写缓冲区)的已缓冲数据量已经达到4.8MB时,IP分片重组缓冲区(或写缓冲区)的剩余容量为2.4MB。若第一文件的待发送数据量为600MB,此时,IP分片重组缓冲区(或写缓冲区)的剩余容量小于第一文件的待发送数据量,接收终端220反馈第一缓冲信息给发送终端210。发送终端210在接收到反馈的第一缓冲信息后,可以以0.24Gbps(30MB/s)的速率向MAC层发送缓冲区写入第一文件的第四数据,并通过该网卡将MAC层发送缓冲区中第一文件的第四数据发送给接收终端220。由于降低了发送终端210读取第一文件的数据的速率,也降低了网卡从MAC层发送缓冲区中取出第一文件的数据的速率。IP分片重组缓冲区(或写缓冲区)中的数据量会下降。当接收终端220监测到IP分片重组缓冲区(或写缓冲区)中的数据量下降至0.72MB(总容量的10%)时,接收终端220可以反馈第二缓冲信息给发送终端210。在发送终端210接收到第二缓冲信息时,若发送终端210监测到MAC层发送缓冲区的缓冲水位线为1MB(低于第一预警水位线1.2MB),发送终端210可以以2.16Gbps(270MB/s)的速率向MAC层发送缓冲区写入第一文件的第五数据,并通过该网卡将MAC层发送缓冲区中第一文件的第五数据发送给接收终端220。若在发送终端210接收到第二缓冲信息时,发送终端210监测到MAC层发送缓冲区的缓冲水位线为1.2MB(达到第一预警水位线1.2MB),且第一文件的待发送数据量为200MB(大于MAC层发送缓冲区的剩余容量2.4MB)时,发送终端210可以以0.24Gbps(30MB/s)的速率向MAC层发送缓冲区写入第一文件的第五数据,并通过该网卡将MAC层发送缓冲区中第一文件的第五数据发送给接收终端220。若在发送终端210在接收到接收终端220反馈的第二缓冲信息后,发送终端210监测到MAC层发送缓冲区的缓冲水位线为1.2MB(达到第一预警水位线1.2MB),且第一文件的待发送数据量为2MB(小于MAC层发送缓冲区的剩余容量2.4MB)时,发送终端210以2.16Gbps(270MB/s)的速率向MAC层发送缓冲区写入第一文件的第四数据,并通过该网卡将MAC层发送缓冲区中第一文件的第四数据发送给接收终端220。上述示例仅仅用于解释本申请,不应构成限定。在一些实施例中,接收终端220可以将IP分片重组缓冲区的缓冲水位线和写缓冲区的缓冲水位线周期性(例如,周期为2ms)发送给发送终端210。发送终端210可以判断MAC层发送缓冲区、IP分片重组缓冲区、写缓冲区这三个缓冲区中是否存在大于等于预警水位线的第二缓冲区(例如,MAC层发送缓冲区)。若存在,则发送终端210可以判断第二缓冲区的剩余容量是否小于第一文件的待发送数据量。当缓冲区B的剩余容量小于第一文件的待发送数据量时,发送终端210可以以第四速率(例如物理层发送速率上限的10%或0),从机身存储中读取第一文件的数据,并下发至MAC层发送缓冲区。之后,发送终端210可以判断该第二缓冲区中的缓冲水位线是否小于等于指定阈值,若是,则发送终端210可以以第一速率(例如物理层发送速率上限的90%)向MAC层发送缓冲区写入第一文件的第四数据,并通过该网卡将MAC层发送缓冲区中第一文件的第四数据发送给接收终端220。其中,第四速率小于第一速率。需要说明的是,上述图10所示实施例的方法步骤和图8所示实施例的方法步骤可以相互结合。本申请的实施例的第二部分中,不限制只通过监控MAC层发送缓冲区、IP分片重组缓冲区和写缓冲区这三个缓冲区中的缓冲水位线,对发送终端210的发送速率进行控制。在一些实施例中,还可以通过监控MAC层发送缓冲区、MAC层接收缓冲区、写缓冲区这三个缓冲区中的缓冲水位线,对发送终端210的发送速率进行控制。在一些实施例中,还可以通过监控MAC层发送缓冲区、IP分片重组缓冲区、MAC层接收缓冲区、写缓冲区这四个缓冲区中的缓冲水位线,对发送终端210的发送速率进行控制。在一些实施例中,还可以通过监控MAC层发送缓冲区和写缓冲区这四个缓冲区中的缓冲水位线,对发送终端210的发送速率进行控制。针对控制发送终端210的发送速率的过程,可以参考前述图7所示实施例,在此不再赘述。图11示出了本申请实施例的第二部分中提供的一种数据传输方法中,发送终端210上MAC层发送缓冲区的缓冲水位线随时间变化的示意图。如图11所示,发送终端210上MAC层发送缓冲区(qdisk_buffer)的缓冲容量可以是10000个数据包,预警水位线可以是7500个数据包。其中,在发送终端210向接收终端220传输第一文件的过程中,MAC层发送缓冲区中的一直有数据,且MAC层发送缓冲区中的缓冲水位线未达到10000,说明发送终端210的发送速率达到了硬件的极限,且MAC层发送缓冲区未溢出丢包。根据实验数据可得,采用本申请实施例提供的一种数据传输方法,发送终端210基于Wi-Fi6网络且开启雷达频段向接收终端220传输20GB的文件时,传输速率平均可以达到210MB/s,可达到网卡物理极限速率的100%,传输速率抖动可以小于10MB/s,丢包数量小于10个。本申请实施例的第二部分提供的一种数据传输的方法,可以通过设置发送端和接收端上指定的一个或多个缓冲区的容量和预警水位线,例如,发送端的MAC层发送缓冲区(qdisk_buffer)、接收端的MAC层发送缓冲区(netdev_backlog_buffer)、接收端的IP分片重组缓冲区(ip_defrag_buffer)和接收端的写缓冲区(write_buffer)。然后,可以根据这一个或多个缓冲区中当前的已缓冲数据量决定发送端的发送速率,实现文件的传输速度接近物理信道极限速率且降低丢包率。下面结合图12-图15介绍本申请实施例的第三部分提供的一种数据存储方法及相关内容。在本申请实施例的第三部分中一些名词的序号不继续沿用本申请实施例其他部分中的序号的顺序,在本申请实施例的第三部分中的名词仅仅在在本申请实施例第三部分中使用。本申请实施例的第三部分提供了一种数据存储方法,包括:终端接收第一文件的数据,并将该第一文件的数据存入网络协议栈接收缓冲区中。该终端从网络协议栈接收缓冲区中取出第一文件的数据直接写入磁盘中。该终端获取该网络协议栈接收缓冲区的剩余缓冲容量、第一文件的待传输数据量、该网络协议栈接收缓冲区的缓冲数据增长速率。若该网络协议栈接收缓冲区的缓冲数据增速率大于0,该终端根据该网络协议栈接收缓冲区的剩余缓冲容量、该第一文件的待传输数据量、该网络协议栈接收缓冲区的缓冲数据增长速率和网卡接收速率,确定出该网络协议栈接收缓冲区的溢出时间和该第一文件的剩余传输时间。若该网络协议栈接收缓冲区的溢出时间小于该第一文件的剩余传输时间,且该网络协议栈接收缓冲区的已缓冲数据量大于第一阈值,该终端将存入该网络协议栈接收缓冲区中的数据转存到用户态缓冲区,并将该用户态缓冲区中的数据经过内核态写缓冲区写入该磁盘中。通过本申请实施例的第三部分提供的一种数据存储方法,终端可以在接收到文件数据后,通过内核态的网络协议栈接收缓冲区中的水位线,采取不同的数据存储路径,这样,可以避免网络协议栈接收缓冲区中溢出而导致丢包,在高速传输文件数据的同时,降低丢包率。首先,介绍TCP传输协议中的拥塞控制基本逻辑。图12示出了TCP传输协议中拥塞控制机制的基本逻辑。如图12所示,在发送端开始将文件数据传输给接收端后,接收端可以统计丢包率,并将丢包率反馈给发送端,发送端可以判断丢包率是否升高,若丢包率升高,则发送端可以降低数据包的发送速率,例如,发送端将发送速率减低为之前的一半,当发送端确定丢包率未升高时,发送端可以提升发送速率,例如,发送端将发送速率比之前的发送速率增加固定值Δ。这样,可以改善网络拥塞程度,网络拥塞程度得到改善后,会影响接收端统计的丢包率。如图13所示,当遇到因空口同频干扰等因素导致丢包时,发送端的拥塞控制策略无法改善空口同频干扰等因素对丢包率的影响。因此,在空口同频干扰等因素的影响下,发送端通过拥塞控制策略将发送速率降低为之前的一半,也不能改善同频干扰对丢包率的影响,并且,在丢包未升高时,发送端将发送速率比之前的发送速率增加固定值Δ过于保守,无法提高数据传输的速率。下面介绍本申请实施例的第三部分提供的一种数据存储系统的架构图。请参考图14,图14示出了本申请实施例提供的一种数据存储系统的架构图。如图14所示,终端100上的数据存储系统可以采用分层架构,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。其中,终端100的数据存储系统可以包括用户态、内核态、硬件层。终端100可以包括有至少三类物理存储介质:磁盘(即,只读存储器(readonlymemory,ROM))505、运行内存(即,随机存储器(randomaccessmemory,RAM))、网卡504。其中,该磁盘505中可以在断电后依然保留数据,可用于保存文档、图片、音乐、视频等文件数据。运行内存可用于操作系统和应用运行时所产生的临时数据。终端100可以将运行内存虚拟划分为用户态和内核态两部分。网卡504中可以包括有存储器,可用于临时保存待发送或已接收到的数据帧。其中,在终端100的数据存储系统中,用户态可以包括有用户态缓冲区501。内核态可以包括有内核态写缓冲区502、网络协议栈接收缓冲区503。硬件层可以包括有网卡504和硬盘505。当终端100的网卡504接收到发送端传输第一文件的数据后,终端100可以从网卡504中将第一文件的数据提取到内核态中的网络协议栈接收缓冲区503中。在一些实施例中,当终端100采用用户数据包协议(userdatagramprotocol,UDP)接收第一文件的数据时,该网络协议栈接收缓冲区503可以为UDP接收缓冲区。终端100可以通过两条路径将网络协议栈接收缓冲区503中缓冲的第一文件的数据,写入至磁盘505中:路径1:终端100可以从网络协议栈接收缓冲区503取出第一文件的数据,直接写入磁盘505中。路径2:终端100可以从网络协议栈接收缓冲区503取出第一文件的数据,转存到用户态缓冲区501中。然后,终端100将用户态缓冲区501中的数据取出转存到内核态写缓冲区502。接着,终端100再将内核态写缓冲区502中数据写入至磁盘505中。在终端100在接收第一文件的数据的过程中,终端100可以随时扩充用户态接收缓冲区501的总缓冲容量,而网络协议栈接收缓冲区503的总缓冲容量固定。终端100采用上述路径1:直接将网络协议栈接收缓冲区503取出第一文件的数据,写入磁盘505中时,减少了终端100拷贝第一文件的数据的次数,可以节约终端100的功耗。本申请实施例的第三部分提供的一种数据存储方法,终端100可以在接收到文件数据后,通过内核态的网络协议栈接收缓冲区中的水位线,采取不同的数据存储路径,这样,可以避免网络协议栈接收缓冲区中溢出而导致丢包,在高速传输文件数据的同时,降低丢包率。下面基于上述图14所示的数据存储系统,介绍本申请实施例的第三部分提供的一种数据存储方法。请参照图15,图15示出了本申请实施例的第三部分提供的一种数据存储方法。如图15所示,该方法可以包括:S1501、终端100接收第一文件的数据,并将第一文件的存入套接字接收缓冲区中。第一文件的发送端可以是其他终端或服务器。当第一文件的发送方为其他终端时,终端100可以与其他终端通过Wi-Fi直连(例如,无线高保真点对点(wirelessfidelitypeertopeer,Wi-FiP2P))、Wi-FisoftAP、超宽带(ultra-wideband,UWB)等通信技术传输第一文件的数据。当发送端为服务器时,终端100可以通过因特网接收到服务器传输第一文件的数据。S1502、终端100从网络协议栈接收缓冲区中取出第一文件的数据直接写入磁盘中。终端100在接收到第一文件的数据后,可以将第一文件的数据存入到网络协议栈接收缓冲区,终端100可以直接从网络协议栈接收缓冲区中取出第一文件的数据,写入磁盘中。具体可以参考前述图4所示实施例中的路径1。S1503、终端100获取网络协议栈接收缓冲区的剩余缓冲容量P、第一文件的待传输数据量FLS、网络协议栈接收缓冲区的缓冲数据增长速率A。在终端100将网络协议栈接收缓冲区中第一文件的数据直接写入磁盘过程中,终端100可以周期性(例如,周期为1ms)获取网络协议栈接收缓冲区的剩余容量P、第一文件的待传输数据FLS、网络协议栈接收缓冲区的缓冲数据增长速率A。其中,终端100可以监测网络协议栈接收缓冲区的缓冲水位线,终端100根据网络协议栈接收缓冲区的总缓冲容量和缓冲水位线(即已缓冲数据量),确定出网络协议栈接收缓冲区的剩余容量P。示例性的,网络协议栈接收缓冲区的总缓冲容量Pmax可以为10兆字节(megabytes,MB),缓冲水位线可以为6MB,终端100可以确定出网络协议栈接收缓冲区的剩余容量P为4MB。示例仅仅用户解释本申请,不应构成限定。在发送端开始向终端100传输第一文件之前,终端100可以接收到发送端发送的第一文件的总数据量。终端100可以统计第一文件的已接收数据量,终端100可以根据第一文件的总数据量和第一文件的已接收数据量,确定出第一文件的待传输数据量FLS。示例性的,第一文件的总数据量可以为400MB,终端100统计到第一文件的已接收数据量为360MB,终端100可以确定出第一文件的待传输数据量FLS可以为40MB。示例仅仅用于解释本申请,不应构成限定。终端100监测网络协议栈接收缓冲区中的缓冲水位线变化,获取到网络协议栈接收缓冲区的缓冲数据增长速率A。在一种可能的实现方式中,终端100可以监测网卡的接收速率rateNet和第一文件的磁盘写入速率rateIO。终端100可以根据网卡的接收速率rateNet和第一文件的磁盘写入速率rateIO,确定出网络协议栈接收缓冲区的缓冲数据增长速率A。示例性的,网卡的接收速率rateNet可以为100兆字节每秒(megabytespersecond,MBps)第一文件的磁盘写入速率rateIO可以为90MBps,终端100可以确定出网络协议栈接收缓冲区的增长速率A为10MBps。示例仅仅用于解释本申请,不应构成限定。S1504、终端100可以判断缓冲数据增长速率A是否大于0,若是,则执行步骤S1505和步骤S1506。其中,当缓冲数据增长速率A大于0时,终端100的网络协议栈接收缓冲区中的已缓冲数据量还在继续增大。当缓冲增长速率A小于等于0时,终端100的网络协议栈接收缓冲区中的已缓冲数据量不继续增长。S1505、终端100根据网络协议栈接收缓冲区的缓冲数据增长速率A和网络协议栈接收缓冲区的剩余缓冲容量P,确定网络协议栈接收缓冲区的溢出时间。网络协议栈接收缓冲区的溢出时间T1可以通过如下公式(10)确定:T1=c*P/A公式(10)其中,0<c≤1,c为保守系数,为了防止网络协议栈接收缓冲区真正溢出,可以让c<1,这样,可以使得终端100确定出的溢出时间T1比网络协议栈接收缓冲区实际的溢出时间提前。示例性的,网络协议栈接收缓冲区的剩余缓冲容量P可以为4MB,网络协议栈接收缓冲区的缓冲数据增长速率A可以为10MBps,c可以取0.9,因此,终端100确定出网络协议栈接收缓冲区的溢出时间T1可以为0.6s。示例仅仅用于解释本申请,不应构成限定。S1506、终端100根据第一文件的待传输数据量FLS和网卡传输速率rateNet,确定第一文件的剩余传输时间。第一文件的剩余传输时间T2可以通过如下公式(11)确定:T2=FLS/rateNet公式(11)示例性的,第一文件的待传输数据量FLS可以为40MB,网卡传输速率rateNet可以为100MBps,因此,终端100可以确定第一文件的剩余传输时间为0.4s。示例仅仅用于解释本申请,不应构成限定。S1507、终端100判断网络协议栈接收缓冲区的溢出时间是否小于第一文件的剩余传输时间。若是,则S1508、终端100判断网络协议栈接收缓冲区的已缓冲数据量P是否大于指定阈值M1。其中,终端100可以根据上述公式(10)和上述公式(11)确定出上述网络协议栈接收缓冲区的溢出时间与第一文件的剩余传输时间之差f1为:f1=c*P/A-FLS/rateNet公式(12)其中,当f1<0时,终端100可以确定网络协议栈接收缓冲区的溢出时间小于第一文件的剩余传输时间。示例性的,保守系数c取0.9,P可以为4MB,网络协议栈接收缓冲区的缓冲数据增长速率A可以为10MBps,第一文件的待传输数据量FLS可以为80MB,网卡传输速率rateNet可以为100MBps,终端100可以计算出网络协议栈接收缓冲区的溢出时间与第一文件的剩余传输时间之差f1为-0.2s(小于0),因此,终端100可以确定出网络协议栈接收缓冲区的溢出时间小于第一文件的剩余时间。示例仅仅用于解释本申请,不应构成限定。当f1≥0时,终端100可以确定网络协议栈接收缓冲区的溢出时间大于等于第一文件的剩余传输时间。示例性的,c取0.9,P可以为4MB,网络协议栈接收缓冲区的缓冲数据增长速率A可以为10MBps,第一文件的待传输海事局了FLS可以为40MB,网卡传输速率rateNet可以为100MBps,终端100可以确定出网络协议栈接收缓冲区的溢出时间与第一文件的剩余传输时间之差f1为0.2s(大于0),因此,终端100可以确定出网络协议栈接收缓冲区的溢出时间大于第一文件的剩余时间。示例仅仅用于解释本申请,不应构成限定。S1509、当网络协议栈接收缓冲区的溢出时间小于第一文件的剩余传输时间且网络协议栈接收缓冲区的已缓冲数据量P大于指定阈值M1时,终端100将网络协议栈接收缓冲区中的已缓冲数据转存到用户态缓冲区,从用户态缓冲区取出数据经过内核态写缓冲区写入磁盘中。指定阈值M1小于网络协议栈接收缓冲区的总缓冲容量。例如,网络协议栈接收缓冲区的总缓冲容量Pmax可以为10MB,指定阈值M1可以为6MB,网络协议栈接收缓冲区的已缓冲数量P可以为6.1MB,因此,终端100可以将网络协议栈接收缓冲区的已缓冲数据。示例仅仅用于解释本申请,不应构成限定。当网络协议栈接收缓冲区的溢出时间小于第一文件的剩余传输时间且网络协议栈接收缓冲区的已缓冲数据量P大于指定阈值M1时,终端100停止从网络协议栈接收缓冲区中取出数据直接写入到用户态缓冲区,从上述图4所示的路径1转换至路径2。其中,在路径2上,终端100可以将网络协议栈接收缓冲区中所有的已缓冲数据转存到用户态缓冲区,然后,终端100从用户态缓冲区中取出数据转存入内核态写缓冲区,最后,终端100再从内核态写缓冲区中的已缓冲数据写入磁盘中。在网络协议栈接收缓冲区的溢出时间小于第一文件的剩余传输时间且网络协议栈接收缓冲区的已缓冲数据量P大于指定阈值M1时,终端100将数据存储路径从上述路径1切换至路径2,由于终端100可以随时增大用户态缓冲区的容量,且终端100从网络协议栈接收缓冲区取出数据转存入用户态缓冲区中的速率比从网络协议栈接收缓冲区取出数据写入磁盘的速率要快,因此,可以防止网络协议栈接收缓冲区溢出丢包。S1510、在终端100从网络协议栈接收缓冲区经过用户态缓冲区和内核态写缓冲区写入磁盘后,终端100可以根据用户态缓冲区的缓冲数据增长速率E和用户态缓冲区的剩余缓冲容量U,确定用户态缓冲区的溢出时间。终端100监测用户缓冲区中的缓冲水位线变化,获取到用户缓冲区中的缓冲数据增长速率E。用户态接收缓冲区的溢出时间T3可以通过如下公式(13)确定:T3=d*U/E公式(13)其中,0<d≤1,d为保守系数,为了防止用户态缓冲区真正溢出,可以让d<1,这样,可以使得终端100确定出的溢出时间T3比用户态缓冲区实际的溢出时间提前。示例性的,用户态缓冲区的剩余缓冲容量U可以为10MB,用户态缓冲区的缓冲数据增长速率E可以为10MBps,d可以取0.9,因此,终端100确定出用户态缓冲区的溢出时间T1可以为0.9s。示例仅仅用于解释本申请,不应构成限定。S1511、终端100判断用户态缓冲区的溢出时间是否小于第一文件的剩余传输时间。若是,则S1512、终端100发送缓冲信息给第一文件的发送端,该缓冲信息用于指示发送端降低第一文件的发送速率。其中,终端100可以根据上述公式(11)和上述公式(12)确定出上述用户态缓冲区的溢出时间与第一文件的剩余传输时间之差f2为:f2=d*U/E-FLS/rateNet公式(14)其中,当f2<0时,终端100可以确定用户态缓冲区的溢出时间小于第一文件的剩余传输时间。示例性的,保守系数d取0.9,U可以为10MB,用户态缓冲区的缓冲数据增长速率E可以为10MBps,第一文件的待传输数据量FLS可以为100MB,网卡传输速率rateNet可以为100MBps,终端100可以计算出用户态缓冲区的溢出时间与第一文件的剩余传输时间之差f1为-0.1s(小于0),因此,终端100可以确定出用户态缓冲区的溢出时间小于第一文件的剩余时间。示例仅仅用于解释本申请,不应构成限定。当f2≥0时,终端100可以确定用户态缓冲区的溢出时间大于等于第一文件的剩余传输时间。示例性的,d取0.9,U可以为10MB,用户态缓冲区的缓冲数据增长速率E可以为10MBps,第一文件的待传输海事局了FLS可以为80MB,网卡传输速率rateNet可以为100MBps,终端100可以确定出用户态缓冲区的溢出时间与第一文件的剩余传输时间之差f1为0.1s(大于0),因此,终端100可以确定出用户态缓冲区的溢出时间大于第一文件的剩余时间。示例仅仅用于解释本申请,不应构成限定。当终端100确定出用户态缓冲区的溢出时间小于第一文件的剩余传输时间,即表示终端用户态缓冲区在第一文件传输完之前,很有可能会溢出,因此,终端100可以发送缓冲信息给第一文件的发送端,该缓冲信息用于指示第一文件的发送端降低第一文件的发送速率。S1513、当用户态缓冲区的溢出时间小于第一文件的剩余传输时间,且网络协议栈接收缓冲区的已缓冲数据量为0时,终端100可以根据网络协议栈接收缓冲区的总缓冲容量Pmax、用户态缓冲区的缓冲数据增长速率E,确定出网络协议栈接收缓冲区的最大溢出时间。其中,由于终端100将网络协议栈接收缓冲区中的缓冲数据转存入用户态缓冲区的速率比网卡速率rateNet大,因此,网络协议栈接收缓冲区的缓冲数据会及时被终端100取出转存入用户态缓冲区,网络协议栈接收缓冲区的已缓冲数据量会降到0。网络协议栈接收缓冲区的最大溢出时间Tmax可以通过如下公式(15)确定:Tmax=Pmax/E公式(15)示例性的,Pmax可以为10MB,E可以为10Mbps,即终端100可以根据上述公式(15)确定Tmax可以为1s。示例仅仅用于解释本申请,不应构成限定。S1514、终端100判断网络协议栈接收缓冲区的最大溢出时间是否大于等于第一文件的剩余传输时间。当网络协议栈接收缓冲区的最大溢出时间大于等于第一文件的剩余传输时间时,终端100从网络协议栈接收缓冲区中取出第一文件的数据直接写入磁盘中。终端100可以根据上述公式(11)和上述公式(15)确定出上述网络协议栈接收缓冲区的溢出时间与第一文件的剩余传输时间之差f3为:f3=Pmax/E-FLS/rateNet公式(16)当f3<0时,终端100可以确定出网络协议栈接收缓冲区的最大溢出时间小于第一文件的剩余传输时间。示例性的,Pmax可以为10MB,用户态缓冲区的缓冲数据增长速率E可以为10Mbps,第一文件的待传输数据量FLS可以为110MB,rateNet可以为100MBps,因此,终端100可以确定出网络协议栈接收缓冲区的溢出时间与第一文件的剩余传输时间之差f3为-0.1s(小于0),因此,终端100可以确定出网络协议栈接收缓冲区的最大溢出时间小于第一文件的剩余时间。示例仅仅用于解释本申请,不应构成限定。当f3≥0时,终端100可以确定网络协议栈接收缓冲区的最大溢出时间大于等于第一文件的剩余传输时间。示例性的,Pmax可以为10MB,用户态缓冲区的缓冲数据增长速率E可以为10Mbps,第一文件的待传输数据量FLS可以为90MB,rateNet可以为100MBps,因此,终端100可以确定出网络协议栈接收缓冲区的溢出时间与第一文件的剩余传输时间之差f3为0.1s(小于0),因此,终端100可以确定出网络协议栈接收缓冲区的最大溢出时间大于等于第一文件的剩余时间。示例仅仅用于解释本申请,不应构成限定。当网络协议栈接收缓冲区的最大溢出时间大于等于第一文件的剩余传输时间时,终端100停止将网络协议栈接收缓冲区的缓冲数据转存到用户态缓冲区中,此时,用户态缓冲区中无数据进入只有数据被终端100取出经过内核态写缓冲区写入到磁盘中。终端100可以等到用户态缓冲区中的已缓冲数据全部写入到磁盘中时,从网络协议栈接收缓冲区中取出数据直接写入到磁盘中。在一些实施例中,在终端100采用上述路径1从网络协议栈接收缓冲区中取出第一文件的数据写入磁盘后,终端100可以获取网路协议栈接收缓冲区的总缓冲容量Pmax,网卡接收速率rateNet,第一文件的待传输数据量FLS、网络协议栈接收缓冲区的缓冲数据增长速A。终端100可以根据网卡接收速率rateNet第一文件的待传输数据量FLS、网络协议栈接收缓冲区的缓冲数据增长速A,确定出网络协议栈接收缓冲区的所需缓冲容量Pn。当所需缓冲容量Pn大于网络协议栈接收缓冲区的总缓冲容量Pmax时,终端100可以同时使用上述路径1和路径2将网络协议栈接收缓冲区中的已缓冲数据写入磁盘中。其中,终端100可以将存入网络协议栈接收缓冲区中第一部分数据,并通过路径1将第一部分数据写入磁盘中。终端100将存入网络协议栈接收缓冲区中第二部分数据,并通过路径2将第二部分数据写入至磁盘中。其中,第一部分数据的数据量占网络协议栈接收缓冲区存入数据量的比例为β。终端100可以通过公式(17)确定出网络协议栈接收缓冲区的所需缓冲容量Pn:c*Pn/A-FLS/rateNet=0公式(17)终端100可以通过公式(18)确定出第一部分数据的数据量与网络协议栈接收缓冲区的存入数据量的占比为β:β=(Pn-Pmax)/Pmax公式(18)其中,当β>0时,终端100可以确定网络协议栈接收缓冲区的所需缓冲容量Pn大于网络协议栈接收缓冲区的总缓冲容量Pmax。示例性的,网络协议栈接收缓冲区的总缓冲容量Pmax为8MB,保守系数c可以取0.9,网络协议栈接收缓冲区的缓冲数据增长速率A可以为10MBps,第一文件的待传输数据量FLS可以为90MB,网卡传输速率rateNet可以为100MBps。终端100可以确定出β为0.2(大于0)。因此,终端100可以将网络协议栈接收缓冲区的存入数据中20%的数据通过上述路径2写入磁盘中。示例仅仅用于解释本申请,不应限定。当β≤0时,终端100可以确定网络协议栈接收缓冲区的所需缓冲容量Pn小于等于网络协议栈接收缓冲区的总缓冲容量Pmax。示例性的,网络协议栈接收缓冲区的总缓冲容量Pmax为12MB,保守系数c可以取0.9,网络协议栈接收缓冲区的缓冲数据增长速率A可以为10MBps,第一文件的待传输数据量FLS可以为90MB,网卡传输速率rateNet可以为100MBps。终端100可以确定出β为-0.17(小于0)。因此,终端100可以将网络协议栈接收缓冲区中的存入数据直接通过上述路径1写入至磁盘中。示例仅仅用于解释本申请,不应限定。本申请实施例的第三部分提供的一种数据存储方法,终端100可以在接收到文件数据后,通过内核态的网络协议栈接收缓冲区中的水位线,采取不同的数据存储路径,这样,可以避免网络协议栈接收缓冲区中溢出而导致丢包,在高速传输文件数据的同时,降低丢包率。下面结合图16-图27介绍本申请实施例的第四部分提供的一种多路径数据预取方法及相关内容。在本申请实施例的第四部分中一些名词的序号不继续沿用本申请实施例其他部分中的序号的顺序,在本申请实施例的第四部分中的名词仅仅在在本申请实施例的第四部分中使用。随着宽带接入技术的发展,具有多个网络接口的终端越来越普及。比如大多数智能手机同时具备无线局域网(wirelesslocalareanetwork,WLAN)和移动蜂窝网络的联网功能。又例如,部分智能手机可以同时支持双移动蜂窝网络的联网功能和/或双WLAN的联网功能。又例如,笔记本电脑通常设有有限局域网适配器和一个无线局域网适配器。但是,传统的传输控制协议(transmissioncontrolprotocol,TCP)是一种一端对一端的传输协议,不能同时使用多对网络连接。因此,不能充分利用当前终端多网络接口的优势,造成很多网络带宽资源的浪费。目前,终端可以允许无线保真(wirelessfidelity,Wi-Fi)网络和蜂窝网络同时使用,提升通信体验,例如在观看流媒体视频时,可以通过同时使用Wi-Fi网络和蜂窝网络,以提供更大的聚合带宽,使得下载速率更高,卡顿更少,流媒体播放更流畅。其中,多路径传输控制协议(multipathtransmissioncontrolprotocol,MPTCP)是基于多网络接口技术,同时使用多条路径协同工作和分发数据的传输层协议。它可以充分利用多网络接口的空闲资源,提高端到端的传输吞吐率,增加网络资源利用率。本申请实施例的第四部分提供了一种多路径数据预取方法,包括:终端获取该终端的第一应用针对第一URI发起的第一HTTP请求,该第一HTTP请求用于向服务器请求第一数据。该终端生成L个第二HTTP请求,该L个第二HTTP请求用于向该服务器请求第二数据,其中,该第二数据包括该第一数据且该第二数据的数据量大于该第一数据的数据量,L为正整数。该终端将该L个第二HTTP请求分别通过L个网络路径发送给该服务器。该终端接收该服务器在该L个网络路径上发送的L个第一HTTP响应,该L个第一HTTP响应包括有该第二数据。该终端从该第二数据中取出该第一数据,并将该第一数据通过HTTP响应返回给该第一应用。该终端接收到该第一应用针对该第一URI发起的第三HTTP请求,该第三HTTP请求用于向该服务器请求第三数据。若该第二数据包括该第三数据,该终端从该第二数据中取出该第三数据,并将该第三数据通过HTTP响应返回给该第一应用。通过本申请实施例的第四部分提供的一种多路径数据预取方法,终端可以当应用业务请求第一数据量的数据时,向服务器预取第二数据量的数据,其中,第二数据量大于第一数据量。然后,终端接收到服务器返回的第二数据量的数据后,可以先将第二数据量中的第一数据量的数据返回给应用。然后,将剩余(第二数据量-第一数据量)的数据存到预取缓冲区。当应用下次请求剩余的(第二数据量-第一数据量)字节的数据时,终端可以直接从预取缓冲区中提取该剩余的(第二数据量-第一数据量)字节的数据给到应用。提高了终端与服务器之间的网络路径的带宽利用率,并且,当应用频繁访问同一URI地址上的不同范围的数据时,可以节省应用获取到数据的时间。如图16所示,终端与服务器需要同时支持MPTCP。终端100上的应用(application,APP)可以通过MPTCP的代理(Proxy)与服务器分别在多个网络路径中建立多条TCP连接。例如,MPTCP的代理可以在蜂窝网络上与服务器建立一条TCP连接,同时在Wi-Fi网络中与服务器建立另一条TCP连接。这样,终端可以同时在蜂窝网络和Wi-Fi网络上与服务器进行数据传输。但是,由于使用MPTCP,需要让终端和服务器同时支持MPTCP,部署难度大,对于不支持MPTCP的服务器,终端就无法基于同时使用Wi-Fi网络和蜂窝网络进行访问了。如图17所示,多路径超文本传输协议(multipathhypertexttransferprotocol,MPHTTP)可以将应用发起的原始超文本传输协议(hypertexttransferprotocol,HTTP)请求,根据原始HTTP请求的请求范围进行拆分,拆分成多个子HTTP请求。MPHTTP可以让终端100在多个网络路径上将这多个子HTTP请求发给服务器200,以提供最大的聚合带宽。由于终端100和服务器200都支持HTTP,服务器200在接收到HTTP请求后,即会将终端100请求的数据通过HTTP响应返回给终端100。因此,无需改进现有的服务器200,即可实现终端100和服务器200之间的多路径传输。图18示出了终端100通过MPHTTP与服务器200之间进行多径传输的系统架构。如图18所示,终端可以包括应用层和内核层。终端的应用层可以包括应用上层业务逻辑模块、多路径超文本传输协议(MPHTTP)库(例如,基于OKHTTP库的改造库)、HTTP请求拆分模块。终端上可以通过多个网络路径与服务器进行通信,例如,蜂窝网络、无线局域网(WLAN)1和无线局域网(WLAN)2。其中,应用上层业务逻辑模块可以集成MPHTTP库。当应用下发针对第一统一资源标识符(uniformresourceidentifier,URI)地址的数据获取请求下发给MPHTTP库时,MPHTTP库可以根据针对第一URI地址的数据获取请求,生成原始HTTP请求,并下发给HTTP请求拆分模块。其中,原始HTTP请求的中的字节范围(byterange)字段可以包括有该原始HTTP请求的数据请求范围,例如,0-8999。HTTP请求拆分模块可以根据网络路径的数量,基于原始HTTP请求的字节范围将原始HTTP请求拆分成多个HTTP请求。例如,终端可以通过3条网络路径(例如,蜂窝网络、WLAN1和WLAN2)可以访问到服务器,原始HTTP请求的字节范围可以为0-8999。HTTP请求拆分模块可以将原始HTTP请求拆分成3个HTTP请求(包括HTTP请求1、HTTP请求2和HTTP请求3)。其中,HTTP请求1的字节范围可以为0-2999,HTTP请求2的字节范围可以为3000-5999,HTTP请求3的字节范围可以为6000-8999。HTTP请求拆分模块可以通过套接字(socket)系统调用将多个HTTP请求分别通过TCP/IP协议栈的封装,在多个网络路径上发送给服务器。例如,HTTP请求拆分模块在将原始HTTP请求拆分成3个HTTP请求(包括HTTP请求1、HTTP请求2和HTTP请求3)后,终端可以通过蜂窝网络与服务器建立一个TCP连接,然后,终端可以将HTTP请求1通过蜂窝网络发送给服务器。服务器在接收到终端通过蜂窝网络发送的HTTP请求1后,可以将HTTP请求1中URI地址对应的数据资源中第0-2999字节的数据,封装在HTTP响应1中,通过蜂窝网络的网络路径返回给终端。当终端接收到HTTP响应1后,终端与服务器之间在蜂窝网络上建立的TCP连接断开。终端可以通过无线局域网1与服务器建立一个TCP连接,然后,终端可以将HTTP请求2通过蜂窝网络发送给服务器。服务器在接收到终端通过蜂窝网络发送的HTTP请求2后,可以将HTTP请求2中URI地址对应的数据资源中第3000-5999字节的数据,封装在HTTP响应2中,通过无线局域网1的网络路径返回给终端。当终端接收到HTTP响应2后,终端与服务器之间在无线局域网1上建立的TCP连接断开。终端可以通过无线局域网2与服务器建立一个TCP连接,然后,终端可以将HTTP请求3通过蜂窝网络发送给服务器。服务器在接收到终端通过蜂窝网络发送的HTTP请求3后,可以将HTTP请求3中URI地址对应的数据资源中第6000-8999字节的数据,封装在HTTP响应3中,通过无线局域网2的网络路径返回给终端。当终端接收到HTTP响应3后,终端与服务器之间在无线局域网2上建立的TCP连接断开。图19示出了终端与服务器通过MPHTTP进行多径传输的流程示意图。如图19所示,终端可以通过蜂窝网络、WLAN1、WLAN2这三个网络路径访问到服务器。终端与服务器通过MPHTTP进行多径传输的流程可以如下:1、终端上的应用发起原始HTTP请求,例如,该原始HTTP请求的字节范围可以为0-8999。2、终端上的应用基于原始HTTP请求的字节范围,将原始HTTP请求拆分为3个HTTP请求(例如,HTTP请求1、HTTP请求2和HTTP请求3)。其中,HTTP请求1的字节范围可以为0-2999,HTTP请求2的字节范围可以为3000-5999,HTTP请求3的字节范围可以为6000-8999。3、终端将HTTP请求1通过蜂窝网络的网络路径发送给服务器。4、终端将HTTP请求2通过WLAN1的网络路径发送给服务器。5、终端将HTTP请求3通过WLAN2的网络路径发送给服务器。6、服务器在接收到HTTP请求1后,可以发送HTTP成功状态响应码1(例如,206partialcontentresponse)通过蜂窝网络的网络路径发送给终端。其中,该HTTP成功状态响应码1可用于表示该HTTP请求1已请求内容长度为3000字节的数据成功。7、服务器可以将HTTP请求1的响应数据1(字节范围:0-2999的数据)发送给终端。8、服务器在接收到HTTP请求2后,可以发送HTTP成功状态响应码2(例如,206partialcontentresponse)通过WLAN1网络的网络路径发送给终端。其中,该HTTP成功状态响应码2可用于表示该HTTP请求2已请求内容长度为3000字节的数据成功。9、服务器可以将HTTP请求2的响应数据2(字节范围:3000-5999的数据)发送给终端。10、服务器在接收到HTTP请求3后,可以发送HTTP成功状态响应码3(例如,206partialcontentresponse)通过WLAN2网络的网络路径发送给终端。其中,该HTTP成功状态响应码3可用于表示该HTTP请求3已请求内容长度为3000字节的数据成功。11、服务器可以将HTTP请求2的响应数据3(字节范围:6000-8999的数据)发送给终端。目前,终端上的应用在向服务器请求流媒体等数据时,先在指定的网络路径上与服务器上建立一个长连接,然后,终端通过HTTP请求每次向服务器请求指定大小的分片数据,例如,分片数据的大小可以为0.2MB-2MB不等。而终端可以同时通过多条网络路径向服务器请求数据,加大了终端与服务器之间传输网络的带宽。而针对大带宽的网络环境,当分片数据太小时,带宽利用率会降低。示例性的,终端上的应用(例如视频应用)每次向服务器请求分片数据的数据量可以是2MB。其中,终端每次发送HTTP请求给服务器需要0.5个往返时延(round-triptime,RTT)。然后,服务器会将终端请求的数据返回给终端。其中,在带宽较小的网络路径,理论带宽利用率较高。例如,长期演进(longtermevolution,LTE)网络路径下,0.5RTT为30ms,带宽为5MBps,服务器将2MB的分片数据传输给终端,耗时为400ms,因此,LTE网络路径下的带宽利用率可以为:400/(400 30)=93%。如图20所示,终端上的应用(例如视频应用)每次向服务器请求分片数据的数据量可以是2MB。其中,终端每次发送HTTP请求给服务器需要0.5个往返时延(round-triptime,RTT)。在100MBps(为0.8Gbps)带宽的网络路径下,服务器向终端传输分片数据耗时仅为20ms,其中,在100MBps带宽的网络下,终端与服务器之间的往返时延RTT可以达到40ms,0.5RTT为20ms。例如,终端将应用发起的HTTP请求1(字节范围:0-2MB)发送给服务器,耗时20ms,服务器在接收到HTTP请求1后将分片数据1传输给终端又耗时20ms。接着,终端可以将应用发起的HTTP请求2(字节范围:2MB-4MB)发送给服务器,耗时20ms,服务器在接收到HTTP请求2后将分片数据2传输给终端又耗时20ms。因此,理论带宽利用率为50%。这意味着对于Gbps级的传输网络路径,一半以上的时间都浪费在HTTP请求发给服务器的过程,带宽利用率低。如图21所示,带宽利用率与分片数据的数据量、网络带宽和网络的往返时延之间的关系可以如下:R=Trans/(Trans 0.5RTT)公式(19)Trans=max{M/B,0.5RTT}公式(20)其中,上述公式(19)和公式(20)中,R为带宽利用率,Trans为分片数据传输耗时,M为分片数据的数据量,B为网络带宽,RTT为网络的往返时延。当网络路径的带宽一定,分片数据的数据量越小,终端通过该网络路径向服务器请求分片数据时的理论带宽利用率更低。当分片数据的数据量一定,网络路径的带宽越大,终端通过该网络路径向服务器请求分片数据时的理论带宽利用率更低。示例性的,对于网络带宽为100MBps,RTT为40ms的网络路径为例。当带宽利用率为90%以上时,则分片数据的数据量需要≥18MB,当带宽利用率为75%以上时,则分片数据的数据量需要≥15MB以上。当分片数据的数据量≤10MB时,则带宽利用率不会高于50%。因此,本申请实施例的第四部分提供了一种多路径数据预取方法,终端可以当应用业务请求第一数据量的数据时,向服务器预取第二数据量的数据,其中,第二数据量大于第一数据量。然后,终端接收到服务器返回的第二数据量的数据后,可以先将第二数据量中的第一数据量的数据返回给应用。然后,将剩余(第二数据量-第一数据量)的数据存到预取缓冲区。当应用下次请求剩余的(第二数据量-第一数据量)字节的数据时,终端可以直接从预取缓冲区中提取该剩余的(第二数据量-第一数据量)字节的数据给到应用。提高了终端与服务器之间的网络路径的带宽利用率,并且,当应用频繁访问同一URI地址上的不同范围的数据时,可以节省应用获取到数据的时间。示例性的,如图22A所示,终端可以通过一条网络路径向服务器提取预取数据。其中,步骤包括:1、终端上的应用发送数据请求1(请求范围为:1-100)给全网聚合模块(linkturbo)。2、全网聚合模块在接收到数据请求1后,可以加大数据请求1的请求范围,然后基于MPHTTP协议选择合适的一条网络路径发送HTTP请求1(请求范围:1-200)给服务器。3、服务器在接收到HTTP请求1后,通过HTTP响应1返回请求的数据(数据范围:1-200)给到全网聚合模块。4、全网聚合模块将响应数据1返回给应用,其中,该响应数据1中的数据范围为1-100。5、全网聚合模块将剩余数据存入到终端本地的预取缓冲区,其中,剩余数据的数据范围为101-200。6、应用下发数据请求2给全网聚合模块,其中,数据请求2请求的数据范围为101-200。7、当全网聚合模块接收到应用下发的数据请求2时,全网聚合模块可以从判断预取缓冲区中是否存有该数据请求2请求的数据,若是,则数据请求2命中预取缓冲区。8、当数据请求2命中预取缓冲区时,应用可以直接从预取缓冲区中获取到数据请求2的响应数据2(数据范围:101-200)。又示例性的,如图22B所示,终端可以通过多条网络路径向服务器提取预取数据。其中,步骤包括:1、终端上的应用发送数据请求1(请求范围为:1-100)给全网聚合模块。2-3、全网聚合模块在接收到数据请求1后,可以扩大数据请求1的请求范围至1-200。然后,全网聚合模块可以基于MPHTTP协议选择合适的多条(例如两条)网络路径,分别在网络路径1(例如蜂窝网络)上发送HTTP请求1(请求范围:1-50)给服务器,在网络路径2(例如WLAN网络)上发送HTTP请求2(请求范围:51-200)给服务器。4、全网聚合模块接收到服务器通过网络路径1返回的HTTP响应1,其中,HTTP响应1中包括有数据范围1-50的数据。5、全网聚合模块接收到服务器通过网络路径2返回的HTTP响应2,其中,HTTP响应1中包括有数据范围51-200的数据。6、全网聚合模块在接收到HTTP响应1和HTTP响应2后,可以将响应数据1返回给应用,其中,响应数据1的数据范围为1-100。7、全网聚合模块将剩余数据存入到终端本地的预取缓冲区,其中,剩余数据的数据范围为101-200。8、应用下发数据请求2给全网聚合模块,其中,数据请求2请求的数据范围为101-200。9、当全网聚合模块接收到应用下发的数据请求2时,全网聚合模块可以从判断预取缓冲区中是否存有该数据请求2请求的数据,若是,则数据请求2命中预取缓冲区。10、当数据请求2命中预取缓冲区时,应用可以直接从预取缓冲区中获取到数据请求2的响应数据2(数据范围:101-200)。通过本申请提供的一种多路径数据预取方法,终端向服务器请求的数据分片比应用请求的数据分片大,终端与服务器之间的网络路径的带宽利用率会增高,并且,当应用频繁访问同一URI地址上的不同范围的数据时,可以节省应用获取到数据的时间。例如,视频播放等场景,应用需要频繁获取数据流,通过本申请提供的数据预取方法,能够提高视频播放时平滑度。下面介绍本申请实施例的第四部分提供的一种终端100的软件系统架构。请参考图23,图23示出了本申请实施例提供的终端100的软件系统架构。如图23所示,该终端100的软件系统可以采用分层架构,分层架构可以将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。其中,该终端100的软件系统可以包括应用(application)层、用户空间(userspace)和内核(kernel)层。应用程序层可以包括应用901。例如,视频应用、音乐应用等。其中,应用901通过原始HTTP请求向服务器请求分片数据时,可以通TCP端口80向服务器发送原始HTTP请求。用户空间可以包括有基于缓冲池调度的多个功能模块、流智能(flowintelligence)模块907。其中,基于缓冲池调度的多个功能模块可以包括缓冲管理模块902、智能预取模块903、高性能业务请求重排模块904、基于缓冲的多径调度模块905、路径亲和性分析模块906。缓冲管理模块902,可用于在网络过滤模块(例如,netfiler)过滤TCP端口80中数据包的过程中,通过软件接口(例如,iptables)从TCP端口80中导流出上层应用发送的原始HTTP请求。缓冲管理模块902,还可用于在TCP端口80中导流出上层应用发送的原始HTTP请求之后,分析原始HTTP请求是否命中预取缓冲区(即,预取缓冲区中是否包括有原始HTTP请求所请求的数据)。当原始HTTP请求命中预取缓冲区时,缓冲管理模块902可以直接将预取缓冲区中该原始HTTP请求的请求范围对应的数据返回给应用。当原始HTTP请求击穿预取缓冲区(即原始HTTP请求中的请求范围大于预取缓冲区中已缓存的数据量)时,缓冲管理模块902可以将缓冲击穿原始请求的信息通知给高性能业务重排模块904。缓冲管理模块902还可用于将原始HTTP请求发送给智能预取模块903。智能预取模块903可以根据预取缓冲区的缓冲水位线以及应用901访问同一URI地址的次数等信息,将预取请求的触发指令发给高性能业务请求重排模块904。高性能业务请求重排模块904,可用于在接收到该预取请求的触发指令后,根据上一次预取值,以及网络路径的带宽/时延等数据,确定出本次预取请求的数据请求范围。高性能业务请求重排模块904,还可用于将原始HTTP请求或重排后的HTTP请求发送给基于缓冲的多径调度模块905。路径亲和性分析模块906,可用于将根据流智能模块907发送的业务感知信息(例如业务流服务质量、业务流类型等)/网络感知信息(例如,网络路径数量以及各网络路径的传输质量)等),分析出终端上每条网络路径的性能信息。基于缓冲的多径调度模块905,可用于根据网络路径的性能信息,确定出多径调度策略(即使用哪些路径请求数据,每条路径上请求多少数据)。基于缓冲的多径调度模块905,可可用于基于确定出的多径调度策略,通过MPHTTP将原始HTTP请求/重排后的HTTP请求拆分成多个子HTTP请求,并通过多个网络路径(例如,双Wi-Fi网络、双蜂窝网络等等)发送给服务器。流智能模块907,可用于进行DNS解析(DNSparsing)、manifest文件解析、流服务质量探测(flowQoSprobing)、流分类(flowclassification),并得到业务感知/网络感知信息等等。流智能模块907,可以将到业务感知信息/网络感知信息发送给路径亲和性分析模块906。内核层可以包括内核传输控制协议/网际协议(transmissioncontrolprotocol/Internetprotocol,TCP/IP)协议栈。其中,TCP/IP协议栈中包括有TCP端口80。在本申请实施例中,基于缓冲池调度的多个功能模块可以是上述图22A或图22B所示实施例中的全网聚合模块。对基于缓冲池调度的多个功能模块的其他功能说明,还可以参考前述图22A或图22B所示实施例中针对全网聚合模块的文字说明,在此不再赘述。下面介绍本申请实施例的第四部分提供的一种多路径数据预取方法。请参考图24,图24示出了本申请实施例提供的第一应用首次获取服务器上数据的方法流程示意图。如图24所示,该方法包括如下步骤:S2401、终端100上的第一应用针对第一URI首次发起针对第一分片数据的第一获取请求。其中,第一URI对应服务器上一种数据资源(例如,HTML文档、图像、视频片段、程序等资源)的存储位置。URI的结构组成包括访问资源的命名机制、存放资源的主机名、资源自身的名称。其中,访问资源的命名机制可以包括http、ftp、mailto、file等等。该第一URI具体也可以是一种统一资源定位符(uniformresourcelocator,URL)。第一获取请求中包括有该第一分片数据的数据范围。示例性的,第一应用可以是视频应用,第一URI可以为“http://huawei.himovie.com/movie/RomeoAndJuliet.rmvb”,第一URI对应的资源访问机制可以是HTTP协议访问机制,第一URI对应的资源位于“huawei.himovie.com”的服务器上,第一URI对应资源的名称可以为“/movie/RomeoAndJuliet.rmvb”。第一分片数据的数据范围可以是0-2MB。示例仅仅用于解释本申请不应构成限定。S2402、响应于第一获取请求,终端100开启所有网络通信模块、并根据第一URI的域名在所有网路路径上发送DNS请求。其中,网络通信模块可以包括蜂窝网络通信模块和WLAN通信模块。其中,蜂窝网络通信模块可以实现单蜂窝网络通信或双蜂窝网络通信。WLAN通信模块可以实现单Wi-Fi网络通信或双Wi-Fi网络通信。终端100在开启所有网路模块后,终端100可以获取第一URI的域名(也即主机名),并在所有网络路径上发送DNS请求。该DNS请求可用于终端100获取第一URI对应服务器的IP地址。例如,终端100上的网络路径可以包括有蜂窝网络路径1、蜂窝网络路径2、Wi-Fi网络路径1、Wi-Fi网络路径2。终端100可以分别在蜂窝网络路径1、蜂窝网络路径2、Wi-Fi网络路径1、Wi-Fi网络路径2上发送DNS请求。S2403、终端100接收到N个网络路径上返回的DNS响应,并从N个DNS响应中解析出服务器在N个网络路径上对应的IP地址。其中,N为正整数。在终端100向所有网络路径发送DNS请求后,终端100在某一网络路径上没有接收到DNS响应时,终端100可以确定该没有接收到DNS响应的网络路径不可用,即终端100无法通过该网络路径访问到第一URI对应的服务器。当终端100接收到从某一网络路径返回的DNS响应时,终端100可以确定该接收到DNS响应的网络路径可用,即终端100可以通过该网络路径访问到第一URI对应的服务器。终端100从不同网络路径上获取到第一URI对应服务器的IP地址可以相同。在一种可能的实现方式中,终端100从不同网络路径上获取到第一URI对应服务器的IP地址可以有不同。例如,终端100从蜂窝网络路径1上获取到的第一URI对应服务器的IP地址可以为IP地址_1。终端100从蜂窝网络路径2上获取到的第一URI对应服务器的IP地址可以为IP地址_2。终端100从Wi-Fi网络路径1上获取到的第一URI对应服务器的IP地址可以为IP地址_3。终端100从Wi-Fi网络路径2上获取到的第一URI对应服务器的IP地址可以为IP地址_4。上述示例仅仅用于解释本申请,不应构成限定。S2404、终端100上的第一应用根据第一URI和默认网络路径上服务器的IP地址,发起初次HTTP请求。其中,初次HTTP请求的请求范围与上述第一获取请求的请求范围相同。其中,初次HTTP请求的byterange字段可包括有该初次HTTP请求的请求范围。当终端100开启所有网络通信模块后,终端100可以预设有一条默认的网络路径。终端100上的第一应用在发起初次HTTP请求时,初次HTTP请求中的目的IP地址为终端100在该默认的网络路径上获取到第一URI对应服务器的IP地址。示例性的,终端100可以通过蜂窝网络路径1、蜂窝网络路径2、Wi-Fi网络路径1和Wi-Fi网路路径2,访问服务器。终端100上预设的默认网络路径可以是Wi-Fi网路路径1,终端100可以将Wi-Fi网络路径1上的服务器的IP地址_3作为该初次HTTP请求的目的IP地址。S2405、终端100对初次HTTP请求的请求范围拆分成N个范围长度相同的子请求范围。其中,初次HTTP请求的请求范围与第一分片数据的数据范围相同。示例性的,初次HTTP请求的请求范围可以是0-2MB。终端100上可以通过蜂窝网络路径1、蜂窝网络路径2、Wi-Fi网络路径1和Wi-Fi网络路径2这4个网络路径访问到第一URI对应的服务器。终端100可以将初次HTTP请求的请求范围拆分为4个请求范围长度相同的子请求范围,例如,子请求范围1为第0-0.5MB、子请求范围2为第0.5MB-1MB、子请求范围3为第1MB-1.5MB、子请求范围4为第1.5MB-2MB。上述示例仅仅用于解释本申请,不应构成限定。S2406、终端100根据第一URI、N个子请求范围和N个网络路径上服务器的IP地址,生成N个HTTP请求,并将N个HTTP请求分别通过N个网络路径发送给服务器。需要说明的是,N个HTTP请求在本申请实施例中可以被称为N个第五HTTP请求。示例性的,终端100上可以通过蜂窝网络路径1、蜂窝网络路径2、Wi-Fi网络路径1和Wi-Fi网络路径2这4个网络路径访问到第一URI对应的服务器。其中,蜂窝网络路径1上服务器的IP地址可以是IP地址_1、蜂窝网络路径2上服务器的IP地址可以是IP地址_2、Wi-Fi网络路径1上服务器的IP地址可以是IP地址_3、Wi-Fi网络路径2上服务器的IP地址可以是IP地址_4。子请求范围1为第0-0.5MB、子请求范围2为第0.5MB-1MB、子请求范围3为第1MB-1.5MB、子请求范围4为第1.5MB-2MB。上述示例仅仅用于解释本申请,不应构成限定。N个HTTP请求、N个子请求范围、服务器IP地址、网路路径之间的对应关系可以如下表1所示:表1由上表1可知,终端100可以将HTTP请求1在蜂窝网络路径1上发送给第一URI对应的服务器,其中,该HTTP请求1的子请求范围1为第0-0.5MB,HTTP请求1的目的IP地址为IP地址_1。终端100可以将HTTP请求2在蜂窝网络路径2上发送给第一URI对应的服务器,其中,该HTTP请求2的子请求范围2为第0.5-1.0MB,HTTP请求2的目的IP地址为IP地址_2。终端100可以将HTTP请求3在Wi-Fi网络路径1上发送给第一URI对应的服务器,其中,该HTTP请求3的子请求范围3为第1-1.5MB,HTTP请求3的目的IP地址为IP地址_3。终端100可以将HTTP请求1在蜂窝网络路径1上发送给第一URI对应的服务器,其中,该HTTP请求4的子请求范围4为第1.5-2MB,HTTP请求4的目的IP地址为IP地址_4。上述表1仅仅用于解释本申请,不应构成限定。S2407、终端100接收到服务器在N个网络路径返回的N个HTTP响应,并将N个HTTP响应中的第一分片数据,返回给第一应用。需要说明的是,第一分片数据在本申请实施例中可以被称为第五数据。服务器接收到终端100发送的HTTP请求后,可以将该HTTP请求所请求的数据封装在HTTP响应中,按照该HTTP请求的原路径返回给终端100。例如,终端100将HTTP请求1通过蜂窝网络路径1发送给服务器,将HTTP请求2通过Wi-Fi网络路径1发送给服务器,将HTTP请求3通过Wi-Fi网络路径1发送给服务器,将HTTP请求4通过Wi-Fi网络路径2发送给服务器。其中,HTTP请求1用于请求第一URI对应资源的第0-0.5MB范围内的数据,HTTP请求2用于请求第一URI对应资源的0.5MB-1MB范围内的数据,HTTP请求3用于请求第一URI对应资源的第1MB-1.5MB范围内的数据,HTTP请求4用于请求第一URI对应资源的第1.5MB-2MB范围内的数据。服务器在接收到HTTP请求1后,可以将第一URI对应资源的第0-0.5MB的数据封装在HTTP响应1中,并通过蜂窝网络路径1将该HTTP响应1返给终端100。服务器在接收到HTTP请求2后,可以将第一URI对应资源的第0.5MB-1MB的数据封装在HTTP响应2中,并将HTTP请求2通过蜂窝网络路径2返回给终端100。服务器在接收到HTTP请求3后,可以将第一URI对应资源的第1MB-1.5MB的数据封装在HTTP响应3中,并将HTTP请求3通过Wi-Fi网络路径1返回给终端100。服务器在接收到HTTP请求4后,可以将第一URI对应资源的第1.5MB-2MB的数据封装在HTTP响应4中,并将HTTP请求4通过Wi-Fi网络路径2返回给终端100。终端100在接收到HTTP响应1后,可以从HTTP响应1取出第一URI对应资源的第0-0.5MB的数据。终端100在HTTP响应2后,可以从HTTP响应2取出第一URI对应资源的第0.5MB-1MB的数据。终端100在HTTP响应3后,可以从HTTP响应3中取出第一URI对应资源的第1MB-1.5MB的数据。终端100在HTTP响应4后,可以从HTTP响应4取出第一URI对应资源的第1.5MB-2MB的数据。终端100可以将第一URI对应资源的第0-0.5MB的数据、第0.5MB-1MB、第1MB-1.5MB的数据、第1.5MB-2.0MB的数据,组合成上述第一分片数据,返回给第一应用。上述示例仅仅用于解释本申请,不应构成限定。S2408、终端100测量N个网络路径的关键性能指标(keyperformanceindication,KPI)信息。关键性能指标信息可以包括真实带宽、往返时延RTT、流完成时间(FCT)等等。其中,终端100可以根据如下公式测量N个网络路径的真实带宽:TransTimei=max{Ui/Zi,0.5*RTTi}公式(23)其中,上述公式(21)、公式(22)和公式(23)中,表示第i条网络路径的理论带宽利用率,Zi表示第i条网络路径的真实带宽,Xi表示第i条网络路径的吞吐量,TransTimei表示第i条网络路径上的数据传输耗时,Ui表示第i条网络路径上HTTP请求所请求的数据量,RTTi表示第i条网络路径上的往返时延,i≤N。其中,Ui已知,Xi和RTTi可测量,因此,通过上述公式(21)、公式(22)和上述公式(23)确定出Zi。示例性的,终端100有蜂窝网络路径1、蜂窝网络路径2、Wi-Fi网络路径1和Wi-Fi网络路径2这4条网络路径。其中,终端100在这4条网络路径上请求的数据量可以都为5MB。其中,这4条网络路径各自的吞吐量Xi、数据传输耗时TransTimei、往返时延RTTi、请求的数据量Ui,可以如下表2所示:表2由上述表2可知,蜂窝网络路径1的吞吐量X1为10MBps、请求的数据量U1为0.5MB、往返时延RTT1为50ms、数据传输耗时TransTime1为25ms。蜂窝网络路径2的吞吐量X2为5.88MBps、请求的数据量U2为0.5MB、往返时延RTT2为70ms、数据传输耗时TransTime2为20ms。Wi-Fi网络路径1的吞吐量X3为20MBps、请求的数据量U3为0.5MB、往返时延RTT3为40ms、数据传输耗时TransTime3为20ms。Wi-Fi网络路径2的吞吐量X4为15MBps、请求的数据量U4为0.5MB、往返时延RTT4为60ms、数据传输耗时TransTime4为30ms。根据上述表2和上述公式(20)、公式(21)和公式(22),可以计算出:蜂窝网路路径1的带宽利用率为50%,蜂窝网络路径1的真实带宽为20MBps。蜂窝网路路径2的带宽利用率为58.82%,蜂窝网络路径2的真实带宽为10MBps。Wi-Fi网路路径1的带宽利用率为50%,Wi-Fi网络路径1的真实带宽为40MBps。Wi-Fi网路路径2的带宽利用率为50%,Wi-Fi网络路径2的真实带宽为30MBps。上述示例仅仅用于解释本申请,不应构成限定。请参考图25,图25示出了本申请实施例的第四部分提供的第一应用再次获取服务器上数据的方法流程示意图。如图25所示,该方法包括如下步骤:S2501、终端100的第一应用针对第一URI发起针对第一分片数据的初次HTTP请求。具体内容,可以参考上述图24所示实施例中的步骤S2404,在此不再赘述。S2502、终端100记录第一应用发起初次HTTP请求的时间信息,并创建第一URI对应的第一预取缓冲区(初始为空)。其中,第一应用每次请求第一URI对应资源的分片数据时,终端100都可以记录下第一应用针对第一URI对应资源的分片数据发起HTTP请求的时间信息。例如,第一应用针对第一URI发起首次HTTP请求(即初次HTTP请求)的时间为“2020年6月18日15点26分2秒30毫秒”。在终端100的第一应用针对第一URI首次发起用于获取第一分片数据的初次HTTP请求时,终端100在本地创建该第一URI对应的第一预取缓冲区。其中,该第一预取缓冲区初始水位线为空。S2503、终端100的第一应用针对第一URI发起用于获取第二分片数据的第一HTTP请求。需要说明的是,第一分片数据在本申请实施例中可以被称为第一数据。其中,第一HTTP请求可以是指第一应用在发起上述初次HTTP请求后,针对第一URI对应资源上的分片数据发起的任一次HTTP请求。例如,第二分片数据可以是第一URI对应的资源(例如,视频资源)中第2MB-4MB范围内的数据。第二获取请求中包括有该第二分片数据的数据范围。又例如,第二分片数据可以是第一URI对应的资源(例如,视频资源)中第4MB-6MB范围内的数据。其中,针对第一URI的文字说明可以参考前述图24所示实施例,在此不再赘述。S2504、终端100记录第一应用发起第一HTTP请求的时间信息。其中,第一应用每次发起HTTP请求,请求第一URI对应资源的数据时,终端100都可以记录下第一应用请求第一URI的时间。在第一应用针对第一URI发起用于获取第二分片数据的第一HTTP请求时,终端100可以记录下发起第一HTTP请求的时间。例如,第一应用针对发起第一HTTP请求的时间为“2020年6月18日15点26分3秒200毫秒”。S2505、终端100判断第一预取缓冲区中是否包括有第二分片数据。若是,则执行S2506;若终端100判断第一预取缓冲区中不包括有第一HTTP请求中请求的数据,则执行S2510。S2506、终端100将第一预取缓冲区中第二分片数据返回给上述第一应用。S2507、在终端100将第一预取缓冲池中的第二分片数据返回给第一应用后,终端100将第一预取缓冲区中第二分片数据删除,以释放第一预取缓冲区中该第二分片数据的存储空间。在第一应用发起第一HTTP请求后,终端100可以获取该第一HTTP请求,并解析出第一HTTP请求中的请求范围(即第二分片数据的数据范围)。终端100可以判断第一预取缓冲区中是否包括有该第二分片数据。其中,第一预取缓冲区中的数据来源于后续图26所示实施例中针对第一URI对应资源的数据预取流程,具体内容可以参考后续图26所示实施例在此不再赘述。当终端100确定出该第一预取缓冲区中包括有第二分片数据时,终端100可以将第一预取缓冲区中的第二分片数据返回给第一应用。然后,终端100可以将第一预取缓冲区中的第二分片数据删除,以释放第一预取缓冲区该第二分片数据的存储空间。示例性的,第一预取缓冲区中可以存储有第一URI对应资源中第6MB-10MB范围内的数据。第一HTTP请求所请求的第二分片数据为第一URI对应资源中第6MB-8MB范围内的数据。终端100可以确定第一预取缓冲区中包括有第二分片数据。终端100可以将第一预取缓冲区中第二分片数据返回给第一应用,并将第一预取缓冲区中第二分片数据删除,释放第二分片数据的存储空间。在删除第二分片数据之后,第一预取缓冲区中存储有第一URI对应资源中第8MB-10MB范围内的数据。上述示例仅仅用于解释本申请,不应构成限定。S2508、终端100判断第一预取缓冲区中剩余缓冲量是否低于水位线阈值。若是,则执行S2509、终端100可以发起针对第一URI对应资源的数据预取流程。在终端100将第一预取缓冲区中第二分片数据删除之后,终端100可以判断第一预取缓冲区中已缓冲数据量是否低于水位线阈值。当终端100确定出第一预取缓冲区中已缓冲数据量低于水位线阈值时,终端100可以触发针对第一URL上数据的预取流程。其中,针对第一URI对应资源的数据预取流程,可以参考后续图26所示实施例,在此不再赘述。示例性的,在删除第二分片数据之后,第一预取缓冲区中存储有第一URI对应资源中第8MB-10MB范围内的数据,即第一预取缓冲区的已缓冲量为2MB。其中,上述水位线阈值可以为4MB。终端100可以确定出第一预取缓冲区的已缓冲量低于水位线阈值,终端100可以触发针对第一URI对应资源的数据预取流程。上述示例仅仅用于解释本申请,不应构成限定。S2510、终端100可以根据第一应用每次发起初次HTTP请求的时间信息,判断在指定时间段内第一应用请求获取第一URI对应资源的次数是否大于次数阈值,若是,则执行上述步骤S2509、终端100触发针对第一URI对应资源的数据预取流程。若在指定时间段内第一应用访问第一URI的次数小于等于次数阈值,则执行:S2511、终端100根据N个网络路径的关键指标信息,对第二原始请求的请求范围进行拆分,得到R个HTTP请求,并将R个HTTP请求分别通过R个网络路径发送给服务器。其中,N大于等于R,R为正整数。当终端100根据第一应用每次针对第一URI发起HTTP请求的时间信息,确定指定时间段内第一应用请求第一URI对应资源的次数大于次数阈值时,终端100触发针对第一URI对应资源的数据预取流程。其中,针对第一URI对应资源的数据预取流程,可以参考后续图26所示实施例,在此不再赘述。示例性的,终端100可以判断第一应用在最近3s内(即在该步骤S2510之前的3s内)请求第一URI对应资源的次数是否大于3次,当第一应用在最近3s内请求第一URI对应资源的次数为5次(大于3次)时,终端100可以触发针对第一URI对应资源的数据预取流程。当终端100根据第一应用每次针对第一URI发起HTTP请求的时间信息,确定指定时间段内该第一应用请求获取第一URI对应资源的次数小于等于次数阈值时,终端100根据N个网络路径的关键性能指标信息,以及第一HTTP请求的请求范围选取R个网络路径。然后,终端100可以根据R个网络路径的关键性能指标信息,将第一HTTP请求的请求范围拆分成R个子请求范围。接着,终端100可以根据第一URI,R个网络路径上服务器的IP地址,R个子请求范围,确定出R个HTTP请求,并将R个HTTP请求分别通过R个网络路径发送给服务器。在一种可能的实现方式中,在终端100选择的R个网络路径传输第一HTTP请求所请求的数据之后,终端100可以先在R个网络路径上与服务器建立TCP连接。然后,终端100可以根据第一HTTP请求的请求范围、R个网络路径的实际带宽和往返时延,通过如下公式确定出R个网络路径各自对应的子请求范围。FCTi=Ui/Zi 0.5*RTTi公式(25)FCTi=c公式(26)其中,在上述公式(24)中,M可用于表示终端100向服务器请求的数据长度,Ui可用于表示R个网络路径中第i条网络路径对应的子请求范围长度,1≤i≤R。上述公式(25)中,FCTi可用于表示R个网络路径中第i条网络路径的传输完Ui长度的数据所需时间。其中,终端100在第i条网络路径上发送HTTP请求给服务器需要耗时0.5*RTTi,服务器在第i条网络路径上返回终端100请求的数据流耗时Ui/Zi,其中,Zi可用于表示R个网络路径中第i条网络路径的真实带宽。上述公式(26)中,终端100需要让每条网络路径上的传输耗时都相同(即每条网络路径上的FCTi都为固定值c)。上述公式仅仅用于解释本申请,不应构成限定。示例性的,终端100上的N个网络路径可以包括蜂窝网络路径1、蜂窝网络路径2、Wi-Fi网络路径1和Wi-Fi网络路径2。其中,这4个网络路径的真实带宽、往返时延RTT和获取到的服务器IP地址可以如下表3所示:表3其中,由上表3可知,蜂窝网络路径1的真实带宽Z1可以为20MBps,蜂窝网络路径1的往返时延RTT1可以为50ms。蜂窝网络路径2的真实带宽Z2可以为10MBps,蜂窝网络路径2的往返时延RTT2可以为60ms。Wi-Fi网络路径1的真实带宽Z3可以为40MBps,Wi-Fi网络路径1的往返时延RTT3可以为40ms。Wi-Fi网络路径2的真实带宽Z4可以为20MBps,Wi-Fi网络路径2的往返时延RTT4可以为60ms。上述表3所示示例仅仅用于解释本申请,不应构成限定。第一HTTP请求的请求范围可以为6MB-8MB,终端100向服务器请求的数据长度M为2MB。终端100可以根据这4个网络路径(即R=N=4)的真实带宽,通过上述公式(24)、公式(25)、公式(26)将第一HTTP请求的请求范围拆分为子请求范围1、子请求范围2、子请求范围3、子请求范围4这4个子请求范围。其中,蜂窝网络路径1的请求范围长度U1可以为0.35MB,蜂窝网络路径2的请求范围长度U2可以为0.075MB,Wi-Fi网络路径1的请求范围长度U3可以为0.9MB,蜂窝网络路径2的请求范围长度U4可以为0.675MB。因此,子请求范围1可以为6MB-6.35MB,子请求范围1对应蜂窝网络路径1。子请求范围2可以为6.35MB-6.425MB,子请求范围2对应蜂窝网络路径2。子请求范围3可以为6.425MB-7.325MB,子请求范围3对应Wi-Fi网络路径3。子请求范围4可以为7.325MB-8MB,子请求范围4对应Wi-Fi网络路径4。终端100可以根据蜂窝网络路径1上服务器的IP地址_1、第一URI和子请求范围1,确定出HTTP请求1,并将HTTP请求1通过蜂窝网络路径1发送给服务器。终端100可以根据蜂窝网络路径2上服务器的IP地址_2、第一URI和子请求范围2,确定出HTTP请求2,并将HTTP请求2通过蜂窝网络路径2发送给服务器。终端100可以根据Wi-Fi网络路径1上服务器的IP地址_3、第一URI和子请求范围3,确定出HTTP请求3,并将HTTP请求3通过Wi-Fi网络路径1发送给服务器。终端100可以根据Wi-Fi网络路径2上服务器的IP地址_4、第一URI和子请求范围3,确定出HTTP请求4,并将HTTP请求4通过Wi-Fi网络路径2发送给服务器。上述示例仅仅用于解释本申请,不应构成限定。在一种可能的实现方式中,在终端100选择的R个网络路径传输第一HTTP请求所请求的数据之后,终端100可以根据第一HTTP请求的请求范围、R个网络路径的实际带宽和往返时延,确定出R个网络路径各自对应的子请求范围。然后,终端100再在R个网络路径上与服务器建立TCP连接。此时,终端100在第i条网络路径上与服务器三次握手建立TCP连接,需要耗时1.5*RTTi。终端100在第i条网络路径上发送HTTP请求给服务器需要耗时0.5*RTTi,服务器在第i条网络路径上返回终端100请求的数据流耗时Ui/Zi。因此,上述公式(25)可以替换为下述公式(27):FCTi=Ui/Zi 2*RTTi公式(27)终端100可以通过上述公式(24)、公式(26)和公式(27),确定出R个网络路径各自对应的子请求范围。上述公式仅仅用于解释本申请,不应构成限定。S2512、终端100接收到服务器在R个网络路径返回的R个HTTP响应,并将R个HTTP响应中的第二分片数据返回给第一应用。服务器接收到终端100发送的HTTP请求后,可以将该HTTP请求所请求的数据封装在HTTP响应中,按照该HTTP请求发送的网络路径返回给终端100。终端100在接收到R个HTTP响应后,从R个HTTP响应中按照请求范围顺序取出第二分片数据,并返回给第一应用。示例性的,终端100将HTTP请求1通过蜂窝网络路径1发送给服务器,将HTTP请求2通过蜂窝网络路径2发送给服务器,将HTTP请求3通过Wi-Fi网络路径1发送给服务器,将HTTP请求4通过Wi-Fi网络路径2发送给服务器。其中,HTTP请求1用于请求第一URI对应资源的第6MB-6.35MB范围内的数据,HTTP请求2用于请求第一URI对应资源的6.35MB-6.425MB范围内的数据,HTTP请求3用于请求第一URI对应资源的6.425MB-7.325MB范围内的数据,HTTP请求4用于请求第一URI对应资源的7.325MB-8MB范围内的数据。服务器在接收到HTTP请求1后,可以将第一URI对应资源的第6-6.35MB范围内的数据封装在HTTP响应1中,并通过蜂窝网络路径1将该HTTP响应1返给终端100。服务器在接收到HTTP请求2后,可以将第一URI对应资源的第6.35MB-6.425MB范围内的数据封装在HTTP响应2中,并将HTTP请求2通过蜂窝网络路径2返回给终端100。服务器在接收到HTTP请求3后,可以将第一URI对应资源的第6.425MB-7.325MB范围内的数据封装在HTTP响应3中,并将HTTP请求3通过Wi-Fi网络路径1返回给终端100。服务器在接收到HTTP请求4后,可以将第一URI对应资源的第7.325MB-8MB范围内的数据封装在HTTP响应4中,并将HTTP请求4通过Wi-Fi网络路径2返回给终端100。终端100在接收到HTTP响应1后,可以从HTTP响应1取出第一URI对应资源的第6MB-6.35MB范围内的数据。终端100在HTTP响应2后,可以从HTTP响应2取出第一URI对应资源的第6.35MB-6.425MB范围内的数据。终端100在接收到HTTP响应3后,可以从HTTP响应3取出第一URI对应资源的第6.425MB-7.325MB范围内的数据。终端100在接收到HTTP响应4后,可以从HTTP响应4中取出第一URI对应资源的第7.325MB-8MB范围内的数据。终端100可以将第一URI对应资源的第6MB-6.35MB范围内的数据、第6.35MB-6.425MB范围内的数据、第6.425MB-7.325MB范围内的数据、第7.325MB-8MB范围内的数据,按照范围顺序(字节顺序从小到大排列)组合成上述第二分片数据,返回给第一应用。上述示例仅仅用于解释本申请,不应构成限定。下面介绍本申请实施例的第四部分提供的针对第一URI对应资源的数据预取方法流程。请参考图26,图26示出了本申请实施例提供的数据预取方法的流程示意图。如图26所示,该方法包括如下步骤:S2601、终端100获取针对第一URI对应资源的上次获取数据量K和末端字节位置。示例性的,终端100针对第一URI对应资源的上次获取数据量为2MB,上次针对第一URI对应资源的请求范围为4MB-6MB。上一次请求第一URI对应资源的末端字节位置可以为第6MB字节。示例仅仅用于解释本申请,不应构成限定。S2602、终端100判断当设定预取量为a*K(a为大于1的整数)时,N个网络路径的总带宽利用率是否超过指定阈值P,若是,则执行S2603、终端100确定出当N个网络路径的总带宽利用率为指定阈值P时对应的第一预取值。若可用网络路径的带宽利用率不超过指定阈值P时,则执行步骤S2607。终端100可以根据预取量为a*K,N个网络路径的总带宽、N个网络路径的平均往返时延,确定出当设定预取量为a*K(a为大于1的整数)时,N个网络路径的总带宽利用率。其中,终端100可以根据指定阈值P、N个网络路径的总带宽、N个网络路径的平均往返时延,确定出第一预取值。示例性的,终端100上的网络路径可以包括有蜂窝网络路径1、蜂窝网络路径2、Wi-Fi网络路径1和Wi-Fi网络路径2。其中,蜂窝网络路径1的带宽可以是20MBps、往返时延可以为50ms。蜂窝网络路径2的带宽可以是10MBps、往返时延可以为70ms。Wi-Fi网络路径1的带宽可以是40MBps、往返时延可以为40ms。Wi-Fi网络路径2的带宽可以是30MBps,往返时延可以为60ms。因此,终端100上N个网络路径的总带宽可以为100MBps,N个网路路径的平均往返时延可以为55ms。指定阈值P可以为80%。当a为2,上一次数据预取量K为8MB,终端100设定预取量a*K可以为16MB时,通过上述公式(19)和公式(20),确定出N个网络路径的总带宽利用率为87.67%,大于P(例如80%)。因此,终端100可以根据指定阈值P(例如80%)、N个网络路径的总带宽(例如100MBps)、N个网络路径的平均往返时延(例如55ms),确定出第一预取值为9MB。又示例性的,终端100上的网络路径可以包括有蜂窝网络路径1、蜂窝网络路径2、Wi-Fi网络路径1和Wi-Fi网络路径2。其中,蜂窝网络路径1的带宽可以是20MBps、往返时延可以为50ms。蜂窝网络路径2的带宽可以是10MBps、往返时延可以为70ms。Wi-Fi网络路径1的带宽可以是40MBps、往返时延可以为40ms。Wi-Fi网络路径2的带宽可以是30MBps,往返时延可以为60ms。因此,终端100上N个网络路径的总带宽可以为100MBps,N个网路路径的平均往返时延可以为55ms。a可以为2,P可以为90%,上一次数据预取量K为2MB,当终端100设定预取量a*K为4MB时,通过上述公式(19)和公式(20),确定出N个网络路径的总带宽利用率为64%,小于指定阈值P(例如80%)。因此,终端100可以执行下述步骤S2607。S2604、终端100判断第一预取缓冲区中剩余容量是否大于第一预取值,若是,则执行S2605、终端100确定本次预取值为第一预取值。若第一预取缓冲区中剩余容量小于等于第一预取值时,则执行S2606、终端100确定本次预取值为上一次预取值K。示例性的,第一预取缓冲区中剩余缓冲容量可以为20MB,第一预取值可以为9MB,第一预取缓冲区中剩余缓冲容量大于第一预取值,因此,终端100可以将本次预取值确定为第一预取值确定。又示例性的,第一预取缓冲区中剩余缓冲容量可以为8.5MB,第一预取值可以为9MB,第一预取缓冲区中剩余缓冲容量小于第一预取值,因此,终端100可以将本次预取值确定为上一次预取值K。S2607、终端100判断第一预取缓冲区中剩余缓冲容量是否大于等于a*K,若是,则执行S2608、终端100确定本次预取值为a*K。若第一预取缓冲区中剩余缓冲容量小于a*K,则执行S2606、终端100确定本次预取值为上次请求数据量K。示例性的,a可以为2,上次请求数据量K可以为2MB,a*K为4MB,第一预取缓冲区中剩余缓冲容量可以为8.5MB,大于a*K。因此,终端100可以确定本次请求数据量为a*K。又示例性的,a可以为2,上次请求数据量可以为2MB,a*K为4MB,第一预取缓冲区中剩余缓冲容量可以为3MB,小于a*K。因此,终端100可以确定本次请求数据量为上次请求数据量K(例如2MB)。在一种实现方式中,终端100可以在获取针对第一URI对应资源的上次请求数据量K和上次请求末端字节位置之后,直接判断第一预取缓冲区中剩余缓冲容量是否大于等于a*K,若是,则终端100确定a*K为本次请求数据量。若第一预取缓冲区中剩余缓冲容量小于a*K,则终端100确定本次请求数据量为上次请求数据量K。S2609、终端100根据第一URI、本次请求数据量,上次请求的末端字节位置,确定出本次请求范围。终端100在确定出本次请求数据量后,可以根据上次请求的末端字节位置,确定出本次请求范围。示例性的,本次请求数据量可以为8MB,上次请求的末端字节位置可以为第6MB,因此,本次请求范围可以为第6MB-第14MB。S2610、终端100根据N个网络路径的关键指标信息,和本次请求范围,选取出L个网络路径,并将本次请求范围拆分成L个子请求范围。其中,L小于等于N。S2611、终端100根据L个子请求范围,L个网络路径上的服务器IP地址,第一URI,确定出L个HTTP请求,并将L个HTTP请求分别通过L个网络路径发送给服务器。终端100可以根据N个网络路径的关键性能指标信息,以及本次请求范围选取L个网络路径。然后,终端100可以根据L个网络路径的关键性能指标信息,将本次请求范围拆分成L个子请求范围。接着,终端100可以根据第一URI、L个网络路径上服务器的IP地址、和L个子请求范围,确定出L个HTTP请求,并将L个HTTP请求分别通过L个网络路径发送给服务器。其中,一个网络路径上对应一个HTTP请求。具体内容,可以参考前述图25所示上的步骤S2511,在此不再赘述。S2612、终端100接收到服务器在L个网络路径返回的L个HTTP响应,获取L个HTTP响应中的响应数据,将响应数据中的第二分片数据返回给第一应用,将响应数据中的预取数据存入第一预取缓冲区。服务器接收到终端100发送的HTTP请求后,可以将该HTTP请求所请求的数据封装在HTTP响应中,按照该HTTP请求发送的网络路径返回给终端100。终端100在接收到L个HTTP响应后,从L个HTTP响应中按照请求范围顺序取出响应数据。该响应数据可包括第一应用请求的第二分片数据和预取数据。终端100可以从响应数据中取出第一应用请求的第二分片数据,返回给第一应用,将响应数据中的剩余的预取数据存入到第一预取缓冲区中。这样,在第一应用下次请求分片数据时,终端100可以直接从第一预取缓冲区中将第一应用请求的分片数据返回给第一应用,减少了第一应用请求分片数据的等待时间。示例性的,针对第一URI对应资源的本次请求范围可以为第6MB-第14MB。终端100接收到L个HTTP响应后,可以从这L个HTTP响应中,共获取到第一URI对应资源的第6MB-第14MB范围内的数据。其中,第一应用通过第一HTTP请求获取的第二分片数据为第6MB-第8MB范围内的数据。终端100可以将第6MB-第8MB范围的数据返回给第一应用,将第8MB-第14MB范围内的数据存入第一URI对应的第一预取缓冲区中。上述示例仅仅用于解释本申请,不应构成限定。其中,终端100每次发起预取流程时,选出的网络路径都可以相同也可以不同。例如,本次预取流程中,终端100可以选取出L个网络路径,下次预取流程中,终端100可以选取出S个网络路径,S小于等于N,S为正整数。在本次预取流程中,终端100可以获取到第一应用针对第一URI发起的第一HTTP请求,第一HTTP请求可用于向服务器请求第一数据。终端100可以生成L个第二HTTP请求,第二HTTP请求可用于向所述服务器请求第二数据,其中,所述第二数据包括所述第一数据且第二数据的数据量大于第一数据的数据量。终端100可以将L个第二HTTP请求分别通过L个网络路径发送给服务器。终端100可以接收服务器在L个网络路径上发送的L个第一HTTP响应,这L个第一HTTP响应包括有第二数据。终端100可以从第二数据中取出第一数据,并将第一数据通过HTTP响应返回给第一应用。终端100可以将第二数据中剩余的数据存入至第一预取缓冲区中。在一些场景中,终端100的第一应用可以从服务器上下载视频等资源数据。终端100可以获取到第一应用下发的用于请求第一URI对应资源中分片数据1的HTTP请求1。若终端100确定出第一应用通过HTTP请求获取第一URI对应资源的次数大于次数阈值时,终端100可以获取第一URI对应资源中剩余数据的字节范围,并根据第一URI对应资源中剩余数据的字节范围生成r个HTTP请求,r小于等于N,r为正整数。终端100可以将这r个HTTP请求分别通过r个网络路径发送给服务器,向服务器请求第一URI对应资源中的剩余数据(即,直接将第一URI对应资源的全部数据下载完)。终端100可以在接收到服务器在r个网络路径返回的第一URI对应资源中的剩余数据后,可以将第一URI对应资源中的剩余数据中的分片数据1返回给第一应用。若第一应用下次下发的用于请求第一URI对应资源中分片数据2的HTTP请求2时,第终端100可以直接从第一URI对应资源中的剩余数据中取出分片数据2返回给第一应用。示例性的,如图27所示,终端100可以同时通过蜂窝网络路径和Wi-Fi网络路径访问到服务器。其中,在蜂窝网络路径上,终端100的IP地址可以为“189.100.3.195”,服务器的IP地址可以为“211.91.160.241”。在Wi-Fi网络路径上,终端100的IP地址可以为“11.240.22.56”,服务器的IP地址可以为“58.216.88.125”。第一应用在t1时刻第一次针对第一URI发起HTTP请求1,其中,HTTP请求1中的URI可以为:“/P_VT/video_cutover/3F/v3/5B99115D352202788861689856/MP4_H.265_854x480_500_HEAAC1_PVC4.mp4”、源IP地址(Src)为“11.240.22.56”、目的IP地址(Dst)为“58.216.88.125”、字节范围(range)为“bytes=0-14163”、目的端口号为“80”。该HTTP请求1用于请求第一URI对应资源的0-14163字节范围内的数据。终端100可以将从端口80中获取出该HTTP请求1,并将该HTTP请求1中的目的端口号从“80”改为该第一应用对应的端口号“9091”,将该HTTP请求1中的目的IP地址改为终端100本地的预取处理模块的IP地址“127.0.0.1”。终端100获取到修改后目的IP地址的HTTP请求1,通过抓包软件呈现出修改后的HTTP请求1中的URI为:“/P_VT/video_cutover/3F/v3/5B99115D352202788861689856/MP4_H.265_854x480_500_HEAAC1_PVC4.mp4”、源IP地址(Src)为“11.240.22.56”、目的IP地址(Dst)为“127.0.0.1”、字节范围(range)为“bytes=0-14163”、目的端口号为“9091”。此时,终端100确定不进行预取流程,因此,终端100可以直接将HTTP请求1通过Wi-Fi网络发送给服务器。终端100可以接收到服务器在Wi-Fi网络路径发送的HTTP响应1,其中,HTTP响应1中的源IP地址(Src)为“58.216.88.125”、目的IP地址为“11.240.22.56”、内容范围(contentrange)为“bytes0-14163/90982601”。其中,内容范围(contentrange)中的“90982601”表示该第一URI对应资源的总大小为90982601个字节。该HTTP响应1中包括有第一URI对应资源的0-14163字节范围内的数据。终端100可以将HTTP响应1返回给第一应用。第一应用在t2时刻第二次针对第一URI发起HTTP请求2,其中,该HTTP请求2中的URI可以为:“/P_VT/video_cutover/3F/v3/5B99115D352202788861689856/MP4_H.265_854x480_500_HEAAC1_PVC4.mp4”、源IP地址(Src)为“11.240.22.56”、目的IP地址(Dst)为“58.216.88.125”、字节范围(range)为“bytes=14164-95757”、目的端口号为“80”。该HTTP请求2用于请求第一URI对应资源的14164-95757字节范围内的数据。终端100可以将从端口80中截取出该HTTP请求2,并将该HTTP请求2中的目的端口号从“80”改为该第一应用对应的端口号“9091”,将该HTTP请求2中的目的IP地址改为终端100本地的预取处理模块的IP地址“127.0.0.1”。终端100获取到修改后目的IP地址的HTTP请求2,通过抓包软件呈现出修改后的HTTP请求2中的URI为:“/P_VT/video_cutover/3F/v3/5B99115D352202788861689856/MP4_H.265_854x480_500_HEAAC1_PVC4.mp4”、源IP地址(Src)为“11.240.22.56”、目的IP地址(Dst)为“127.0.0.1”、字节范围(range)为“bytes=14164-95757”、目的端口号为“9091”。此时,终端100确定不进行预取流程,因此,终端100可以直接将HTTP请求2通过Wi-Fi网络发送给服务器。终端100可以接收到服务器在Wi-Fi网络路径发送的HTTP响应2,其中,HTTP响应2中的源IP地址(Src)为“58.216.88.125”、目的IP地址为“11.240.22.56”、内容范围(contentrange)为“bytes14164-95757/90982601”。其中,内容范围(contentrange)中的“90982601”表示该第一URI对应资源的总大小为90982601个字节。该HTTP响应2中包括有第一URI对应资源的14164-95757字节范围内的数据。终端100可以将HTTP响应2返回给第一应用。第一应用在t3时刻第三次针对第一URI发起HTTP请求3,其中,该HTTP请求3中的URI可以为:“/P_VT/video_cutover/3F/v3/5B99115D352202788861689856/MP4_H.265_854x480_500_HEAAC1_PVC4.mp4”、源IP地址(Src)为“11.240.22.56”、目的IP地址(Dst)为“58.216.88.125”、字节范围(range)为“bytes=95758-177720”、目的端口号为“80”。该HTTP请求3用于请求第一URI对应资源的95758-177720字节范围内的数据。终端100可以将从端口80中获取到该HTTP请求3,并将该HTTP请求3中的目的端口号从“80”改为该第一应用对应的端口号“9091”,将该HTTP请求3中的目的IP地址改为终端100本地的全网聚合模块的IP地址“127.0.0.1”。终端100获取到修改后目的IP地址的HTTP请求3,通过抓包软件呈现出修改后的HTTP请求3中的URI为:“/P_VT/video_cutover/3F/v3/5B99115D352202788861689856/MP4_H.265_854x480_500_HEAAC1_PVC4.mp4”、源IP地址(Src)为“11.240.22.56”、目的IP地址(Dst)为“127.0.0.1”、字节范围(range)为“bytes=95758-177720”、目的端口号为“9091”。此时,终端100确定进行预取流程(例如3s内第一应用请求第一URI对应资源的次数达到3次),因此,终端100可以基于HTTP请求3中的请求的字节范围,生成HTTP请求4和HTTP请求5。其中,HTTP请求4中的URI可以为:“/P_VT/video_cutover/3F/v3/5B99115D352202788861689856/MP4_H.265_854x480_500_HEAAC1_PVC4.mp4”、源IP地址(Src)为“189.100.3.195”、目的IP地址(Dst)为“211.91.160.241”、字节范围(range)为“bytes=95758-45539187”、目的端口号为“80”。该HTTP请求4用于请求第一URI对应资源的95758-45539187字节范围内的数据。HTTP请求5中的URI可以为:“/P_VT/video_cutover/3F/v3/5B99115D352202788861689856/MP4_H.265_854x480_500_HEAAC1_PVC4.mp4”、源IP地址(Src)为“11.240.22.56”、目的IP地址(Dst)为“58.216.88.125”、字节范围(range)为“bytes=45539178-90982600”、目的端口号为“80”。该HTTP请求5用于请求第一URI对应资源的45539178-90982600字节范围内的数据。因此,终端100可以将HTTP请求4通过蜂窝网络路径发送给服务器,将HTTP请求4通过蜂窝网络路径发送给服务器。终端100可以接收到服务器在蜂窝网络路径发送的HTTP响应4。其中,HTTP响应4中的源IP地址(Src)为“211.91.160.241”、目的IP地址为“189.100.3.195”、内容范围(contentrange)为“bytes95758-45539187/90982601”。其中,内容范围(contentrange)中的“90982601”表示该第一URI对应资源的总大小为90982601个字节。该HTTP响应4中包括有第一URI对应资源的95758-45539187字节范围内的数据。终端100可以将HTTP请求5通过蜂窝网络路径发送给服务器,将HTTP请求5通过Wi-Fi网络路径发送给服务器。终端100可以接收到服务器在Wi-Fi网络路径发送的HTTP响应5。其中,HTTP响应5中的源IP地址(Src)为“58.216.88.125”、目的IP地址为“11.240.22.56”、内容范围(contentrange)为“bytes45539178-90982600/90982601”。该HTTP响应5中包括有第一URI对应资源的45539178-90982600字节范围内的数据。其中,由于终端100将该HTTP请求4在蜂窝网络路径上发送给服务器,终端100将该HTTP请求5通过Wi-Fi网路路径发送给服务器,HTTP请求4中的字节范围和HTTP请求5中的字节范围可以有重叠部分。例如,HTTP请求4中的字节范围为“95758-45539187”,HTTP请求5中的字节范围为“45539178-90982600”,HTTP请求4中字节范围的末尾和HTTP请求5中字节范围的开始重复了10个字节(重复的字节范围为“45539178-45539187”)。这样,可以更好让蜂窝网络路径上获取到的数据和Wi-Fi网络路径获取到的数据组合在一起。终端100在接收HTTP响应4和HTTP响应5的过程中,若收到了第一URI对应资源的第95758-177720字节范围内的数据后,可以将第一URI对应资源的第95758-177720字节范围内的数据封装成HTTP响应6,并将HTTP响应6返回给第一应用。其中,HTTP响应6中的源IP地址(Src)为“211.91.160.241”、目的IP地址(Dst)为“189.100.3.195”、内容范围(contentrange)为“bytes95758-177720/90982601”。其中,内容范围(contentrange)中的“90982601”表示该第一URI对应资源的总大小为90982601个字节。该HTTP响应6中包括有第一URI对应资源的95758-177720字节范围内的数据。因此,本申请实施例的第四部分提供了一种多路径数据预取方法,终端可以当应用业务请求第一数据量的数据时,向服务器预取第二数据量的数据,其中,第二数据量大于第一数据量。然后,终端接收到服务器返回的第二数据量的数据后,可以先将第二数据量中的第一数据量的数据返回给应用。然后,将剩余(第二数据量-第一数据量)的数据存到预取缓冲区。当应用下次请求剩余的(第二数据量-第一数据量)字节的数据时,终端可以直接从预取缓冲区中提取该剩余的(第二数据量-第一数据量)字节的数据给到应用。提高了终端与服务器之间的网络路径的带宽利用率,并且,当应用频繁访问同一URI地址上的不同范围的数据时,可以节省应用获取到数据的时间。上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。当前第1页12当前第1页12
再多了解一些

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

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

相关文献