CN117097815B - 一种报文传输方法、系统、电子设备及可读存储介质 - Google Patents
一种报文传输方法、系统、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN117097815B CN117097815B CN202311348049.1A CN202311348049A CN117097815B CN 117097815 B CN117097815 B CN 117097815B CN 202311348049 A CN202311348049 A CN 202311348049A CN 117097815 B CN117097815 B CN 117097815B
- Authority
- CN
- China
- Prior art keywords
- message
- linked list
- descriptor
- descriptor linked
- protocol stack
- 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
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 115
- 238000000034 method Methods 0.000 title claims abstract description 99
- 230000008569 process Effects 0.000 claims description 28
- 230000007704 transition Effects 0.000 claims description 24
- 238000012790 confirmation Methods 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 abstract description 4
- 230000009471 action Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种报文传输方法、系统、电子设备及可读存储介质,涉及通信领域,为解决报文传输效率低的问题,该方法包括:将套接字的发送缓冲区划分为第一缓冲区和第二缓冲区;在第一缓冲区,为应用程序线程分配多个报文和多个报文描述符;多个报文和多个报文描述符一一对应;通过报文和其对应的报文描述符构造节点,并将节点添加到第一缓冲区的第一描述符链表;当第一描述符链表满足推送条件,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据第二描述符链表发送报文。本发明避免了网络协议栈线程和应用程序线程对锁的激烈竞争而产生的性能损耗,提高网络性能,提高报文传输效率。
Description
技术领域
本发明涉及通信领域,特别涉及一种报文传输方法、系统、电子设备及可读存储介质。
背景技术
当前TCP(Transmission Control Protocol,传输控制协议)已经成为ICT(Information and Communications Technology,信息与通讯技术)不可缺少的底层技术,在绝大部分的CPU(Central Processing Unit,中央处理器)上都会运行着TCP/IP(Internet Protocol Address,互联网协议地址)网络协议栈软件,用户态的应用程序以socket(套接字)的方式使用TCP功能,收发网络报文。发送报文的一般过程是,APP(Application,应用程序)调用socket API(Application Program Interface,应用程序接口)将数据传入网络协议栈,网络协议栈将数据放入socket发送缓冲区中,然后立即或通过定时器超时驱动发送这些数据,在发送流程中,网络协议栈将适当长度的数据封装在报文载荷中,然后逐层调用底层函数执行报文发送功能。上述过程可以在APP线程和网络协议栈线程间并行执行,但是在同一时刻只有APP线程或网络协议栈线程中的一者能够对发送缓冲区进行访问操作,同时会将发送缓冲区加锁,以使另一者不能对发送缓冲区进行访问操作,这种传输方案使得报文传输效率较低。
因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种报文传输方法、系统、电子设备及可读存储介质,避免了网络协议栈线程和应用程序线程对锁的激烈竞争而产生的性能损耗,提高网络性能,提高报文传输效率。
为解决上述技术问题,本发明提供了一种报文传输方法,包括:
将套接字的发送缓冲区划分为第一缓冲区和第二缓冲区;
在所述第一缓冲区,为应用程序线程分配多个报文和多个报文描述符;多个所述报文和多个所述报文描述符一一对应;
通过所述报文和其对应的报文描述符构造节点,并将所述节点添加到所述第一缓冲区的第一描述符链表;所述节点中的报文的报文载荷中拷贝有预设长度的应用程序数据;
当所述第一描述符链表满足推送条件,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文。
在一示例性实施例中,所述为应用程序线程分配多个报文和多个报文描述符的过程包括:
根据所述应用程序数据的总数据长度和单个报文的最大载荷长度为应用程序线程分配多个报文和多个报文描述符。
在一示例性实施例中,所述为应用程序线程分配多个报文和多个报文描述符之前,所述报文传输方法还包括:
确定所述发送缓冲区对应的当前写入长度,若当前写入长度满足预设条件,为应用程序线程分配多个报文和多个报文描述符。
在一示例性实施例中,确定所述发送缓冲区对应的当前写入长度的过程包括:
确定应用程序的输入参数中的总数据长度和所述发送缓冲区的剩余长度;
将所述总数据长度和所述剩余长度中的较小值作为当前写入长度。
在一示例性实施例中,若当前写入长度满足预设条件,为应用程序线程分配多个报文和多个报文描述符之前,所述报文传输方法还包括:
判断当前写入长度是否大于0;
若是,判定所述当前写入长度满足所述预设条件;
若否,判定所述当前写入长度不满足所述预设条件。
在一示例性实施例中,所述报文传输方法还包括:
当检测到写入应用程序数据,在所述第一缓冲区添加当前写入序列号;
确定所述发送缓冲区的剩余长度的过程包括:
根据第一关系式计算所述发送缓冲区的剩余长度,所述第一关系式为Lr=Lm-(Lc-Ll);
其中,Lr为所述剩余长度,Lm为所述发送缓冲区的最大长度,Lc为所述当前写入序列号,Ll为写入序列号的左边界对应的序列号。
在一示例性实施例中,当所述第一描述符链表满足推送条件,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部之前,所述报文传输方法还包括:
确定推入突发值;
确定所述第一描述符链表中的所述节点的数量是否达到所述推入突发值;
若是,判定所述第一描述符链表满足所述推送条件;
若否,判定所述第一描述符链表不满足所述推送条件。
在一示例性实施例中,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部之前,所述报文传输方法还包括:
构造过渡队列;所述过渡队列为无锁队列;
当所述第一描述符链表满足所述推送条件,将所述第一描述符链表中的头节点的地址写入所述过渡队列中;
将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部的过程包括:
从所述过渡队列中获取所述第一描述符链表的头节点的地址;
将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部。
在一示例性实施例中,所述报文传输方法还包括:
当所有应用程序数据均拷贝到所述报文的报文载荷中,将套接字设置为与待发送数据对应的第一状态,并将所述套接字的地址写入套接字队列;
将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文的过程包括:
当所述网络协议栈线程监测到所述套接字队列不为空,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文。
在一示例性实施例中,当所述网络协议栈线程监测到所述套接字队列不为空,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文的过程包括:
当所述网络协议栈线程监测到所述套接字队列不为空,从所述套接字队列中获取套接字的地址,按所述地址从所述套接字的所述发送缓冲区的过渡队列中获取所述第一描述符链表的头节点的地址,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文。
在一示例性实施例中,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部之后,所述报文传输方法还包括:
通过所述网络协议栈线程增加所述发送缓冲区对应的序列号右边界。
在一示例性实施例中,所述网络协议栈线程根据所述第二描述符链表发送报文之后,所述报文传输方法还包括:
当接收到与所述报文对应的正确的确认信号后,将下次发送序列号指针向右移动,以使所述下次发送序列号指向下一次发送的报文描述符。
在一示例性实施例中,所述网络协议栈线程根据所述第二描述符链表发送报文之后,所述报文传输方法还包括:
若当前时刻不满足预设发送条件,判断所述发送缓冲区中的待发送数据的长度是否大于预设长度阈值;
若是,根据下次发送序列号指向的所述第二描述符链表中的所述报文描述符确定当前待发送报文,并发送所述当前待发送报文。
在一示例性实施例中,所述网络协议栈线程根据所述第二描述符链表发送报文之后,所述报文传输方法还包括:
判断重传定时器的定时时间是否大于预设阈值;
若是,将下次发送序列号指针向左移动,以使所述下次发送序列号指向下一次发送的报文描述符;
根据所述下次发送序列号指向的所述第二描述符链表中的所述报文描述符确定当前待发送报文,并发送所述当前待发送报文。
在一示例性实施例中,所述网络协议栈线程根据所述第二描述符链表发送报文之后,所述报文传输方法还包括:
根据接收到的确认信号判断是否触发快速重传;
若是,将下次发送序列号指针向左移动,以使所述下次发送序列号指向下一次发送的报文描述符;
根据所述下次发送序列号指向的所述第二描述符链表中的所述报文描述符确定当前待发送报文,并发送所述当前待发送报文。
在一示例性实施例中,所述根据接收到的确认信号判断是否触发快速重传的过程包括:
判断是否连续多次接收到相同的确认信号;
若是,判定触发快速重传。
在一示例性实施例中,所述网络协议栈线程根据所述第二描述符链表发送报文之后,所述报文传输方法还包括:
通过所述网络协议栈线程判断接收到的确认信号对应的确认序列号是否处于所述套接字的序列号左右边界内;
若是,确定所述确认序列号对应的当前报文节点;
将所述第二描述符链表的头节点至所述当前报文节点的报文释放。
在一示例性实施例中,将所述第二描述符链表的头节点至所述当前报文节点的报文释放之后,所述报文传输方法还包括:
通过所述网络协议栈线程向右移动序列号左边界,以使所述序列号左边界指向所述第二描述符链表的新的头节点对应的数据的第一个字节。
为解决上述技术问题,本发明还提供了一种报文传输系统,包括:
划分模块,用于将套接字的发送缓冲区划分为第一缓冲区和第二缓冲区;
第一分配模块,用于在所述第一缓冲区,为应用程序线程分配多个报文和多个报文描述符;多个所述报文和多个所述报文描述符一一对应;
写入模块,用于通过所述报文和其对应的报文描述符构造节点,并将所述节点添加到所述第一缓冲区的第一描述符链表;所述节点中的报文的报文载荷中拷贝有预设长度的应用程序数据;
推送模块,用于当所述第一描述符链表满足推送条件,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文。
为解决上述技术问题,本发明还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任意一项所述的报文传输方法的步骤。
为解决上述技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文任意一项所述的报文传输方法的步骤。
本发明提供了一种报文传输方法,将套接字的发送缓冲区划分为供应用程序线程访问的第一缓冲区及供网络协议栈线程访问的第二缓冲区,由于应用程序线程网络协议栈线程分别访问发送缓冲区不同的部分,无需加锁,避免了当TCP吞吐量很大时网络协议栈线程和应用程序线程对锁的激烈竞争而产生的性能损耗,提高了网络性能,从而提高了报文传输效率。本发明还提供了一种报文传输系统、电子设备及计算机可读存储介质,具有和上述报文传输系统相同的有益效果。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的一种报文传输方法的步骤流程图;
图2为本发明所提供的一种报文传输流程示意图;
图3为本发明所提供的一种报文传输系统的结构示意图。
具体实施方式
本发明的核心是提供一种报文传输方法、系统、电子设备及可读存储介质,避免了网络协议栈线程和应用程序线程对锁的激烈竞争而产生的性能损耗,提高网络性能,提高报文传输效率。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一方面,请参照图1,图1为本发明所提供的一种报文传输方法的步骤流程图,该报文传输方法包括:
S101:将套接字的发送缓冲区划分为第一缓冲区和第二缓冲区;
为便于理解本发明的方案,首先对以下名词进行介绍,APP(应用程序)放入数据时,在描述符链表的尾部增加节点,网络协议栈处理完数据后从链表的头部移除节点。描述符链表中的报文描述符指向的报文载荷构成了一个连续的数据流(向右增长),它以字节为单位,每个字节与一个序列号相对应。序列号左边界即发送缓冲区中最旧的数据,也就是仍留在发送缓冲区中的、最早进入发送缓冲区的数据,随着程序的持续运行,序列号左边界持续向右移动。序列号右边界即发送缓冲中最新的数据(TCP协议中使用最后一个字节的序列号加1来表示),APP放入数据后,在网络协议栈线程将序列号右边界向右移动。下次发送序列号即网络协议栈线程执行发送流程时使用的当前序列号,因为重传等原因,该下次发送序列号有时向右移动、有时向左移动。发送缓冲区最大长度限制了发送缓冲区中当前保留的数据长度,也就是序列号右边界不能大于序列号左边界和该值之和。发送缓冲区剩余长度,即发送缓冲区最大长度-(序列号右边界-序列号左边界)。报文的MSS值,即TCP协议中定义的单个报文的最大载荷长度。
参照图2所示,本实施例将发送缓冲区划分为第一缓冲区和第二缓冲区,第一缓冲区在APP线程中操作,第二缓冲区在网络协议栈线程中操作,上下两部分通过无锁队列来交互。
S102:在第一缓冲区,为应用程序线程分配多个报文和多个报文描述符;多个报文和多个报文描述符一一对应;
当应用程序写入数据时,为应用程序线程在第一缓冲区分配多个报文和多个报文描述符,报文描述符和报文的个数相同,其中,为应用程序线程分配多个报文和多个报文描述符的过程包括但不限于根据应用程序数据的总数据长度和单个报文的最大载荷长度为应用程序线程分配多个报文和多个报文描述符,如写入数据的长度为l1,最大载荷长度为l2,则分配个数可以为l1/l2。
S103:通过报文和其对应的报文描述符构造节点,并将节点添加到第一缓冲区的第一描述符链表;节点中的报文的报文载荷中拷贝有预设长度的应用程序数据;
本实施例中,将应用程序内存中的应用程序数据按照预设长度依次拷贝到分配的报文的报文载荷中,拷贝完数据的报文和报文描述符构成一个节点,可以理解,每构成一个节点,就将该节点加入第一描述符链表。其中,在拷贝数据时,假设应用程序数据的长度为1000字节,每个报文可写入100字节,则将1-100字节写入第一个报文的报文载荷,将101-200字节写入第二个报文的报文载荷,以此类推。
在一示例性实施例中,为应用程序线程分配多个报文和多个报文描述符之前,报文传输方法还包括:
确定所述发送缓冲区对应的当前写入长度,若当前写入长度满足预设条件,为应用程序线程分配多个报文和多个报文描述符。
在一示例性实施例中,确定所述发送缓冲区对应的当前写入长度的过程包括:
确定应用程序的输入参数中的总数据长度和发送缓冲区的剩余长度;
将总数据长度和剩余长度中的较小值作为当前写入长度。
在一示例性实施例中,若当前写入长度满足预设条件,为应用程序线程分配多个报文和多个报文描述符之前,报文传输方法还包括:
判断当前写入长度是否大于0;
若是,判定当前写入长度满足预设条件;
若否,判定当前写入长度不满足预设条件。
S104:当第一描述符链表满足推送条件,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据第二描述符链表发送报文。
在一示例性实施例中,构造过渡队列;过渡队列为无锁队列;当第一描述符链表满足推送条件,将第一描述符链表中的头节点的地址写入过渡队列中,从过渡队列中获取第一描述符链表的头节点的地址,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部。
在APP线程中,APP通过调用write或sendmsg API进入网络协议栈代码,网络协议栈首先选择APP输入参数中的数据长度和发送缓冲区剩余长度的较小值作为可写入的长度,即本实施例中的当前写入长度,如果可写入的长度大于0,那么根据写入数据的长度和MSS值,分配若干个报文和报文描述符。将应用程序数据从APP内存拷贝到报文载荷中,每构造一个报文和报文描述符,就把它添加到一个临时的描述符链表中,即本实施例中的第一描述符链表,当第一描述符链表满足推送条件时,提醒网络协议栈线程进行后续处理。
在一示例性实施例中,确定推入突发值;确定第一描述符链表中的节点的数量是否达到推入突发值,若是,判定第一描述符链表满足推送条件,若否,判定第一描述符链表不满足推送条件。第一描述符链表中的节点数量达到预先设置的推入突发值后,将该链表的头节点地址推送到过渡队列中。然后继续上述流程,直到所有的数据都被拷贝到报文中,并将最后得到的第一描述符链表的头节点的地址推送到过渡队列,以便将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部,使网络协议栈线程根据第二描述符链表发送报文。
本实施例中,网络协议栈线程中仅执行网络协议栈的发送程序,可能有四种情况触发网络协议栈发送报文:网络协议栈线程监听到全局的待发送数据套接字队列中有事件;当剩余的发送数据较多时;RTO(Retransmission Timeout,重传超时时间)定时器超时;收到对端ACK(ACKnowledge,确认),但触发了快速重传。
在一示例性实施例中,网络协议栈线程监测到套接字队列不为空,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据第二描述符链表发送报文的过程包括:
网络协议栈线程监测到套接字队列不为空,从套接字队列中获取套接字的地址,按地址从套接字的发送缓冲区的过渡队列中获取第一描述符链表的头节点的地址,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据第二描述符链表发送报文。
在一示例性实施例中,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部之后,报文传输方法还包括:通过网络协议栈线程增加发送缓冲区对应的序列号右边界。
可以理解,网络协议栈线程根据第二描述符链表发送报文之后,若当前时刻不满足预设发送条件,判断发送缓冲区中的待发送数据的长度是否大于预设长度阈值,也即判定剩余的待发送数据较多时,根据下次发送序列号指向的第二描述符链表中的报文描述符确定当前待发送报文,并发送当前待发送报文。在另一示例性实施例中,网络协议栈线程根据第二描述符链表发送报文之后,判断重传定时器的定时时间是否大于预设阈值,若是,说明存在丢包等问题,将下次发送序列号指针向左移动,以使下次发送序列号指向下一次发送的报文描述符,根据下次发送序列号指向的第二描述符链表中的报文描述符确定当前待发送报文,并发送当前待发送报文。在另一示例性实施例中,根据接收到的确认信号判断是否触发快速重传,若是,将下次发送序列号指针向左移动,以使下次发送序列号指向下一次发送的报文描述符,根据下次发送序列号指向的第二描述符链表中的报文描述符确定当前待发送报文,并发送当前待发送报文。其中判断是否连续多次接收到相同的确认信号;若是,判定触发快速重传。假设当前发送的报文的序列号对应200,但是确认信号对应的序列号是100,且连续接收3次确认信号对应的序列号都为100,此时判定触发快速重传,则重新发送序列号101对应的报文。
以第一种情况为例,网络协议栈线程监听到全局的待发送数据套接字队列中有事件后,从中读出套接字地址,从套接字地址的发送缓冲区的过渡队列中读出第一描述符链表的头节点的地址,将该第一描述符链表追加到报文链表的尾部,增加序列号右边界。
网络协议栈在第二缓冲区的第二描述符链表中根据下次发送序列号定位到报文描述符,填充报文的TCP头和选项字段,然后逐层调用IP层、ARP层、网络设备层的发包函数执行封装报文头和发包动作,最后将报文地址放入设备的发包队列中,由设备将报文发送出去。上述调用成功返回后,网络协议栈向右移动下次发送的序列号。该过程会根据拥塞窗口等控制条件,在一次触发后,连续发送若干个报文,最后启动或者更新RTO定时器。
可见,本实施例中,将套接字的发送缓冲区划分为供应用程序线程访问的第一缓冲区及供网络协议栈线程访问的第二缓冲区,由于应用程序线程网络协议栈线程分别访问发送缓冲区不同的部分,无需加锁,避免了当TCP吞吐量很大时网络协议栈线程和应用程序线程对锁的激烈竞争而产生的性能损耗,提高了网络性能,从而提高了报文传输效率。
在上述实施例的基础上:
在一示例性实施例中,报文传输方法还包括:
当检测到写入应用程序数据,在第一缓冲区添加当前写入序列号;
确定发送缓冲区的剩余长度的过程包括:
根据第一关系式计算发送缓冲区的剩余长度,第一关系式为Lr=Lm-(Lc-Ll);
其中,Lr为剩余长度,Lm为发送缓冲区的最大长度,Lc为当前写入序列号,Ll为写入序列号的左边界对应的序列号。
在发送缓冲区的上部增加APP写入序列号,它只在上部使用,初始值为初始的发送序列号,每次APP写入数据后增加该序列号。修改后的发送缓冲区剩余长度计算公式为:发送缓冲区剩余长度=发送缓冲区最大长度-(APP写入序列号-序列号左边界)。该式中,发送缓冲区最大长度可以当常量对待,序列号左边界虽然在网络协议栈线程中增加,但它只在网络协议栈线程中改写,并只向右移动,所以计算该公式时,不用加锁。
在一示例性实施例中,网络协议栈线程根据第二描述符链表发送报文之后,报文传输方法还包括:
当接收到与报文对应的正确的确认信号后,将下次发送序列号指针向右移动,以使下次发送序列号指向下一次发送的报文描述符。
在一示例性实施例中,网络协议栈线程根据第二描述符链表发送报文之后,报文传输方法还包括:
通过网络协议栈线程判断接收到的确认信号对应的确认序列号是否处于套接字的序列号左右边界内;
若是,确定确认序列号对应的当前报文节点;
将第二描述符链表的头节点至当前报文节点的报文释放。
在一示例性实施例中,将第二描述符链表的头节点至当前报文节点的报文释放之后,报文传输方法还包括:
通过网络协议栈线程向右移动序列号左边界,以使序列号左边界指向第二描述符链表的新的头节点对应的数据的第一个字节。
当网络协议栈接收到对端的ACK后,如果该ACK序列号落在自己的序列号左右边界内,说明这是一个正确的序列号,网络协议栈将使用该ACK序列号定位到报文链表中的报文描述符节点X,说明对端已经成功接收到了从链表头节点到X节点的所有报文,网络协议栈可以释放这些报文。然后向右移动序列号左边界,指向新的链表头节点对应数据的第一个字节。如果下次发送的序列号在序列号左边界的左边,那么将下次发送的序列号指向序列号左边界。过渡队列可以使用无锁队列来实现,因为是单生产者单消费者模式,所以只要使用内存屏障即可保证数据一致性,不会在网络协议栈线程和APP线程之间产生竞争。
本发明提供了一种TCP发送缓冲区无锁的实现方法,在高性能场景中,避免了当TCP吞吐量很大网络协议栈线程和APP线程对锁的激烈竞争而产生的性能损耗,提高了网络性能。
第二方面,请参照图3,图3为本发明所提供的一种报文传输系统的结构示意图,该报文传输系统包括:
划分模块1,用于将套接字的发送缓冲区划分为第一缓冲区和第二缓冲区;
第一分配模块2,用于在第一缓冲区,为应用程序线程分配多个报文和多个报文描述符;多个报文和多个报文描述符一一对应;
写入模块3,用于通过报文和其对应的报文描述符构造节点,并将节点添加到第一缓冲区的第一描述符链表;节点中的报文的报文载荷中拷贝有预设长度的应用程序数据;
推送模块4,用于当第一描述符链表满足推送条件,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据第二描述符链表发送报文。
可见,本实施例中,将套接字的发送缓冲区划分为供应用程序线程访问的第一缓冲区及供网络协议栈线程访问的第二缓冲区,由于应用程序线程网络协议栈线程分别访问发送缓冲区不同的部分,无需加锁,避免了当TCP吞吐量很大时网络协议栈线程和应用程序线程对锁的激烈竞争而产生的性能损耗,提高了网络性能,从而提高了报文传输效率。
在一示例性实施例中,为应用程序线程分配多个报文和多个报文描述符的过程包括:
根据应用程序数据的总数据长度和单个报文的最大载荷长度为应用程序线程分配多个报文和多个报文描述符。
在一示例性实施例中,为应用程序线程分配多个报文和多个报文描述符之前,报文传输系统还包括:
第一确定模块,用于确定所述发送缓冲区对应的当前写入长度,若当前写入长度满足预设条件,为应用程序线程分配多个报文和多个报文描述符。
在一示例性实施例中,确定所述发送缓冲区对应的当前写入长度的过程包括:
确定应用程序的输入参数中的总数据长度和发送缓冲区的剩余长度;
将总数据长度和剩余长度中的较小值作为当前写入长度。
在一示例性实施例中,若当前写入长度满足预设条件,为应用程序线程分配多个报文和多个报文描述符之前,报文传输系统还包括:
判断当前写入长度是否大于0;
若是,判定当前写入长度满足预设条件;
若否,判定当前写入长度不满足预设条件。
在一示例性实施例中,报文传输系统还包括:
当检测到写入应用程序数据,在第一缓冲区添加当前写入序列号;
确定发送缓冲区的剩余长度的过程包括:
根据第一关系式计算发送缓冲区的剩余长度,第一关系式为Lr=Lm-(Lc-Ll);
其中,Lr为剩余长度,Lm为发送缓冲区的最大长度,Lc为当前写入序列号,Ll为写入序列号的左边界对应的序列号。
在一示例性实施例中,当第一描述符链表满足推送条件,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部之前,报文传输系统还包括:
第二确定模块,用于确定推入突发值;
确定第一描述符链表中的节点的数量是否达到推入突发值;
若是,判定第一描述符链表满足推送条件;
若否,判定第一描述符链表不满足推送条件。
在一示例性实施例中,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部之前,报文传输系统还包括:
构造模块,用于构造过渡队列;过渡队列为无锁队列;
当第一描述符链表满足推送条件,将第一描述符链表中的头节点的地址写入过渡队列中;
将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部的过程包括:
从过渡队列中获取第一描述符链表的头节点的地址;
将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部。
在一示例性实施例中,报文传输系统还包括:
设置模块,用于当所有应用程序数据均拷贝到报文的报文载荷中,将套接字设置为与待发送数据对应的第一状态,并将套接字的地址写入套接字队列;
将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据第二描述符链表发送报文的过程包括:
网络协议栈线程监测到套接字队列不为空,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据第二描述符链表发送报文。
在一示例性实施例中,网络协议栈线程监测到套接字队列不为空,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据第二描述符链表发送报文的过程包括:
网络协议栈线程监测到套接字队列不为空,从套接字队列中获取套接字的地址,按地址从套接字的发送缓冲区的过渡队列中获取第一描述符链表的头节点的地址,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据第二描述符链表发送报文。
在一示例性实施例中,将第一描述符链表的头节点的地址添加到第二缓冲区的第二描述符链表的尾部之后,报文传输系统还包括:
通过网络协议栈线程增加发送缓冲区对应的序列号右边界。
在一示例性实施例中,网络协议栈线程根据第二描述符链表发送报文之后,报文传输系统还包括:
调整模块,用于当接收到与报文对应的正确的确认信号后,将下次发送序列号指针向右移动,以使下次发送序列号指向下一次发送的报文描述符。
在一示例性实施例中,网络协议栈线程根据第二描述符链表发送报文之后,报文传输系统还包括:
第一判断模块,用于若当前时刻不满足预设发送条件,判断发送缓冲区中的待发送数据的长度是否大于预设长度阈值;
若是,根据下次发送序列号指向的第二描述符链表中的报文描述符确定当前待发送报文,并发送当前待发送报文。
在一示例性实施例中,网络协议栈线程根据第二描述符链表发送报文之后,报文传输系统还包括:
第二判断模块,用于判断重传定时器的定时时间是否大于预设阈值;
若是,将下次发送序列号指针向左移动,以使下次发送序列号指向下一次发送的报文描述符;
根据下次发送序列号指向的第二描述符链表中的报文描述符确定当前待发送报文,并发送当前待发送报文。
在一示例性实施例中,网络协议栈线程监测到套接字队列不为空,根据第二描述符链表发送报文之后,报文传输系统还包括:
第三判断模块,用于根据接收到的确认信号判断是否触发快速重传;
若是,将下次发送序列号指针向左移动,以使下次发送序列号指向下一次发送的报文描述符;
根据下次发送序列号指向的第二描述符链表中的报文描述符确定当前待发送报文,并发送当前待发送报文。
在一示例性实施例中,根据接收到的确认信号判断是否触发快速重传的过程包括:
判断是否连续多次接收到相同的确认信号;
若是,判定触发快速重传。
在一示例性实施例中,网络协议栈线程根据第二描述符链表发送报文之后,报文传输系统还包括:
第四判断模块,用于通过网络协议栈线程判断接收到的确认信号对应的确认序列号是否处于套接字的序列号左右边界内;
若是,确定确认序列号对应的当前报文节点;
将第二描述符链表的头节点至当前报文节点的报文释放。
在一示例性实施例中,将第二描述符链表的头节点至当前报文节点的报文释放之后,报文传输系统还包括:
调整模块,用于通过网络协议栈线程向右移动序列号左边界,以使序列号左边界指向第二描述符链表的新的头节点对应的数据的第一个字节。
第三方面,本发明还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上文任意一个实施例所描述的报文传输方法的步骤。
对于本发明所提供的一种电子设备的介绍请参照上述实施例,本发明在此不再赘述。
本发明所提供过的一种电子设备具有和上述报文传输方法相同的有益效果。
第四方面,本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上文任意一个实施例所描述的报文传输方法的步骤。
对于本发明所提供的一种计算机可读存储介质的介绍请参照上述实施例,本发明在此不再赘述。
本发明所提供过的一种计算机可读存储介质具有和上述报文传输方法相同的有益效果。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (19)
1.一种报文传输方法,其特征在于,包括:
将套接字的发送缓冲区划分为第一缓冲区和第二缓冲区;
在所述第一缓冲区,为应用程序线程分配多个报文和多个报文描述符;多个所述报文和多个所述报文描述符一一对应;
通过所述报文和其对应的报文描述符构造节点,并将所述节点添加到所述第一缓冲区的第一描述符链表;所述节点中的报文的报文载荷中拷贝有预设长度的应用程序数据;
当所述第一描述符链表满足推送条件,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文;
为应用程序线程分配多个报文和多个报文描述符的过程包括:
确定应用程序的输入参数中的总数据长度和所述发送缓冲区的剩余长度;
将所述总数据长度和所述剩余长度中的较小值作为当前写入长度;
若当前写入长度满足预设条件,为应用程序线程分配多个报文和多个报文描述符。
2.根据权利要求1所述的报文传输方法,其特征在于,所述为应用程序线程分配多个报文和多个报文描述符的过程包括:
根据所述应用程序数据的总数据长度和单个报文的最大载荷长度为应用程序线程分配多个报文和多个报文描述符。
3.根据权利要求1所述的报文传输方法,其特征在于,若当前写入长度满足预设条件,为应用程序线程分配多个报文和多个报文描述符之前,所述报文传输方法还包括:
判断当前写入长度是否大于0;
若是,判定所述当前写入长度满足所述预设条件;
若否,判定所述当前写入长度不满足所述预设条件。
4.根据权利要求1所述的报文传输方法,其特征在于,所述报文传输方法还包括:
当检测到写入应用程序数据,在所述第一缓冲区添加当前写入序列号;
确定所述发送缓冲区的剩余长度的过程包括:
根据第一关系式计算所述发送缓冲区的剩余长度,所述第一关系式为Lr=Lm-(Lc-Ll);
其中,Lr为所述剩余长度,Lm为所述发送缓冲区的最大长度,Lc为所述当前写入序列号,Ll为写入序列号的左边界对应的序列号。
5.根据权利要求1所述的报文传输方法,其特征在于,当所述第一描述符链表满足推送条件,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部之前,所述报文传输方法还包括:
确定推入突发值;
确定所述第一描述符链表中的所述节点的数量是否达到所述推入突发值;
若是,判定所述第一描述符链表满足所述推送条件;
若否,判定所述第一描述符链表不满足所述推送条件。
6.根据权利要求1所述的报文传输方法,其特征在于,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部之前,所述报文传输方法还包括:
构造过渡队列;所述过渡队列为无锁队列;
当所述第一描述符链表满足所述推送条件,将所述第一描述符链表中的头节点的地址写入所述过渡队列中;
将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部的过程包括:
从所述过渡队列中获取所述第一描述符链表的头节点的地址;
将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部。
7.根据权利要求6所述的报文传输方法,其特征在于,所述报文传输方法还包括:
当所有应用程序数据均拷贝到所述报文的报文载荷中,将套接字设置为与待发送数据对应的第一状态,并将所述套接字的地址写入套接字队列;
将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文的过程包括:
当所述网络协议栈线程监测到所述套接字队列不为空,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文。
8.根据权利要求7所述的报文传输方法,其特征在于,当所述网络协议栈线程监测到所述套接字队列不为空,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文的过程包括:
当所述网络协议栈线程监测到所述套接字队列不为空,从所述套接字队列中获取套接字的地址,按所述地址从所述套接字的所述发送缓冲区的过渡队列中获取所述第一描述符链表的头节点的地址,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文。
9.根据权利要求8所述的报文传输方法,其特征在于,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部之后,所述报文传输方法还包括:
通过所述网络协议栈线程增加所述发送缓冲区对应的序列号右边界。
10.根据权利要求9所述的报文传输方法,其特征在于,所述网络协议栈线程根据所述第二描述符链表发送报文之后,所述报文传输方法还包括:
当接收到与所述报文对应的正确的确认信号后,将下次发送序列号指针向右移动,以使所述下次发送序列号指向下一次发送的报文描述符。
11.根据权利要求7所述的报文传输方法,其特征在于,所述网络协议栈线程根据所述第二描述符链表发送报文之后,所述报文传输方法还包括:
若当前时刻不满足预设发送条件,判断所述发送缓冲区中的待发送数据的长度是否大于预设长度阈值;
若是,根据下次发送序列号指向的所述第二描述符链表中的所述报文描述符确定当前待发送报文,并发送所述当前待发送报文。
12.根据权利要求7所述的报文传输方法,其特征在于,所述网络协议栈线程根据所述第二描述符链表发送报文之后,所述报文传输方法还包括:
判断重传定时器的定时时间是否大于预设阈值;
若是,将下次发送序列号指针向左移动,以使所述下次发送序列号指向下一次发送的报文描述符;
根据所述下次发送序列号指向的所述第二描述符链表中的所述报文描述符确定当前待发送报文,并发送所述当前待发送报文。
13.根据权利要求7所述的报文传输方法,其特征在于,所述网络协议栈线程根据所述第二描述符链表发送报文之后,所述报文传输方法还包括:
根据接收到的确认信号判断是否触发快速重传;
若是,将下次发送序列号指针向左移动,以使所述下次发送序列号指向下一次发送的报文描述符;
根据所述下次发送序列号指向的所述第二描述符链表中的所述报文描述符确定当前待发送报文,并发送所述当前待发送报文。
14.根据权利要求13所述的报文传输方法,其特征在于,所述根据接收到的确认信号判断是否触发快速重传的过程包括:
判断是否连续多次接收到相同的确认信号;
若是,判定触发快速重传。
15.根据权利要求1-14任意一项所述的报文传输方法,其特征在于,所述网络协议栈线程根据所述第二描述符链表发送报文之后,所述报文传输方法还包括:
通过所述网络协议栈线程判断接收到的确认信号对应的确认序列号是否处于所述套接字的序列号左右边界内;
若是,确定所述确认序列号对应的当前报文节点;
将所述第二描述符链表的头节点至所述当前报文节点的报文释放。
16.根据权利要求15所述的报文传输方法,其特征在于,将所述第二描述符链表的头节点至所述当前报文节点的报文释放之后,所述报文传输方法还包括:
通过所述网络协议栈线程向右移动序列号左边界,以使所述序列号左边界指向所述第二描述符链表的新的头节点对应的数据的第一个字节。
17.一种报文传输系统,其特征在于,包括:
划分模块,用于将套接字的发送缓冲区划分为第一缓冲区和第二缓冲区;
第一分配模块,用于在所述第一缓冲区,为应用程序线程分配多个报文和多个报文描述符;多个所述报文和多个所述报文描述符一一对应;
写入模块,用于通过所述报文和其对应的报文描述符构造节点,并将所述节点添加到所述第一缓冲区的第一描述符链表;所述节点中的报文的报文载荷中拷贝有预设长度的应用程序数据;
推送模块,用于当所述第一描述符链表满足推送条件,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文;
为应用程序线程分配多个报文和多个报文描述符的过程包括:
确定应用程序的输入参数中的总数据长度和所述发送缓冲区的剩余长度;
将所述总数据长度和所述剩余长度中的较小值作为当前写入长度;
若当前写入长度满足预设条件,为应用程序线程分配多个报文和多个报文描述符。
18.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1-16任意一项所述的报文传输方法的步骤。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-16任意一项所述的报文传输方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311348049.1A CN117097815B (zh) | 2023-10-18 | 2023-10-18 | 一种报文传输方法、系统、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311348049.1A CN117097815B (zh) | 2023-10-18 | 2023-10-18 | 一种报文传输方法、系统、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117097815A CN117097815A (zh) | 2023-11-21 |
CN117097815B true CN117097815B (zh) | 2024-02-09 |
Family
ID=88775372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311348049.1A Active CN117097815B (zh) | 2023-10-18 | 2023-10-18 | 一种报文传输方法、系统、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117097815B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106330776A (zh) * | 2015-06-30 | 2017-01-11 | 中兴通讯股份有限公司 | 报文处理方法及装置 |
CN113411270A (zh) * | 2021-06-07 | 2021-09-17 | 中国人民解放军国防科技大学 | 一种面向时间敏感网络的报文缓冲区管理方法 |
CN113791901A (zh) * | 2021-08-31 | 2021-12-14 | 上海弘积信息科技有限公司 | 一种高效的负载均衡设备tcp重传实现方法 |
CN116647519A (zh) * | 2023-07-26 | 2023-08-25 | 苏州浪潮智能科技有限公司 | 一种报文处理方法、装置、设备及介质 |
-
2023
- 2023-10-18 CN CN202311348049.1A patent/CN117097815B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106330776A (zh) * | 2015-06-30 | 2017-01-11 | 中兴通讯股份有限公司 | 报文处理方法及装置 |
CN113411270A (zh) * | 2021-06-07 | 2021-09-17 | 中国人民解放军国防科技大学 | 一种面向时间敏感网络的报文缓冲区管理方法 |
CN113791901A (zh) * | 2021-08-31 | 2021-12-14 | 上海弘积信息科技有限公司 | 一种高效的负载均衡设备tcp重传实现方法 |
CN116647519A (zh) * | 2023-07-26 | 2023-08-25 | 苏州浪潮智能科技有限公司 | 一种报文处理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117097815A (zh) | 2023-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106878191B (zh) | 一种数据传送方法、发送节点、接收节点及数据传送系统 | |
JP3993893B2 (ja) | バスを介したデータ転送及びバス管理に用いるアプリケーションプログラミングインターフェイス | |
US5678007A (en) | Method and apparatus for supporting multiple outstanding network requests on a single connection | |
EP0986216B1 (en) | Transmission system, bandwidth management apparatus, and bandwidth management method | |
US7260073B2 (en) | Method for scheduling of plural packet data flows | |
US4410889A (en) | System and method for synchronizing variable-length messages in a local area network data communication system | |
US10225848B2 (en) | Data streams with different priorities in contention-based systems | |
CA2674655C (en) | Improved data transfer method, system and protocol | |
US20080049617A1 (en) | System for fine grained flow-control concurrency to prevent excessive packet loss | |
US8605578B1 (en) | System and method for handling of destination host side congestion | |
CN103141050B (zh) | 快速通道互联系统中数据包重传方法、节点 | |
CN109743143B (zh) | 数据的重传方法、装置和计算机可读存储介质 | |
JP6351363B2 (ja) | 通信装置およびそのデータ処理方法 | |
CN117097815B (zh) | 一种报文传输方法、系统、电子设备及可读存储介质 | |
CN113242170B (zh) | 一种地址分配的方法和装置 | |
CN113852445A (zh) | 一种提高数据传输可靠性的方法、系统、设备和存储介质 | |
CN115150383A (zh) | 文件发送方法、设备及计算机可读存储介质 | |
CN110808917B (zh) | 多链路聚合数据重传方法及发送设备 | |
CN110895517B (zh) | 基于fpga的传输数据的方法、设备及系统 | |
CN102148743A (zh) | 一种数据流量的控制方法、装置及移动终端 | |
CN113572582B (zh) | 数据发送、重传控制方法及系统、存储介质及电子设备 | |
CN116319569A (zh) | 网络参数更新方法、网络参数更新装置、介质及电子设备 | |
JP5636574B2 (ja) | 通信装置、パケット転送方法及びそのプログラム | |
CN115344405A (zh) | 一种数据处理方法、网络接口卡、电子设备及存储介质 | |
Peeck et al. | Enabling multi-link data transmission for collaborative sensing in open road scenarios |
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 |