CN108270682B - 一种报文传输方法、终端、网络设备及通信系统 - Google Patents

一种报文传输方法、终端、网络设备及通信系统 Download PDF

Info

Publication number
CN108270682B
CN108270682B CN201611260835.6A CN201611260835A CN108270682B CN 108270682 B CN108270682 B CN 108270682B CN 201611260835 A CN201611260835 A CN 201611260835A CN 108270682 B CN108270682 B CN 108270682B
Authority
CN
China
Prior art keywords
message
retransmission
server
packet
terminal
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
CN201611260835.6A
Other languages
English (en)
Other versions
CN108270682A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201611260835.6A priority Critical patent/CN108270682B/zh
Priority to KR1020197022121A priority patent/KR102203509B1/ko
Priority to PCT/CN2017/116601 priority patent/WO2018121294A1/zh
Priority to EP17888443.3A priority patent/EP3554022B1/en
Priority to BR112019013438A priority patent/BR112019013438A2/pt
Publication of CN108270682A publication Critical patent/CN108270682A/zh
Priority to US16/454,947 priority patent/US10924421B2/en
Application granted granted Critical
Publication of CN108270682B publication Critical patent/CN108270682B/zh
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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • H04L47/263Rate modification at the source after receiving feedback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • 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/18Automatic repetition systems, e.g. Van Duuren systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/37Slow start
    • 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]
    • 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/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • 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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/0289Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/06Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds

Abstract

本发明公开了一种报文传输方法,包括:发送端在确定第一报文丢失之后,重传第一报文,并减小拥塞窗口和/或慢启动阈值;接收端首次收到重传的第一报文后,向发送端发送针对该重传的第一报文的ACK,且ACK中包含主动构造的DSACK选项,向发送端发送包含DSACK选项,用于提示发送端第一报文被重复接收了,发送端根据DSACK选项中记录的序列号推断第一报文是乱序而非拥塞导致的丢包,且因为第一报文丢包触发的重传和拥塞窗口退避是不必要的,进而补偿拥塞窗口和/或慢启动阈值。

Description

一种报文传输方法、终端、网络设备及通信系统
技术领域
本发明涉及通信技术领域,尤其涉及一种报文传输方法、终端及通信系统。
背景技术
TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP为了保证报文传输的可靠,给每个报文分配一个序列号(Sequence Number),序列号保证了传送到接收端的报文的有序接收。对于已经成功收到的报文,接收端会给发送端回复一个相应的确认报文(Acknowledgement,即ACK),该确认报文会携带该接收到的报文的序列号。如果发送端在合理的往返时延(Round-Trip Time,即RTT)内未收到确认报文,那么对应的报文将会被重传。这种机制通常也被称为超时重传。快速重传是对超时重传的优化,如果发送端接收到N个(一般情况下,N等于3)以上的重复ACK,就判定有报文丢失,于是立即重传丢失的报文。快速重传机制不需要等到重传定时器超时就进行报文重传,大大提高了数据传输的效率。
超时重传和快速重传机制虽然保证了报文的可靠传输,但如果网络状况恶化,传输时延较大的时候,报文重传会使网络的负担更重,导致更大的传输延迟以及更多的丢包,进而造成恶性循环,甚至使整个网络瘫痪。为此,TCP引入了拥塞控制算法。主流的TCP拥塞控制算法基本都是基于丢包退避的原理:当发送端判定发生网络丢包后,主动减小拥塞窗口,以降低发送速率,从而减缓网络拥塞。
拥塞控制算法虽然能一定程度上抑制网络拥塞,但也可能会不合理地限制数据传输速率,尤其是在无线网络环境中,由于无线链路的信道质量易受多方面因素的影响,例如在信号弱覆盖等场景下,无线链路常常会因为误码等非拥塞因素丢包,而基于传统的拥塞控制算法,发送端会根据丢包判断网络发生拥塞,并主动减小拥塞窗口,进而导致接收端的下行吞吐率降低,影响用户的上网体验。
发明内容
本发明实施例提供一种报文传输方法、终端、网络设备及通信系统,用于提高数据传输速率。
为达到上述发明目的,一方面,本发明实施例提供了一种报文传输方法,该方法包括:终端在首次接收到服务器发送的重传报文之时,向该服务器发送用于响应该首次接收到的重传报文的第一确认报文,其中,该重传报文是服务器判定已发送的第一报文丢失后重传的,且该重传报文的序列号与第一报文携带的序列号相同;该第一确认报文包含重复指示字段,该重复指示字段用于指示第一报文被重复接收,接收端对于首次收到的重传报文,在其确认报文的TCP头部携带特殊信息以提示发送端该重传报文被重复接收了;服务器在收到该第一确认报文后,会根据该第一确认报文中携带的重复指示字段推断第一报文并非由于拥塞导致丢失,因此由于之前判定第一报文丢失而触发的重传和拥塞窗口退避也是不必要的,服务器将据此补偿拥塞窗口大小和/或慢启动阈值,从而提高下行吞吐率。
在一个可能的设计中,该第一确认报文是所述终端首次接收到和所述第一报文序列号相同的报文时发送的,这样,终端在首次接收到与所述第一报文序列号相同的报文时,通过第一确认报文携带的重复指示字段来“欺骗”服务器,以指示自己重复接收到了与第一报文序列号相同的报文,服务器据此确认之前判断第一报文因为拥塞丢失为误判,进而会恢复之前因为判定第一报文丢失而减小的拥塞窗口,进而提升了数据传输速率。
在一个可能的设计中,终端根据接收到的报文的序列号和已接收并缓存的报文的序列号,确定该报文是否为重传报文,以及是否首次接收到与该报文序列号相同的报文。
在一个可能的设计中,第一确认报文还包含SACK选项,该SACK选项用于指示该终端已接收报文的序列号信息。
在一个可能的设计中,该重复指示字段包含第一报文的序列号,且该重复指示字段位于该第一确认报文的SACK选项的第一个块(Block)。
在一个可能的设计中,该第一确认报文为DSACK报文,该重复指示字段位于报文的DSACK块。
在一个可能的设计中,在该终端接收服务器发送的重传报文之前,还包括:该终端通过至少一个接入点接入无线网络,并与该服务器建立TCP连接。在一个可能的设计中,该终端和该服务器均开启了SACK选项。
第二方面,本发明实施例提供了一种传输报文的方法,包括:终端接收服务器发送的重传报文,该重传报文是该服务器确定已发送的第一报文丢失后重传的,该重传报文的序列号与第一报文携带的序列号相同,所述重传报文包含用于指示所述重传报文的发送时间戳的TSval字段,所述TSval字段的值为TSrexmit,表示所述重传报文的实际发送时间为TSrexmit;该终端在首次接收到重传报文之时向该服务器发送用于响应该首次接收到的重传报文的第一确认报文,该第一确认报文包含用于向该服务器报告该重传报文的发送时间戳的TSecr字段,该TSecr字段的值被设置为小于TSrexmit,即小于该重传报文的实际发送时间戳。
采用上述方法,终端对于只收到过一次的重传报文,通过伪造时间戳选项,在TSecr字段携带小于重传报文实际发送时间戳的值,以“欺骗”发送端该重传报文被重复接收了,发送端进而推断之前重传的该序列号的报文所引起的拥塞窗口退避是不必要的,并据此补偿拥塞窗口大小和/或慢启动阈值,达到了提高数据传输速率的效果。
在一个可能的设计中,该第一确认报文中TSecr字段的值小于等于与第一报文的序列号后相邻的报文的发送时间戳,并且大于等于与第一报文的序列号前相邻的报文的发送时间戳。根据这一准则计算出的TSval字段更接近于第一报文的实际发送时间戳。
在一个可能的设计中,该终端和该服务器开启了TCP时间戳选项,并建立建立了TCP连接。
第三方面,本发明实施例提供一种在发送端和接收端之间转发报文的方法,包括:网络设备接收由发送端发往接收端的重传报文,将该重传报文转发给该接收端,以及接收该接收端响应于该重传报文的第一确认报文;其中,该重传报文是该发送端判定已发送的第一报文丢失后重传的,且该重传报文的序列号与第一报文携带的序列号相同;该第一确认报文是该接收端首次接收到该重传报文之时发送的;网络设备在该第一确认报文中添加重复指示字段,以得到第二确认报文,并发送所述第二确认报文;该重复指示字段用于指示第一报文被重复接收,以使该发送端接收到该第二确认报文之后,根据该重复指示字段的指示,增加拥塞窗口的大小和/或慢启动阈值,从而提高数据发送速率。
在一个可能的设计中,该第一确认报文是所述终端首次接收到和所述第一报文序列号相同的报文时发送的。
在一个可能的设计中,该第一确认报文和第二确认报文还包含SACK选项,该SACK选项用于指示该接收端已接收报文的序列号信息。
在一个可能的设计中,该重复指示字段包含第一报文的序列号,且该重复指示字段位于该第二确认报文的SACK选项的第一个块(Block)。
在一个可能的设计中,该发送端和该接收端之间的连接为TCP连接,且该发送端和该接收端开启了SACK选项或者时间戳选项。
第四方面,本发明实施例提供一种终端,该终端具有实现上述方法示例中终端的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的设计中,该终端包括应用处理器、存储器和通信子系统,该通信子系统用于接收报文以及发送确认报文,应用处理器运行存储器中的协议栈程序,以用于执行上述方法示例中终端的功能。
在另一种可能的设计中,终端的结构中包括接收单元、处理单元以及发送单元,这些单元可以执行上述方法示例中的相应功能,具体参见方法示例中的详细描述,不作赘述。
第五方面,本发明实施例提供一种网络设备,该网络设备具有实现上述方法示例中网络设备的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
又一方面,本发明实施例提供了一种通信系统,该系统包括服务器和上述方面的终端,该系统还可以包括本发明实施例提供的方案中与终端进行交互的其他设备。
再一方面,本发明实施例提供了一种计算机存储介质,用于储存为上述终端或网络设备所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
相较于现有技术,本发明实施例提供的方案中,接收端对于首次收到的重传报文,在其确认报文的头部携带特殊信息以提示发送端该重传报文被重复接收了,并发送至发送端;发送端在收到该确认报文后,会根据确认报文中携带的特殊信息推断此次丢包是乱序而非拥塞导致的丢包,且由于此报文丢失触发的重传和拥塞窗口退避也是不必要的,发送端将据此补偿拥塞窗口大小和慢启动阈值,从而提高下行吞吐率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是无线网络传输场景示意图;
图2是本发明实施例提供的通信系统示意图;
图3是TCP报文格式示意图;
图4是现有技术中的快速重传方法原理图;
图5是现有技术中的选择性确认(SACK)方法示意图;
图6是现有技术中的拥塞控制方法示意图;
图7是本发明实施例提供的报文传输方法的流程图;
图8是SACK选项的格式示意图;
图9是本发明实施例的SACK选项结构图;
图10是开启时间戳选项的场景下的数据传输示意图;
图11是本发明实施例提供的另一种报文传输方法的示意图;
图12是本发明实施例提供的另一种报文传输方法的流程图;
图13是本发明实施例提供的一种终端的结构示意图;
图14是本发明实施例提供的一种网络设备的结构示意图;
图15是本发明实施例提供的一种报文传输装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
图1示出了一种典型的无线网络传输场景,终端通过蜂窝网络或者WLAN(wirelesslocal area network,无线局域网)的接入点接入无线网络,然后基于特定网络协议与应用服务器传输数据。例如,服务器可以根据终端的请求,以报文为单位向终端发送数据;终端也可以将本地数据以封装成报文,通过网络发送至服务器。在另一些场景下,终端与服务器之间也可以通过有线链路传输数据,但不管采用何种链路,在数据传输过程中不可避免地会存在报文丢失现象。因此为了保证数据的可靠传输,TCP(Transmission ControlProtocol,传输控制协议)成为不同设备之间传输协议的首选。TCP引入了慢启动、拥塞控制、超时重传等机制来保障数据传输可靠性,但这些机制同时也会极大的限制数据的传送速率,降低链路利用率。本发明旨在保证数据可靠传输的前提下,进一步提高数据的传输速率,提高链路利用率。可以理解的是,任何基于TCP/IP(Internet Protocol)协议栈的设备都适用于本发明实施例的提供的技术方案,其中,TCP/IP协议栈是用于实现TCP/IP参考模型所定义的TCP/IP协议族的组件,TCP/IP协议族包括两个核心协议:TCP(传输控制协议)和IP(网际协议)。TCP/IP参考模型是一个抽象的分层模型,这个模型中,所有的网络协议都被归类到5个抽象的"层"中:物理层、链路层、网络层、传输层以及应用层,关于各层的定义均为现有技术,本发明实施例不再赘述。
本发明的说明书和权利要求书及附图中的术语“终端”,指向为用户提供语音和/或数据连通性的设备,包括无线终端或有线终端。无线终端可以是具有无线连接功能的手持式设备、物联网设备或连接到无线调制解调器的其他处理设备。例如,无线终端可以是移动电话(或称为“蜂窝”电话)或者具有移动终端的计算机。又如,无线终端也可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置。再如,无线终端可以为移动站(英文为:mobile station)或用户设备(英文为:user equipment,简称UE)的一部分。“报文”是网络传输的基本单位,以一定格式组织起来的数据。不同类型的网络协议对报文的格式有不同的定义,但通常而言,一个报文可分为报头(header)和净荷(payload),其中,报头包含了报文传输过程中必需的信息,比如地址信息、标志位等等,净荷也称为报文的数据部分,包含了被发送的数据内容。“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
图2是本发明实施例提供的一种通信系统100的简化框图,该通信系统100仅作为本发明的一种应用场景,不应理解为对本发明应用场景的限定。
该通信系统100包括终端110、接入点10、无线接入网关12、广域网14、以及第一应用服务器20、第二应用服务器30、以及第三应用服务器40。所属领域的技术人员可以理解一个通信系统通常可包括比图2中所示的部件更少或更多的部件,或者包括与图2中所示部件不同的部件,图2仅仅示出了与本发明实施例所公开的多个实现方式的更加相关的部件。
所属领域的技术人员可以理解一个通信系统通常可包括比图2中所示的部件更少或更多的部件,或者包括与图2中所示部件不同的部件,图2仅仅示出了与本发明实施例所公开的实现方式更加相关的部件。例如,虽然图2中已经描述了三个应用服务器20、30、40,但所属领域的技术人员可理解成一个通信系统可包含任何数量的应用服务器,甚至不包含应用服务器。各应用服务器20、30、40分别包括相应的TCP/IP协议栈21、31、41。TCP/IP协议栈21、31、41的功能可分别由运行在各应用服务器20、30、40上的软件、硬件和/或固件的适当组合执行。广域网14可包括公用网络、专用网络、因特网的一部分和/或其任何组合。接入点可以被实施为或被称为基站(Base Station)、NodeB、eNodeB、无线网络控制器(RadioNetwork Controller)、基站控制器(Base Station Controller)、基站收发信台(BaseTransceiver Station)、收发器功能(Transceiver Function,)、无线电收发器(RadioTransceiver)、无线电路由器(Radio Router)、基本服务集(Basic Service Set)或一些其它类似术语。网关12和接入点11可包括在一个无线网络中,出于简洁之目的,该无线网络的其它部分并未进行阐述。
该终端110包括应用程序控制器120、TCP/IP协议栈130和无线调制解调器(Wireless Modem)140。该无线调制解调器140与天线142连接。所属领域的技术人员可以理解终端110可包括比图2中所述部件更少或更多的部件,图2所示的该接入终端110仅包括与本文所公开的多个实现方式的多个方面更加相关的部件。
应用程序控制器120用于控制和/或监测在终端110上运行的应用程序。例如,第一应用程序121、第二应用程序123和第三应用程序125在应用程序控制器120的控制下运行。第一应用程序121、第二应用程序123和第三应用程序125中分别为第一应用程序服务器20、第二应用程序服务器30和第三应用程序服务器40的客户端侧应用程序。所属领域的技术人员可理解TCP/IP协议栈130可由软件、硬件和/或固件的适当组合执行。TCP/IP协议栈130、无线调制解调器140和天线142在配合完成报文的发送和接收。应用程序控制器120具体可以为处理器,或者处理器核。
第一应用程序121可以是从第一应用程序服务器20请求信息的网页浏览器。为了便于第一应用程序121与第一应用程序服务器21间的通信,第一应用程序121与该服务器均创建相应的套接字(socket),并基于套接字建立TCP/IP连接,然后通过该TCP/IP连接传输数据。客户端套接字和服务器套接字称为套接字对(socket pair)。每个套接字对通常由唯一的5元组结构来进行描述,该唯一的5元组结构由协议ID、源IP地址和目的地IP地址以及源端口号和目的地端口号组成。
第一应用程序121与第一应用程序服务器21之间的TCP/IP连接的建立可由第一应用程序121发起。第一应用程序121生成套接字开启(socket open)命令,该命令被传递给TCP/IP协议栈130,以触发TCP/IP协议栈130通过三次消息交互(也称为“三次握手”)与第一应用程序服务器21建立TCP/IP连接,然后,TCP/IP协议栈通知第一应用程序121连接已经建立。
接下来,第一应用程序121和第一应用程序服务器21就可以基于建立的TCP连接传送被封装为TCP报文的数据了。TCP报文的格式如图3所示,其中,源端口和目的端口用于确定发送端和接收端应用进程,通过源端口、目的端口、源IP地址和目的IP地址可以唯一确定一个TCP连接;TCP报文头部的序列号(Sequence Number,一般也简称为seq)字段用于指示报文的序号,通常情况下,报文的序号为报文负荷中第一个数据字节的序列号。接收端在接收到TCP报文后,发送确认报文(Acknowledgement,简称ACK)报文至发送端。ACK头部的确认号(Acknowledge Number,一般也简称为ack)字段值,表征接收端接收到的报文的"Sequence Number"字段的值,同时也意味着接收端已经接收到发送端发送所有"SequenceNumber"的值小于所述ACK报文的"Acknowledge Number"的报文。窗口大小用于指示接收端当前接收缓冲区的大小。另外,TCP报文头部还有6个标志位以及一个可自定义的选项(Option)字段,选项字段可以用于携带额外的信息;其中6个标志位的定义如下:
URG:紧急指针有效;
ACK:确认号有效;
PSH:立即上送应用层处理;
RST:异常复位;
SYN:同步标志,置1建立连接;
FIN:终止标志,请求释放连接。
下面通过具体实例来说明TCP重传及拥塞控制机制,为了简化描述,本发明实施例中将已建立连接的两个设备中的一个称为发送端,另一个称为接收端。可以理解的是,发送端和接收端可以是具有数据收发能力的任何设备。比如,发送端可以是上述的服务器,接收端可以使上述的终端。另外,发送端和接收端是两个相对的角色,且可以互相转换,即同一设备在不同的场景下可能是发送端,也有可能是接收端。
TCP的重传机制保证了报文的可靠传输,重传机制主要包括超时重传和快速重传。超时重传的基本过程是:发送端在发送一个报文后就开启一个超时计时器,如果超时计时器的计时时间到,发送端仍没有接收到表征该报文已被正确接收的确认报文,就重新发送该报文。超时计时器的值一般表示为RTO(Retransmission TimeOut),RTO通常设置为与RTT(Round Trip Time)相同,也就是一个报文从发出去到回来所用的时间,RTT可以通过采样的方式得出。
快速重传(Fast Retransmit)算法不以时间驱动,而以数据驱动重传。如图4所示,假设发送端发出了序列号为1,2,3,4,5的5个报文,序列号为1的报文(简称报文1)最先被接收端接收了,于是接收端回复确认号ack=2的确认报文ACK2,如果报文2因为网络拥塞或者丢包没有到达接收端,而报文3到达了,接收端还是回复ACK2,因为TCP采取的是累积确认机制,如果发生了报文乱序到达或者丢包,接收端只会重复确认最后一个按序到达的报文,即ACK中的序列号不能跳变,只能是到达接收端的最后一个连续报文的序列号。同理,如果报文4和5都到达了,而报文2还没有到达接收端,接收端发送的积累确认的序列号仍然是2,于是发送端收到了多于三个ack=2的确认报文,判断报文2丢失,于是发送端立即再次重传序列号为2的报文。然后,接收端收到了2,此时因为3,4,5都收到了,于是接收端回复确认号ack=6的确认报文ACK6。可以看出,引入快速重传机制之后,如果发送序列中的某些报文丢失,发送端会重传最后积累确认的序列号之后的报文,这样原先已经正常接收的报文也可能被重复发送,从而会增大网络拥塞,降低TCP的传输性能。
RFC 2018提出了一种选择性确认(Selective Acknowledgment,即SACK)技术,通过在确认报文头部扩展一个Selective Acknowledgement(SACK)选项,用于指示接收端已经接收到并缓存的不连续的数据块,发送端可根据此信息检查究竟是哪些数据丢失。如图5所示,发送端根据接收端返回的确认报文中的SACK选项,即可知道哪些报文已被接收端接收,哪些报文未被接收端接收,进而,发送端只需要重传丢失的包,而不用发送积累确认之后的所有包。
TCP通过重传机制可以保证报文的可靠传输,但重传也可能会造成网络拥塞加剧,尤其是网络传输时延较大的时候,为了缓解拥塞问题,TCP引入了拥塞控制算法。拥塞控制算法主要包括:(1)慢启动(Slow Start);(2)拥塞避免(Congestion Avoidance)。其中,慢启动的算法的原理如下:
1)TCP连接建立后初始化拥塞窗口cwnd=1(cwnd全称Congestion Window),表明可以发送一个报文,或者1个MSS(Maximun Segment Size)的数据;
2)每当收到一个ACK,cwnd++;呈线性上升;
3)每当过了一个RTT,cwnd=cwnd*2;
具体如图6所示,cwnd从1增加到2,再从2增加到4,呈指数上升。当然,cwnd不可能无限制增长,因此,发送端还设置了慢启动阈值(slow start threshold)ssthresh,表示拥塞窗口的上限,当cwnd>=ssthresh时,就会进入“拥塞避免算法”。一般来说ssthresh的值是65535,单位是字节,当cwnd达到这个值时后,触发拥塞避免算法。一种典型的拥塞避免算法如下:
1)收到一个ACK时,cwnd=cwnd+1/cwnd
2)当每过一个RTT时,cwnd=cwnd+1
这样就可以避免报文增长过快导致网络拥塞,慢慢的增加调整到网络的最佳值。
进一步的,当数据传输过程中出现丢包,必然会引起超时重传或快速重传,发送端在重传丢失的报文的同时,也会根据丢包这一现象判定网络发生拥塞,进而减小拥塞窗口的大小,以及时减小报文注入网络的速度,从而减轻网络的拥塞。可以理解的是,减小拥塞窗口的具体方式在不同的算法中有不同的定义,在此不一一列举,另外,有些拥塞避免算法在减小拥塞窗口的同时,还会进一步减小慢启动阈值ssthresh。
基于上述丢包重传和丢包退避的方案,本发明实施例提供一种报文传输方法,其基本原理包括:接收端对于首次收到的重传报文,在其确认报文的TCP头部携带特殊信息以提示发送端该重传报文被重复接收了,并发送至发送端;发送端在收到该确认报文后,会根据确认报文中携带的特殊信息推断此次丢包是乱序而非拥塞导致的丢包,且由于此报文丢失触发的重传和拥塞窗口退避也是不必要的,发送端将据此补偿拥塞窗口大小和慢启动阈值,从而提高下行吞吐率。下面通过更具体的实施例来描述本发明技术方案。
如图7所示,本发明实施例提供一种报文传输方法,该方法包括:
步骤701:发送端与接收端通过三次握手建立TCP连接后,发送端通过该TCP连接向接收端传输多个报文(如图7的报文1-4)。
步骤702:接收端在接收到来自发送端的报文后,向发送端返回确认报文(如图7中从接收端指向发送端的箭头所示);其中,返回的确认报文是针对接收端已接收的报文的,即接收端每成功接收一个报文,就会针对该报文构造对应的确认报文,并发送给发送端。
可选地,在一个实施例中,发送端发送的报文的序列号(seq)是递增的,且递增的幅度是和传输的报文的字节数相关的。例如,三次握手后,发送端发送前两个报文的长度均为1440字节,第一个报文的seq为初始值1,则第二个报文的seq就为1441;相应地,如果接收端正确接收到第一个报文,会返回针对第一个报文的确认报文,表示第一个报文收到了,且返回的确认报文的ack为第二个报文的seq,即1441。发送端发送后续报文时,报文seq的变化以及接收端返回的确认报文的ack的变化可以此类推,另外,关于seq和ack的定义可参见图3及相关实施例,此处不再赘述。
可选地,在步骤701之后,发送端还可以记录已发送的报文的最大序列号,用于后续的丢包检测。
步骤703:发送端基于丢包检测算法判断出第一报文丢失之后,立即将丢失的第一报文重传,并触发拥塞避免算法,以减小拥塞窗口和/或慢启动阈值;其中,重传的第一报文(即FR 3)也称为重传报文,重传报文FR3的序列号与所述第一报文携带的序列号相同。
步骤705:接收端在首次接收到重传报文FR 3后,立即构造该重传报文对应的第一确认报文,并发送给发送端,其中,第一确认报文包含重复指示字段,该重复指示字段用于表示第一报文被重复接收。这里所描述的“立即”,是指在接收到重传报文FR3之后的合理的处理时间间隔内,该时间间隔大于等于零,并且小于,甚至远小于第一报文的超时计时器的周期。例如,如果第一报文对应的超时计时器的周期为T,则预定时间间隔应小于T,或者小于T/2,甚至小于T/4。优选地,该预定时间间隔等于零或者趋近于零,即接收端几乎是在接收到重传报文FR3的同时发送第一确认报文的。
具体地,在一个实施例中,接收端在首次接收到重传报文FR3之前,并未接收到和重传报文FR3的序列号(与第一报文的序列号相同)相同的任何报文,也就是说,第一确认报文是接收端首次接收到和第一报文序列号相同的报文时发送的。
步骤707:发送端接收第一确认报文,根据第一确认报文携带的重复指示字段,补偿拥塞窗口。具体地,发送端根据重复指示字段中的报文序列号推断:第一报文是乱序而非拥塞导致的丢包,且因为第一报文丢失而触发的重传和拥塞窗口退避是不必要的,因此发送端会增加拥塞窗口大小。可选地,在一个实施例中,发送端在增加拥塞窗口大小的同时,还会增大慢启动阈值。
在步骤703中,发送端可使用的丢包检测算法有多种。以图4所示的快速重传机制为例,如果发送端接收到N个(一般情况下,N等于3)及以上的ack值相同的确认报文,根据这N个确认报文的ack,就可以确定序列号为该相同ack值加1的第一报文丢失。又例如,在另一个实施例中,如果发送端和接收端开启了SACK功能,则接收端回复的确认报文中会携带扩展的SACK选项,用于指示接收缓冲区的报文信息,其中,接收缓冲区用于临时存储已接收的报文。SACK选项位于TCP报头的Option字段,SACK选项的格式如图8所示,其中,SACK选项包含一个或多个块(Block),每一个块指示接收端收到的一个不连续块的边界,例如,LeftEdge of 1st Block为不连续块的第一个报文段的序列号,Right Edge of 1st Block为不连续块的最后一个报文段的序列号之后的序列号,以此类推。SACK选项长度可变,每一个块占用32个字节,由于整个TCP选项长度不超过40字节,所以SACK最多包含不超过4个块,即4组边界值。SACK选项由接收端产生并通告给发送端,发送端可根据此信息确认出丢失的报文,并重传丢失的报文。
可选地,在步骤703中,发送端也可以在第一报文的超时计时器超时之后,启动超时重传,以重传第一报文。其中,超时重传的具体实现细节可参见前述实施例。通常,协议栈给每个报文设置相同的超时计时器周期都相同,即每个报文都有相同的超时计时器周期。
同样地,步骤703中的拥塞避免算法也有多种。在一个实施例中,如果第一报文丢失导致超时重传,则发送端可以将慢启动阈值减小为cwnd/2,然后将cwnd置为1,重新进入慢启动过程。在另一个实施例中,如果发送端根据ACK判断第一报文丢失并启动快速重传后,可以将拥塞窗口减小一半,同时将慢启动阈值设置为更新后的拥塞窗口大小。在另一个实施例中,发送端判断第一报文丢失后,也可以仅将拥塞窗口减小1/2,1/3或其它合理的值,但不调整慢启动阈值。可以理解的是,不同的拥塞避免算法对拥塞窗口和慢启动阈值减少的幅度和方式有所区别,但都是依据丢包退避的原理,即当发送端判定发生网络丢包后,主动减小拥塞窗口大小和/或慢启动阈值。
关于拥塞避免算法的具体实现细节请参见图6及相关的实施例,此处不再赘述。
在步骤705中,接收端根据接收到的重传报文的序列号,以及当前已接收并缓存的报文的序列号,确定是否首次接收到该重传报文。
可选地,在一个实施例中,步骤705中的重复指示字段包含所述第一报文的序列号。在另一个实施例中,重复指示字段可以同时包含所述第一报文的序列号以及长度(通常用字节表示)。
可选地,在一个实施例中,如果发送端和接收端开启了SACK选项,重复指示字段位于所述第一确认报文的SACK选项。优选地,重复指示字段可以位于第一确认报文的SACK选项的第一个块(Block),该block也可以称为DSACK(Duplicate SACK)block,用于向发送端报告接收端接收到的重复的报文。例如,接收端主动构造一块包含第一报文序列号的字段,插入到第一确认报文中的SACK选项的第一块。如果插入后,第一确认报文的SACK选项超过了最大限制(四块),则删除最后一块。
在另一个实施例中,重复指示字段位于第一确认报文头部的其它未被占用的域(field)。在另一个实施例中,重复指示字段也可以与第一确认报文头部的现有字段复用同一个域。例如ack字段所占用的32字节的域,可以分配一部分字节给重复指示字段。
本发明实施例提供的报文传输方法中,接收端对于只收到过一次的重传报文,在该重传报文的确认报文头部携带包该重传报文序列号的重复指示字段,并发送至发送端,以“欺骗”发送端该重传报文被重复接收了,发送端在收到包含重复指示字段的确认报文后,会根据重复指示字段记录的序列号推断之前重传的该序列号的报文所引起的拥塞窗口退避是不必要的,发送端据此补偿拥塞窗口大小和/或慢启动阈值。
本发明实施例提供的报文传输方法在网络环境中测试结果如下表所示。在无线网络场景下,使用本发明实施例的报文传输方法,移动设备的下行吞吐率提升30%左右。
Figure BDA0001199780500000211
Figure BDA0001199780500000221
在另一种场景下,若发送端和接收端开启了时间戳选项(Timestamp Option),则每个TCP报文都会包含了两个时间戳字段(TSval和TSecr)。通常TSval和TSecr的长度均为32比特,TSval用于表示发送端在发送TCP报文时的Timestamp,接收端在发送针对该TCP报文的ACK时,将该TCP报文的TSval值回显在ACK的TSecr字段中。由于TCP连接是双向的,接收端在ACK中回显TSecr时,也会把自己当前的Timestamp放入TSval字段。Timestamp是一个随时间单调递增的值,由于接收端只需要在ACK中将TSval简单地回显,因此通信双方并不需要进行时间同步。具体地,如图9所示,发送端向接收端发送了序列号为30-34的5个报文,每个报文的TSval指示了该报文的发送时间戳10,相应地,接收端每收到一个报文之后,向发送端发送针对该报文的ACK,并且该ACK的TSecr字段会填入该报文的TSval值10,该ACK的TSval字段指示了接收端发送此ACK的时间戳5。
进一步的,在发送端和接收端开启了时间戳选项的场景下,基于图7相关的实施例所描述的报文传输方法的原理,本发明实施例提供另一种报文传输方法,如图11所示,包括以下步骤:
S1:发送端基于接收到的确认报文判定有报文丢失,则会重传该丢失的报文,并减小拥塞窗口和/或慢启动阈值。如图9所示,发送端接收到了多个ack=31的确认报文,判定序列号为31的报文丢失。进一步地,如图10所示,发送端会立即重传序列号为31的报文,其中重传报文的序列号不变,但是发送时间戳TSval更新为12(首次发送该序列号的报文的时间戳为10)。另外,发送端在重传序列号为31的报文的同时,可能也继续发送了序列号为35-37的报文。
S2:接收端在第一次收到发送端发送的该重传报文(比如图10中序列号为31的报文)之后,读取该重传报文的时间戳选项中的TSval字段,该TSval字段的值为TSrexmit,用于表示该重传报文的发送时间戳。在图10所示的示例中,重传报文的TSval字段的值为12,即TSrexmit=12,表明重传报文的发送时间戳为12。
S3:接收端读取与该重传报文的序列号前后相邻的报文的时间戳选项中的Tsval字段值,分别记为TSbefore和TSafter,且TSbefore≤TSafter,然后根据夹逼准则,或者其他类似算法,计算出一个小于TSrexmit的近似TSval值,记为TSxmit。该近似TSval值满足TSbefore≤TSxmit≤TSafter。例如,如所10所示,接收端根据序列号为30和32的报文的TSval值10,确定出TSxmit=10。
S4:接收端按照TCP协议规范构造针对该重报报文的确认报文,其中,构造的该确认报文的TSecr字段的值被设置为计算出的近似TSval值TSxmit,而并非该重传报文的实际发送时间戳,即接收端伪造了该重传报文的时间戳。如图10所示,重传报文对应的确认报文中TSecr字段的值被设置为10。这样,发送端根据该确认报文中伪造的时间戳确定:该确认报文是针对之前被判定为丢包的报文(图9中序列号为31,发送时间戳为10的报文)的,因此之前判定该报文丢包为误判,而因此退避拥塞窗口也是不必要的,所以会补偿拥塞窗口。
S5:接收端将构造的确认报文发送给发送端;
S6:发送端在收到S5中构造的确认报文之后,根据此确认报文的TSecr字段所记录的时间戳推断:此确认报文是响应之前发送过的序列号相同的报文,而非该重传报文(即此序列号的报文并未丢失),因为判定此序列号的报文丢失触发的重传和拥塞窗口退避也是不必要的,发送端据此补偿拥塞窗口大小和/或慢启动阈值。
在本发明实施例提供的报文传输方法中,接收端对于只收到过一次的重传报文,通过伪造时间戳选项,以“欺骗”发送端该重传报文被重复接收了,发送端进而推断之前重传的该序列号的报文所引起的拥塞窗口退避是不必要的,并据此补偿拥塞窗口大小和/或慢启动阈值,达到了与图7所示的报文传输方法类似的效果。
需要说明的是,图7或图11相关实施例所描述的报文传输方法中,接收端执行的操作可由终端、服务器或者是网络设备来实施。
在一个实施例中,图7或图11相关实施例所描述的发送端的功能,由第一应用程序服务器20的TCP/IP协议栈来实现,接收端的功能由终端110的TCP/IP协议栈来实现。其中,终端110的TCP/IP协议栈可由终端110上的软件、硬件和/或固件的适当组合执行。例如,在一种可能的实现方式中,TCP/IP协议栈以可执行程序的形式存储于存储器中;终端110的处理器运行TCP/IP协议栈对应的可执行程序,以执行上述各方法实施例所描述的接收端的部分或全部步骤。在另一种可能的实现方式中,TCP/IP协议栈可以由现场可编程门阵列(Field Programmable Gata Array,FPGA)或特定用途集成电路(Application SpecificIntegrated Circuit,ASIC)等硬件电路或专用芯片来实现,该TCP硬件电路或专用芯片执行上述方法步骤的相关细节可以参见上述方法实施例,在此不再赘述。
在另一个实施例中,图7或图11相关实施例所描述的接收端的功能由第一应用程序服务器20的TCP/IP协议栈来实现,而发送端的功能由终端110的TCP/IP协议栈来实现。相关实现细节可参照前述各个实施例,不再赘述。
可以理解的是,本发明实施例所描述的报文传输方法,还可以应用于网络设备中,该网络设备为接入点或者路由器,用于在发送端和接收端之间报文转发。
如图12所示,在开启时间戳选项的场景下,网络设备将发送端发出的报文(包括重传报文)转发给接收端,接收端接收到重传报文之后,按照现有技术方式构造针对该重传报文的确认报文并返回该确认报文。该确认报文经过网络设备时,网络设备按照图11中步骤S3描述的方式,计算出近似TSval值,然后将该确认报文中当前的TSecr值替换为计算出的近似TSval值(如图12所示,重传报文的ACK中的TSecr由12变为了10),最后,网络设备将更新后的确认报文发送出去,发送端在接收到该更新后的确认报文后,根据此确认报文的TSecr字段更新的值,补偿拥塞窗口大小和/或慢启动阈值。关于计算近似TSval值的相关实现细节可参照图11相关的实施例,不再赘述。
类似地,在开启SACK选项的场景下,当接收端返回的针对重传报文的确认报文之后,网络设备也可以采用图7中步骤705描述的方法,在确认报文中添加重复指示字段,然后再转发给发送端,发送端进而根据该重复指示字段补偿拥塞窗口大小和/或慢启动阈值。关于设置重复指示字段的相关实现细节可参照图7相关的实施例,不再赘述。
如图13所示,本发明实施例还提供了一种终端300,根据图13,终端300包括应用处理器310、存储器320、通信子系统330和电源管理子系统340。其中,存储器320存储有可执行程序,该可执行程序包括操作系统、协议栈程序和应用程序。电源管理子系统340用于系统的供电,具体可以为电源管理芯片。
通信子系统330为终端300的基本通信单元。在一个实施例中,通信子系统130为无线调制解调器(Modem),主要实现基带处理、调制解调、信号放大和滤波、均衡等功能。通信子系统330包括基带处理器331、射频模块332和天线333;其中,基带处理器331和应用处理器333可以集成在同一芯片中。在另一个实施例中,基带处理器331和应用处理器310可以分离式部署:基带处理器331和应用处理器310作为两个独立的芯片通过核间通信方式进行信息的交互。采用分离式部署方式,基带处理器331相当于应用处理器310的一个外设,两个处理器需要各自独立的外接存储器、以及软件升级接口。
射频模块332主要负责信号发送和接收;基带处理器331负责信号的处理,比如信号的A/D、D/A转换、信号的编解码、信道编解码。基带处理器331支持无线通信标准中的一种或多种,这里的无线通信标准包括但不限于GSM、CDMA 1x、CDMA2000、WCDMA、HSPA、LTE等。在一个实施例中,射频模块332包括实现射频收发、频率合成、功率放大等功能的射频电路,该射频电路可以封装在射频芯片中。在另一个实施例中,射频模块332包含的部分或全部射频电路和基带处理器131一起集成在基带芯片中。
存储器320一般包括内存和外存。内存可以为随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)等。外存可以为硬盘、光盘、USB盘、软盘或磁带机等。可执行程序通常被存储在外存上,应用处理器310会将可执行程序从外存加载到内存后再执行该程序。
可选地,终端300还包括Wi-Fi(Wireless Fidelity,无线保真)模块350,Wi-Fi模块350支持IEEE 802.11系列协议,终端300可以通过Wi-Fi模块350接入无线局域网(WLAN)。在一个实施例中,Wi-Fi模块350可以为Wi-Fi芯片,通过总线与应用处理器310通信;在另一实施例中,Wi-Fi模块350可以集成在通信子系统330中,比如集成在基带处理器331上。
可以理解的是,通信子系统330和Wi-Fi模块350均用于从外部接收数据或者将终端300的数据发送至外部设备。终端300通常会同时包含通信子系统330和Wi-Fi模块350,以同时支持蜂窝网络接入和WLAN接入。但出于成本或其它因素,终端300也可以只包含通信子系统300和Wi-Fi模块350中的一个。
可选地,终端300还包括显示器360,用于显示由用户输入的信息或提供给用户的信息以及终端300的各种菜单界面等。显示器360可为液晶显示器(Liquid CrystalDisplay,LED)或有机发光二极管(Organic Light-Emitting Diode,OLED)等。在其他一些实施例中,显示器360上可以覆盖触控面板,以形成触摸显示屏。
除以上之外,终端300还可以包括用于拍摄照片或视频的摄像头380、一个或多个传感器370,例如重力传感器、加速度传感器、光传感器等。
此外,所属领域的技术人员可以理解终端300可包括比图13中所示部件更少或更多的部件,图13所示的终端仅示出了与本发明实施例所公开的多个实现方式的更加相关的部件。
具体地,如图13所示,存储器320存储的可执行程序包括:操作系统、协议栈程序和应用程序。在一些场景下,协议栈程序为一个独立的可执行程序,操作系统通过接口调用协议栈以进行报文处理。在一些场景下,协议栈程序也可以被包含在操作系统中,作为操作系统内核的一部分。其中,协议栈程序按照协议层级或功能又可以分为多个模块,每一个模块实现一层协议的功能,比如网络层模块用于实现网络层协议(比如IP协议),传输层模块用于实现传输层协议(比如TCP或者UDP协议),等等。当通信子系统330或Wi-Fi模块350接收到报文后,终端300的硬件驱动程序将报文加入缓存队列,并通知操作系统,操作系统通过系统调用接口调度协议栈的各个模块,以执行图7或11相关的实施例所描述的工作流程。
需要说明的是,本发明实施例所使用的术语“可执行程序”应被广泛地解释为包括但不限于:指令,指令集,代码,代码段,子程序,软件模块,应用,软件包,线程,进程,函数,固件,中间件等。
本发明实施例还提供一种网络设备400,如图14所示,该网络设备400包括:处理电路402,以及与其连接的通信接口404和存储介质406。
处理电路402用于处理数据,控制数据访问和存储,发出命令以及控制其它组件执行操作。处理电路402可以被实现为一个或多个处理器,一个或多个控制器和/或可用于执行程序的其它结构。处理电路402具体可以包括通用处理器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑组件中的至少一种。通用处理器可以包括微处理器,以及任何常规的处理器,控制器,微控制器,或状态机。处理电路302也可以实现为计算组件,例如DSP和微处理器的组合。
存储介质406可以包括计算机可读存储介质,如磁存储设备(例如,硬盘,软盘,磁条),光存储介质(例如,数字多功能盘(DVD)),智能卡,闪存设备,随机存取存储器(RAM),只读存储器(ROM),可编程ROM(PROM),可擦除PROM(EPROM),寄存器,以及它们的任意组合。存储介质406可以耦合到处理电路402以使得处理电路402可读取信息和将信息写入到存储介质406。具体地,存储介质406可以集成到处理电路402,或者存储介质406和处理电路302可以是分开的。
通信接口404可包括电路和/或程序以实现终端400与一个或多个无线网络设备(例如,路由器、交换机、接入点等等)之间的双向通信。通信接口404包括至少一个接收电路416和/或至少一个发射电路418。在一个实施例中,通信接口404可以是全部或部分由无线调制解调器来实现。
在一个实施例中,存储介质406中存储有协议栈程序420,处理电路402被适配为执行存储在存储介质406中的协议栈程序420,以实现协议栈的功能。其中协议栈具体实现了上述图7或11相关的实施例中的部分或全部步骤。
基于以上各个实施例描述的报文传输方法,本发明实施例还提供一种报文传输装置500,如图15所示,该报文传输装置500包括:接收单元501,处理单元503以及发送单元505,其中,接收单元501用于接收来自发送端的重传报文,该重传报文是发送端判定已发送的第一报文丢失后重传的,且接收单元首次接收到该重传报文;处理单元503用于构造针对该重传报文的第一确认报文,该第一确认报文包含重复指示字段,以用于指示第一报文被重复接收,以及用于触发发送端增加拥塞窗口的大小和/或慢启动阈值;发送单元505用于将处理单元503构造的确认报文发送给发送端。其中,处理单元503构造第一确认报文,以及发送单元505发送确认报文的实现细节可以参见前述图7或图11相关的方法实施例,不再赘述。
以上对本发明实施例所提供的报文传输方法和设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (25)

1.一种传输报文的方法,其特征在于,包括:
终端接收服务器发送的重传报文,所述重传报文是所述服务器判定已发送的第一报文丢失后重传的,且所述重传报文的序列号与所述第一报文携带的序列号相同;
所述终端在首次接收到所述重传报文之时,向所述服务器发送用于响应所述首次接收到的重传报文的第一确认报文,所述第一确认报文包含重复指示字段,所述重复指示字段用于触发所述服务器增加拥塞窗口的大小和/或慢启动阈值,其中,所述重复指示字段是所述终端伪造的,用于欺骗所述服务器所述重传报文被重复接收。
2.根据权利要求1所述的方法,其特征在于,所述第一确认报文是所述终端首次接收到和所述第一报文序列号相同的报文时发送的。
3.根据权利要求2所述的方法,其特征在于,所述第一确认报文还包含SACK选项,所述SACK选项用于指示所述终端已接收报文的序列号信息。
4.根据权利要求3所述的方法,其特征在于,所述重复指示字段包含所述第一报文的序列号;所述重复指示字段位于所述第一确认报文的SACK选项的第一个块(Block)。
5.根据权利要求3所述的方法,其特征在于,所述重复指示字段包含所述第一报文的序列号;所述重复指示字段为DSACK块,所述DSACK用于向所述服务器报告被所述终端重复接收的报文。
6.根据权利要求1至5任一项所述的方法,其特征在于,在所述终端接收服务器发送的重传报文之前,还包括:所述终端通过无线网络与所述服务器建立TCP连接;所述无线网络包括至少一个接入点。
7.一种传输报文的方法,其特征在于,所述方法包括:
终端接收服务器发送的重传报文,所述重传报文是所述服务器确定已发送的第一报文丢失后重传的,且所述重传报文的序列号与所述第一报文携带的序列号相同;所述重传报文包含用于指示所述重传报文的发送时间戳的TSval字段,所述TSval字段的值为TSrexmit,表示所述重传报文的实际发送时间为TSrexmit
所述终端在首次接收到重传报文之时向所述服务器发送用于响应所述首次接收到的重传报文的第一确认报文,所述第一确认报文包含用于向所述服务器报告所述重传报文的发送时间戳的TSecr字段,所述TSecr字段的值设置为TSxmit,且TSxmit<TSrexmit,所述TSecr字段用于触发所述服务器增加拥塞窗口的大小和/或慢启动阈值;所述TSecr字段是所述终端伪造的,用于欺骗所述服务器所述重传报文被重复接收。
8.根据权利要求7所述的方法,其特征在于,TSbefore≤TSxmit≤TSafter;其中,TSbefore和TSafter分别是与所述重传报文的序列号前后相邻的报文的发送时间戳。
9.根据权利要求7或8所述的方法,其特征在于,所述终端和所述服务器开启了TCP时间戳选项,所述方法还包括:
所述终端和所述服务器建立TCP连接。
10.一种终端,其特征在于,包括:应用处理器、存储器和通信子系统,所述存储器存储有协议栈程序;
所述通信子系统用于,接收服务器发送的重传报文,所述重传报文是所述服务器判定已发送的第一报文丢失后重传的,且所述重传报文的序列号与所述第一报文携带的序列号相同;
所述应用处理器运行所述存储器中的所述协议栈程序,以用于:
在所述通信子系统首次接收到所述重传报文之时,构造用于响应所述首次接收到的重传报文的第一确认报文,所述第一确认报文包含重复指示字段,所述重复指示字段用于触发所述服务器增加拥塞窗口的大小和/或慢启动阈值,其中,所述重复指示字段是所述终端伪造的,用于欺骗所述服务器所述重传报文被重复接收;
所述通信子系统还用于,发送构造的所述第一确认报文。
11.根据权利要求10所述的终端,其特征在于,所述通信子系统具体用于,在首次接收到和所述第一报文序列号相同的报文时发送构造的所述第一确认报文。
12.根据权利要求11所述的终端,其特征在于,所述第一确认报文还包含SACK选项,所述SACK选项用于指示所述终端已接收报文的序列号信息。
13.根据权利要求12所述的终端,其特征在于,所述重复指示字段包含所述第一报文的序列号;所述重复指示字段位于所述第一确认报文的SACK选项的第一个块(Block)。
14.根据权利要求10至13任一项所述的终端,其特征在于,所述终端通过至少一个接入点接入无线网络,并与所述服务器建立TCP连接。
15.一种终端,其特征在于,包括:应用处理器、存储器和通信子系统,所述存储器存储有协议栈程序;
所述通信子系统用于,接收服务器发送的重传报文,所述重传报文是所述服务器判定已发送的第一报文丢失后重传的,所述重传报文的序列号与所述第一报文携带的序列号相同,所述重传报文包含用于指示所述重传报文的发送时间戳的TSval字段,所述TSval字段的值为TSrexmit,表示所述重传报文的实际发送时间为TSrexmit
所述应用处理器运行所述存储器中的所述协议栈程序,以用于:
在所述通信子系统首次接收到所述重传报文之时,构造用于响应所述首次接收到的重传报文的第一确认报文,其中,所述第一确认报文包含用于向所述服务器报告所述重传报文的发送时间戳的TSecr字段,所述TSecr字段的值为TSxmit,且TSxmit<TSrexmit,所述TSecr字段用于触发所述服务器增加拥塞窗口的大小和/或慢启动阈值;所述TSecr字段是所述终端伪造的,用于欺骗所述服务器所述重传报文被重复接收;
所述通信子系统还用于,发送构造的所述第一确认报文。
16.根据权利要求15所述的终端,其特征在于,TSbefore≤TSxmit≤TSafter;其中,TSbefore和TSafter分别是与所述重传报文的序列号前后相邻的报文的发送时间戳。
17.一种网络设备,用于在发送端和接收端之间转发报文,其特征在于,所述网络设备包括:处理电路、通信接口和存储介质;
所述通信接口用于,接收由所述发送端发往所述接收端的重传报文,将所述重传报文转发给所述接收端,以及接收所述接收端响应于所述重传报文的第一确认报文;所述重传报文是所述发送端判定已发送的第一报文丢失后重传的,且所述重传报文的序列号与所述第一报文携带的序列号相同;所述第一确认报文是所述接收端首次接收到所述重传报文之时发送的;
所述存储介质中存储有协议栈程序,所述处理电路被适配为执行存储在所述存储介质中的协议栈程序,以用于:
在所述第一确认报文中添加重复指示字段,以得到第二确认报文;所述重复指示字段用于触发所述发送端增加拥塞窗口的大小和/或慢启动阈值,其中,所述重复指示字段是终端伪造的,用于欺骗服务器所述重传报文被重复接收;
所述通信接口还用于,发送所述第二确认报文。
18.根据权利要求17所述的网络设备,其特征在于,所述第一确认报文是所述接收端首次接收到和所述第一报文序列号相同的报文时发送的。
19.根据权利要求17或18所述的网络设备,其特征在于,所述第一确认报文和第二确认报文还包含SACK选项,所述SACK选项用于指示所述接收端已接收报文的序列号信息。
20.根据权利要求19所述的网络设备,其特征在于,所述重复指示字段包含所述第一报文的序列号;所述重复指示字段位于所述第二确认报文的SACK选项的第一个块(Block)。
21.根据权利要求19所述的网络设备,其特征在于,所述网络设备为接入点,所述接收端通过所述网络设备接入无线网络,并与所述发送端建立TCP连接。
22.一种网络设备,用于在发送端和接收端之间转发报文,其特征在于,所述网络设备包括:处理电路、通信接口和存储介质;
所述通信接口用于,接收由所述发送端发往所述接收端的重传报文,将所述重传报文转发给所述接收端,以及接收所述接收端响应于所述重传报文的第一确认报文;所述重传报文是所述发送端判定已发送的第一报文丢失后重传的,所述重传报文的序列号与所述第一报文携带的序列号相同,所述重传报文包含用于指示所述重传报文的发送时间戳的TSval字段,所述TSval字段的值为TSrexmit,表示所述重传报文的实际发送时间为TSrexmit;所述第一确认报文是所述接收端首次接收到所述重传报文之时发送的;所述第一确认报文包含用于向所述发送端报告所述重传报文的发送时间戳的TSecr字段,所述TSecr字段用于触发服务器增加拥塞窗口的大小和/或慢启动阈值;所述TSecr字段是终端伪造的,用于欺骗所述服务器所述重传报文被重复接收;
所述存储介质中存储有协议栈程序,所述处理电路被适配为执行存储在所述存储介质中的协议栈程序,以用于:
将所述第一确认报文包含的时间戳选项中的TSecr值替换为TSxmit,以得到第二确认报文;其中,TSxmit<TSrexmit
所述通信接口还用于,发送所述第二确认报文。
23.根据权利要求22所述的网络设备,其特征在于,TSbefore≤TSxmit≤TSafter;其中,TSbefore和TSafter分别是与所述重传报文的序列号前后相邻的报文的发送时间戳。
24.一种通信系统,其特征在于,包括:终端和服务器;
所述服务器用于,向所述终端发送重传报文,所述重传报文是所述服务器判定已发送的第一报文丢失后重传的,且所述重传报文的序列号与所述第一报文携带的序列号相同;
所述终端用于,在首次接收到所述重传报文之时,构造用于响应所述首次接收到的重传报文的第一确认报文,并将所述第一确认报文发送给所述服务器,所述第一确认报文包含重复指示字段,所述重复指示字段用于触发所述服务器增加拥塞窗口的大小和/或慢启动阈值,其中,所述重复指示字段是所述终端伪造的,用于欺骗所述服务器所述重传报文被重复接收;
所述服务器还用于,根据所述第一确认报文的所述重复指示字段,增加拥塞窗口的大小和/或慢启动阈值。
25.一种通信系统,其特征在于,包括:终端和服务器;
所述服务器用于,向所述终端发送重传报文,所述重传报文是所述服务器判定已发送的第一报文丢失后重传的,所述重传报文的序列号与所述第一报文携带的序列号相同,所述重传报文包含用于指示所述重传报文的发送时间戳的TSval字段,所述TSval字段的值为TSrexmit,表示所述重传报文的实际发送时间为TSrexmit
所述终端用于,在首次接收到所述重传报文之时,构造用于响应所述首次接收到的重传报文的第一确认报文,并将所述第一确认报文发送给所述服务器,其中,所述第一确认报文包含用于向所述服务器报告所述重传报文的发送时间戳的TSecr字段,所述TSecr字段的值为TSxmit,且TSxmit<TSrexmit,所述TSecr字段用于触发所述服务器增加拥塞窗口的大小和/或慢启动阈值;所述TSecr字段是所述终端伪造的,用于欺骗所述服务器所述重传报文被重复接收;
所述服务器还用于,根据所述第一确认报文,增加拥塞窗口的大小和/或慢启动阈值。
CN201611260835.6A 2016-12-30 2016-12-30 一种报文传输方法、终端、网络设备及通信系统 Active CN108270682B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201611260835.6A CN108270682B (zh) 2016-12-30 2016-12-30 一种报文传输方法、终端、网络设备及通信系统
KR1020197022121A KR102203509B1 (ko) 2016-12-30 2017-12-15 패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템
PCT/CN2017/116601 WO2018121294A1 (zh) 2016-12-30 2017-12-15 一种报文传输方法、终端、网络设备及通信系统
EP17888443.3A EP3554022B1 (en) 2016-12-30 2017-12-15 Packet transmission method and terminal
BR112019013438A BR112019013438A2 (pt) 2016-12-30 2017-12-15 método de transmissão de pacote, terminal, dispositivo de rede e sistema de comunicações
US16/454,947 US10924421B2 (en) 2016-12-30 2019-06-27 Packet transmission method, terminal, network device, and communications system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611260835.6A CN108270682B (zh) 2016-12-30 2016-12-30 一种报文传输方法、终端、网络设备及通信系统

Publications (2)

Publication Number Publication Date
CN108270682A CN108270682A (zh) 2018-07-10
CN108270682B true CN108270682B (zh) 2022-06-24

Family

ID=62710242

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611260835.6A Active CN108270682B (zh) 2016-12-30 2016-12-30 一种报文传输方法、终端、网络设备及通信系统

Country Status (6)

Country Link
US (1) US10924421B2 (zh)
EP (1) EP3554022B1 (zh)
KR (1) KR102203509B1 (zh)
CN (1) CN108270682B (zh)
BR (1) BR112019013438A2 (zh)
WO (1) WO2018121294A1 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109905209B (zh) * 2017-12-07 2020-12-29 网宿科技股份有限公司 一种设置网络乱序值的方法和装置
CN111614574A (zh) * 2019-02-26 2020-09-01 华为技术有限公司 一种通信方法、装置及系统
EP3955493B1 (en) 2019-04-18 2024-03-20 Beijing Xiaomi Mobile Software Co., Ltd. Data transmission method and device, and storage medium
CN110266446B (zh) * 2019-05-15 2022-05-20 网宿科技股份有限公司 一种基于sack模式调整乱序时长的方法和装置
CN110225419A (zh) * 2019-05-15 2019-09-10 深圳市麦谷科技有限公司 一种实现流量控制的丢包重传方法
CN110278191B (zh) * 2019-05-17 2022-05-20 西门子工厂自动化工程有限公司 用户数据报协议通信方法、装置、系统和计算机可读介质
CN111147197B (zh) * 2019-12-30 2022-06-21 北京奇艺世纪科技有限公司 一种数据传输方法及系统
US11438272B2 (en) * 2019-12-31 2022-09-06 Opanga Networks, Inc. System and method for mobility tracking
CN111263102B (zh) * 2020-05-07 2020-08-11 翱捷科技(上海)有限公司 一种基于延迟梯度累积的ViLTE视频通话拥塞控制方法及系统
WO2022056830A1 (en) * 2020-09-18 2022-03-24 Qualcomm Incorporated Fast retransmission of a pdu session establishment request after a lower layer failure
CN112491990B (zh) * 2020-11-17 2021-08-10 中科三清科技有限公司 混合云网络数据传输方法、装置、电子设备及存储介质
CN112511381B (zh) * 2020-11-20 2022-03-29 鹏城实验室 一种链路质量事件检测方法、智能终端及存储介质
CN112492646B (zh) * 2020-11-27 2022-04-08 清华大学 基于拥塞成因识别的拥塞控制方法及装置
CN113114580A (zh) * 2021-04-16 2021-07-13 电子科技大学 面向5g网络拥塞控制的用户态传输协议开发框架及方法
CN113286000A (zh) * 2021-05-21 2021-08-20 国网河北省电力有限公司 应用在电力单向传输系统中的数据收发方法及装置
CN113259062B (zh) * 2021-05-31 2021-10-29 恒生电子股份有限公司 丢包重传的方法、装置、可读介质以及设备
CN113472795A (zh) * 2021-07-05 2021-10-01 南京云利来软件科技有限公司 一种截断的tcp流拼接方法
CN114268588A (zh) * 2021-11-30 2022-04-01 网络通信与安全紫金山实验室 数据传输方法、装置、电子设备及存储介质
CN114244845A (zh) * 2021-12-15 2022-03-25 锐捷网络股份有限公司 一种负载均衡的方法、装置及电子设备
CN114697088B (zh) * 2022-03-17 2024-03-15 神州绿盟成都科技有限公司 一种确定网络攻击的方法、装置及电子设备
CN115174500B (zh) * 2022-05-23 2023-09-12 北京大学 一种基于pisa的用于网内聚合传输的发送节点和交换机
CN115426317B (zh) * 2022-11-03 2023-03-24 新华三信息技术有限公司 数据传输速率控制方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1520104A (zh) * 2003-09-02 2004-08-11 中国科学院计算技术研究所 提高tcp在异构网络中传输性能的方法
CN101047485A (zh) * 2006-03-30 2007-10-03 株式会社Ntt都科摩 通信终端以及重发控制方法
CN104125159A (zh) * 2014-07-29 2014-10-29 福建星网锐捷网络有限公司 一种拥塞带宽检测方法、拥塞控制方法、装置及系统
WO2016201904A1 (zh) * 2015-06-16 2016-12-22 中兴通讯股份有限公司 一种基于tcp的数据传输方法及装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1200368C (zh) 2000-08-18 2005-05-04 清华大学 一种将tcp用于不可靠传输网络的局域重传方法
US7046672B2 (en) * 2000-11-16 2006-05-16 Microsoft Corporation Robust, inferentially synchronized transmission of compressed transport-layer-protocol headers
JP2002290459A (ja) * 2001-03-27 2002-10-04 Nec Corp パケット転送装置および方法
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US20040192312A1 (en) * 2002-07-16 2004-09-30 Jia-Ru Li Communication system for voice and data with wireless TCP server
KR100533686B1 (ko) 2004-05-21 2005-12-05 삼성전자주식회사 모바일 애드 혹 네트워크에서의 데이터 전송 방법 및 이를이용한 네트워크 장치
US7912060B1 (en) * 2006-03-20 2011-03-22 Agere Systems Inc. Protocol accelerator and method of using same
US9049015B2 (en) 2007-09-12 2015-06-02 Cisco Technology, Inc. Allowing TCP ACK to pass a gateway while queuing data for parsing
CN101227478B (zh) * 2008-02-02 2012-09-05 中兴通讯股份有限公司 一种对抗链路乱序的方法
CN101646204B (zh) * 2009-08-24 2011-12-28 上海华为技术有限公司 数据传输方法和无线接入网元
US8787378B2 (en) * 2010-12-28 2014-07-22 The Chinese University Of Hong Kong Systems and methods to improve performance of TCP over large bandwidth-delay-product networks
US9178789B2 (en) * 2011-08-19 2015-11-03 Futurewei Technologies, Inc. System and method for transmission control protocol slow-start
US8964562B2 (en) * 2012-12-31 2015-02-24 Verizon Patent And Licensing Inc. Flow control methods and systems for use with a wireless network
CN103986548B (zh) * 2013-02-07 2018-02-23 华为技术有限公司 一种确定丢包原因的方法和终端
US9432251B2 (en) 2013-03-08 2016-08-30 Qualcomm Incorporated Enhanced acknowledgement and retransmission mechanism
WO2015113214A1 (en) * 2014-01-28 2015-08-06 Mediatek Singapore Pte. Ltd. Methods for enhanced harq mechanism
CN106656431B (zh) * 2015-09-21 2020-09-29 华为技术有限公司 一种报文传输方法及用户设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1520104A (zh) * 2003-09-02 2004-08-11 中国科学院计算技术研究所 提高tcp在异构网络中传输性能的方法
CN101047485A (zh) * 2006-03-30 2007-10-03 株式会社Ntt都科摩 通信终端以及重发控制方法
EP1841118A3 (en) * 2006-03-30 2012-09-12 NTT DoCoMo, Inc. Communication terminal and retransmission control method
CN104125159A (zh) * 2014-07-29 2014-10-29 福建星网锐捷网络有限公司 一种拥塞带宽检测方法、拥塞控制方法、装置及系统
WO2016201904A1 (zh) * 2015-06-16 2016-12-22 中兴通讯股份有限公司 一种基于tcp的数据传输方法及装置

Also Published As

Publication number Publication date
US10924421B2 (en) 2021-02-16
WO2018121294A1 (zh) 2018-07-05
KR20190095487A (ko) 2019-08-14
EP3554022A1 (en) 2019-10-16
CN108270682A (zh) 2018-07-10
EP3554022A4 (en) 2019-11-20
US20190319889A1 (en) 2019-10-17
KR102203509B1 (ko) 2021-01-14
EP3554022B1 (en) 2021-11-03
BR112019013438A2 (pt) 2019-12-31

Similar Documents

Publication Publication Date Title
CN108270682B (zh) 一种报文传输方法、终端、网络设备及通信系统
JP6522855B2 (ja) パケット送信方法およびユーザ機器
JP6924830B2 (ja) パケット送信方法および装置、チップ、ならびに端末
KR102109021B1 (ko) 데이터 전송 방법, 전송 노드, 수신 노드 및 데이터 전송 시스템
EP3742690B1 (en) Data transmission method, computing device, network device and data transmission system
US8306062B1 (en) Method and apparatus of adaptive large receive offload
US10524175B2 (en) Data transmission method and network device
JP4384676B2 (ja) データ通信装置の制御方法
JP4364763B2 (ja) データ通信装置
US9510242B2 (en) Reducing superfluous traffic in a network

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
GR01 Patent grant
GR01 Patent grant