A TCP acknowledgment number splitting method

By dynamically splitting the TCP acknowledgment number at the receiving end according to the network conditions, the network congestion problem caused by the loss of TCP acknowledgment numbers is solved, and the stability and efficiency of data transmission are improved.

CN120455373BActive Publication Date: 2025-09-19HUAZHONG UNIV OF SCI & TECH
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202510846945.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2025-06-24
Publication Date
2025-09-19
Estimated Expiration
2045-06-24

AI Technical Summary

Technical Problem

In a high-latency and unstable network environment, the loss or delay of TCP acknowledgment numbers causes network congestion, affecting the reliability and efficiency of data transmission.

Method used

The confirmation number is dynamically split by the receiving end, and the confirmation number is split into multiple confirmation numbers according to the network conditions and sent in sequence to ensure the integrity and reliability of data transmission. Using network delay and packet loss rate as the judgment basis, the splitting strategy increases the number of confirmation numbers when the network conditions are poor to reduce the risk of loss.

Benefits of technology

It effectively reduces network congestion caused by ACK loss, improves the stability and reliability of data transmission, and reduces unnecessary retransmissions and bandwidth waste.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120455373B_ABST
    Figure CN120455373B_ABST
Patent Text Reader

Abstract

The present invention discloses a TCP acknowledgment number splitting method, which belongs to the field of communications. The method compares the current number of received bytes at the receiving end with the current number of confirmed bytes. When the two are not equal, the acknowledgment number to be sent is split into multiple acknowledgment numbers according to the current network conditions and sent sequentially to the sending end. After receiving the acknowledgment number, the sending end removes the confirmed byte number from the sending window and releases the corresponding buffer resources. Through the above mechanism, the method provided by the present invention can effectively reduce data loss and network congestion caused by ACK loss during base station switching, optimize the congestion control mechanism of TCP connections, improve the stability and reliability of TCP transmission, reduce transmission delays and retransmissions caused by network instability, and thus improve overall network performance. The method is particularly suitable for data transmission optimization in mobile network environments.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention belongs to the field of communications, and more particularly, relates to a TCP acknowledgment number splitting method. Background Art

[0002] In the Transmission Control Protocol (TCP), the acknowledgment mechanism is a crucial mechanism for ensuring reliable data transmission. Whenever the receiver receives data, it sends an acknowledgment character (ACK) to the sender, informing it which data has been successfully received. However, as network conditions fluctuate, especially in high-latency and unstable networks such as satellite communication networks, high-speed mobility scenarios in 5G mobile communication networks, network congestion in public Wi-Fi networks, and network resource bottlenecks in highly congested networks, ACK transmission may be affected, resulting in delayed or lost acknowledgments, which directly impacts TCP performance. Summary of the Invention

[0003] In view of the above defects or improvement needs of the prior art, the present invention provides a TCP acknowledgment number splitting method, which aims to reduce network congestion caused by ACK loss.

[0004] To achieve the above object, according to a first aspect of the present invention, a TCP acknowledgment number splitting method is provided, which is applied to a receiving end and comprises:

[0005] S1, receives the data packet sent by the sender and updates the current number of received bytes;

[0006] S2, determining whether the number of bytes currently received is equal to the number of bytes currently confirmed; if so, sending a confirmation number to the sending end; otherwise, splitting the confirmation number according to the current network conditions and sending them to the sending end in sequence;

[0007] The network status is characterized by network delay and packet loss rate. If the current network delay and packet loss rate are both greater than the corresponding threshold, the confirmation number is split into b Otherwise, the confirmation number will be split into a indivual, a 、 b are all integers greater than 1, a < b ; Moreover, the size of the confirmation number after splitting is greater than the current number of confirmed bytes N The size of the last split confirmation number sent is equal to the number of bytes currently received M , the size of other confirmation numbers after splitting is smaller than M .

[0008] According to a second aspect of the present invention, there is provided a receiving end, comprising:

[0009] The first processing module is used to receive the data packet sent by the sending end and update the current number of received bytes;

[0010] The second processing module is used to determine whether the number of bytes currently received is equal to the number of bytes currently confirmed. If so, the confirmation number is sent to the sending end; otherwise, the confirmation number is split according to the current network status and sent to the sending end in sequence;

[0011] The network status is characterized by network delay and packet loss rate. If the current network delay and packet loss rate are both greater than the corresponding threshold, the confirmation number is split into b Otherwise, the confirmation number will be split into a indivual, a 、 b are all integers greater than 1, a < b ; Moreover, the size of the confirmation number after splitting is greater than the current number of confirmed bytes N The size of the last split confirmation number sent is equal to the number of bytes currently received M , the size of other confirmation numbers after splitting is smaller than M .

[0012] According to a third aspect of the present invention, there is provided a receiving end, comprising: a computer-readable storage medium and a processor;

[0013] The computer-readable storage medium is used to store executable instructions;

[0014] The processor is configured to read the executable instructions stored in the computer-readable storage medium and execute the method according to the first aspect.

[0015] According to a fourth aspect of the present invention, a computer-readable storage medium is provided, wherein the computer-readable storage medium stores computer instructions, and the computer instructions are used to enable a processor to execute the method according to the first aspect.

[0016] According to a fifth aspect of the present invention, there is provided a computer program product comprising a computer program or instructions, which implement the method according to the first aspect when executed by a processor.

[0017] According to a sixth aspect of the present invention, there is provided a data transmission system, comprising a transmitting end and a receiving end as described in the second aspect or the third aspect.

[0018] In general, the above technical solutions conceived by the present invention can achieve the following beneficial effects compared with the prior art:

[0019] The method provided by the present invention compares the current number of received bytes at the receiving end with the current number of confirmed bytes. If the two are not equal, the confirmation number to be sent is split into multiple confirmation numbers based on the current network conditions and sent sequentially to the sending end. After receiving the confirmation numbers, the sending end removes the confirmed byte numbers from the sending window and releases the corresponding buffer resources. Through this mechanism, the method provided by the present invention can effectively optimize TCP's confirmation mechanism and reduce the probability of ACK loss when network conditions are poor, thereby reducing data loss, retransmissions, and network congestion caused by ACK loss, reducing retransmissions caused by network congestion, optimizing data transmission efficiency, and improving the stability and reliability of data transmission. BRIEF DESCRIPTION OF THE DRAWINGS

[0020] Figure 1 This is a flow chart of the TCP acknowledgment number splitting method provided by an embodiment of the present invention. DETAILED DESCRIPTION

[0021] In order to make the objectives, technical solutions and advantages of the present invention more clearly understood, the present invention is further described in detail below with reference to the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are merely for the purpose of explaining the present invention and are not intended to limit the present invention. In addition, the technical features involved in the various embodiments of the present invention described below may be combined with each other as long as they do not conflict with each other.

[0022] In the traditional TCP mechanism, the sender typically relies on a single acknowledgment number to confirm the receipt of a data segment. This effectively ensures data transmission reliability under normal network conditions. However, when network conditions are unstable, this single acknowledgment number approach may not promptly reflect the reception status of the receiver. When the acknowledgment number is lost or arrives late, the sender fails to receive the correct confirmation information, resulting in an inability to adjust the send window in a timely manner and even erroneously triggering data retransmission. These unnecessary retransmissions not only waste valuable bandwidth resources, but also exacerbate network congestion, affecting the efficiency and stability of data transmission.

[0023] Based on this, the embodiment of the present invention provides a TCP confirmation number splitting method, such as Figure 1 As shown, including:

[0024] S1, receives the data packet sent by the sender and updates the current number of received bytes.

[0025] The sender first prepares the data to be sent. This data is divided into multiple small packets (TCP segments). Each packet contains a unique sequence number. The necessary TCP header information, such as the acknowledgment number, window size, and checksum, is also added to each packet to ensure the integrity and correctness of the data transmission. When the receiver receives the data packets from the sender over the network, it first verifies the checksum and, if verified, reorders and reassembles the packets according to their sequence numbers.

[0026] Once the receiving end receives a data packet, it calculates and updates the current number of received bytes. At the same time, based on the confirmation number sent previously, it records the current number of confirmed bytes. After sending the corresponding confirmation number, it updates the current number of confirmed bytes.

[0027] The current number of received bytes is the cumulative number of bytes received by the receiving end; the current number of confirmed bytes is the number of bytes represented by the confirmation number contained in the confirmation packets sent before the current time.

[0028] S2, determining whether the number of bytes currently received is equal to the number of bytes currently confirmed; if so, sending a confirmation number to the sending end; otherwise, splitting the confirmation number according to the current network conditions and sending them to the sending end in sequence;

[0029] The network status is characterized by network delay and packet loss rate. If the current network delay and packet loss rate are both greater than the corresponding threshold, the confirmation number is split into b Otherwise, the confirmation number will be split into a indivual, a 、 b are all integers greater than 1, a < b ; Moreover, the size of the confirmation number after splitting (that is, the numerical size of the confirmation number itself after splitting) is greater than the current number of confirmed bytes N The size of the last split confirmation number sent is equal to the number of bytes currently received M , the size of other confirmation numbers after splitting is smaller than M .

[0030] After receiving a data packet and updating the received and acknowledged byte counts, the receiver compares the two byte counts. If the two are equal, the receiver has acknowledged all received data and no further acknowledgment number splitting is required. The receiver can send acknowledgment numbers in the normal manner. If the two are not equal, the receiver has unacknowledged data and needs to further split the data according to the acknowledgment number processing.

[0031] The receiver splits the acknowledgment number to be sent into multiple acknowledgment numbers that are smaller than the number of bytes received. To ensure data integrity, the last acknowledgment number must be equal to the number of bytes received, and most acknowledgment numbers are close to the number of bytes received, ensuring that these acknowledgment numbers can gradually cover the received but unacknowledged data segments. Each acknowledgment number after splitting indicates that the receiver has received the data before the acknowledgment number (for example, if the receiver last received and acknowledged 800 and currently receives but has not acknowledged 1000, the received but unacknowledged data range is 800-1000. Each acknowledgment number after splitting, such as 900 and 950, respectively, represents that the bytes in the data range [800, 900] and [900, 950] have been received but not acknowledged. After sending these acknowledgment numbers to the sender, it indicates that the receiver has acknowledged the relevant data). This allows the acknowledgment information to be gradually delivered to the sender in the event of network congestion, effectively reducing the risk of individual acknowledgment numbers being lost or delayed, and improving the transmission efficiency of acknowledgment information.

[0032] The receiving end dynamically adjusts the confirmation number splitting strategy according to the network status, and judges the network status based on key parameters such as network delay and packet loss rate. If the network status is good, the receiving end will choose to split the confirmation number into a In the case of poor network conditions, such as when the network delay reaches 100ms and the packet loss rate exceeds 10%, the transmission of data packets is significantly affected, and the receiving end will split the confirmation number into b To improve data reliability and avoid network congestion; among them, a 、 b are all integers greater than 1, a < b .

[0033] Considering the need to reduce the redundancy of ACK confirmation numbers, it is necessary to prevent unnecessary network overhead from increasing due to splitting too many confirmation numbers when the network is good, and at the same time, when the network status deteriorates, more confirmation numbers are split to quickly feedback the data reception status. a and b Make the following constraints: , Express b / 2 rounded down, b ≤10. Among them, if b If the value of is too small, it cannot effectively deal with high packet loss rate, resulting in a decrease in throughput; b If the value of is too large, it will increase the network burden and reduce the transmission efficiency. b ≤ 10. Therefore, this constraint achieves a balance between data transmission reliability and efficiency under different network conditions.

[0034] Preferably, the size of the split confirmation number gradually increases with the sending order.

[0035] Specifically, the gradually increasing confirmation number can ensure that the sender confirms the received data in order, prevent the sender from misjudging data loss or disorder, help maintain the orderliness of data transmission, and improve network reliability.

[0036] Preferably, the differences between the split confirmation numbers gradually decrease with the sending order.

[0037] Specifically, after the receiving end splits the confirmation number, it sends the split confirmation numbers in sequence. The difference between the confirmation number sent each time and the previous confirmation number gradually decreases. By gradually reducing the difference, the receiving end can more accurately convey the received data range, ensuring that the sending end can get feedback in time and make corresponding transmission adjustments, thereby avoiding network congestion and unnecessary retransmissions, and improving the efficiency and stability of overall data transmission.

[0038] The receiving end splits the confirmation number to be sent into multiple confirmation numbers that are smaller than the number of bytes received, and the size of the last confirmation number sent is equal to the number of bytes received. The sizes of most of these confirmation numbers are close to the number of bytes received, so as to minimize redundant confirmation information. The confirmation numbers after splitting can cover the data interval actually received by the receiving end, and most of the confirmation numbers are very close to the actual number of data bytes that need to be confirmed, rather than relying on a single confirmation number for confirmation. Based on this, preferably, the confirmation numbers after splitting are i The calculation formula for the size of the sent classification number is:

[0039]

[0040] in, k The value range is (0,1); when the confirmation number is split into b When i=1,2,…, b -1, no. b The size of the confirmation number is M ; When the confirmation number is split into a When i=1,2,…, a -1, no. a The size of the confirmation number is M .

[0041] That is, among the confirmation numbers after splitting, the size of the first confirmation number is:

[0042]

[0043] The size of the second confirmation number is:

[0044]

[0045] No. i The size of a confirmation number is:

[0046]

[0047] The size of the last confirmation number sent is M .

[0048] in, M Indicates the number of bytes received. N Indicates the number of bytes confirmed. k It is a parameter between (0,1) and is used to control the splitting amplitude of the confirmation number. k When it is close to 1, the size of the confirmation number varies greatly, and the number of split confirmation numbers is small, which is more suitable for relatively stable network conditions; k When it is close to 0, the number of split confirmation numbers is greater, which can effectively deal with network congestion or packet loss; but k It cannot be too small, otherwise too many confirmation numbers will lead to additional bandwidth overhead and affect transmission efficiency. It is recommended to give priority to it. k =0.5. If the calculated result of the confirmation number is not an integer, it will be rounded up.

[0049] After receiving the acknowledgment number, the sender removes the acknowledged bytes from the send window and releases the corresponding buffer resources to avoid unnecessary data backlogs. The sender uses the send window to manage sent but unacknowledged data. Only after receiving the corresponding acknowledgment number does the sender remove this data from the window to make room for new data. After receiving the acknowledgment number, the sender adjusts the send window size and removes the acknowledged bytes based on the number of bytes represented by the acknowledgment number. Buffer resources are memory space reserved by the sender for storing pending and previously sent data. By promptly releasing the buffer resources for acknowledged data, the sender can more efficiently manage network resources and prevent data loss or transmission congestion due to buffer overflow.

[0050] An embodiment of the present invention provides a receiving end, including:

[0051] The first processing module is used to receive the data packet sent by the sending end and update the current number of received bytes;

[0052] The second processing module is used to determine whether the number of bytes currently received is equal to the number of bytes currently confirmed. If so, the confirmation number is sent to the sending end; otherwise, the confirmation number is split according to the current network status and sent to the sending end in sequence;

[0053] The network status is characterized by network delay and packet loss rate. If the current network delay and packet loss rate are both greater than the corresponding threshold, the confirmation number is split into bOtherwise, the confirmation number will be split into a indivual, a 、 b are all integers greater than 1, a < b ; Moreover, the size of the confirmation number after splitting is greater than the current number of confirmed bytes N The size of the last split confirmation number sent is equal to the number of bytes currently received M , the size of other confirmation numbers after splitting is smaller than M .

[0054] An embodiment of the present invention provides a receiving end, comprising: a computer-readable storage medium and a processor;

[0055] The computer-readable storage medium is used to store executable instructions;

[0056] The processor is configured to read the executable instructions stored in the computer-readable storage medium and execute the method described in any one of the above embodiments.

[0057] An embodiment of the present invention provides a computer-readable storage medium, wherein the computer-readable storage medium stores computer instructions, and the computer instructions are used to enable a processor to execute the method described in any of the above embodiments.

[0058] An embodiment of the present invention provides a computer program product, including a computer program or instructions, which implements the method described in any of the above embodiments when executed by a processor.

[0059] An embodiment of the present invention provides a data transmission system, including a transmitting end and a receiving end as described in any of the above embodiments.

[0060] It will be easily understood by those skilled in the art that the above description is merely a preferred embodiment of the present invention and is not intended to limit the present invention. Any modifications, equivalent substitutions, and improvements made within the spirit and principles of the present invention should be included in the scope of protection of the present invention.

Claims

1. A TCP acknowledgment number splitting method, applied to a receiving end, characterized in that: include: S1, receives the data packet sent by the sender and updates the current number of received bytes; S2, determine whether the number of bytes currently received is equal to the number of bytes currently confirmed. If so, send the confirmation number in a conventional manner; otherwise, split the confirmation packets corresponding to the confirmation number according to the current network conditions and send them to the sending end in sequence; In which, the network condition is characterized by network delay and packet loss rate. If the current network delay and packet loss rate are both greater than the corresponding thresholds, the confirmation packet corresponding to the confirmation number is split into b pieces, otherwise the confirmation packet corresponding to the confirmation number is split into a pieces, where a and b are both integers greater than 1, and a<b; and the size of the confirmation number in the split confirmation packet is greater than the current number of confirmed bytes N, the size of the confirmation number in the last split confirmation packet sent is equal to the current number of received bytes M, and the size of the confirmation number in the other split confirmation packets is less than M.

2. The method according to claim 1, wherein It means rounding b / 2 down, where b≤10.

3. The method according to claim 1, wherein The size of the confirmation number in the split confirmation packet gradually increases with the sending order.

4. The method according to claim 1 or 3, wherein The differences between the confirmation numbers in the split confirmation packets gradually decrease with the sending order.

5. The method according to claim 4, wherein The calculation formula for the size of the confirmation number in the ith confirmation packet sent after splitting is: M-(M-)*k i Among them, the value range of k is (0, 1); when the confirmation package corresponding to the confirmation number is split into b pieces, i = 1, 2, ..., b-1, and the size of the confirmation number in the b-th confirmation package is M; when the confirmation package corresponding to the confirmation number is split into a pieces, i = 1, 2, ..., a-1, and the size of the confirmation number in the a-th confirmation package is M.

6. A receiving end, characterized in that: include: The first processing module is used to receive the data packet sent by the sending end and update the current number of received bytes; The second processing module is used to determine whether the number of bytes currently received is equal to the number of bytes currently confirmed. If so, a confirmation number is sent in a conventional manner; otherwise, the confirmation packets corresponding to the confirmation numbers are split according to the current network conditions and sent to the sending end in sequence; In which, the network condition is characterized by network delay and packet loss rate. If the current network delay and packet loss rate are both greater than the corresponding thresholds, the confirmation packet corresponding to the confirmation number is split into b pieces, otherwise the confirmation packet corresponding to the confirmation number is split into a pieces, where a and b are both integers greater than 1, and a<b; and the size of the confirmation number in the split confirmation packet is greater than the current number of confirmed bytes N, the size of the confirmation number in the last split confirmation packet sent is equal to the current number of received bytes M, and the size of the confirmation number in the other split confirmation packets is less than M.

7. A receiving end, characterized in that: include: Computer-readable storage medium and processor; The computer-readable storage medium is used to store executable instructions; The processor is configured to read the executable instructions stored in the computer-readable storage medium and execute the method according to any one of claims 1 to 5.

8. A computer-readable storage medium, characterized in that The computer-readable storage medium stores computer instructions, and the computer instructions are used to enable a processor to execute the method according to any one of claims 1 to 5.

9. A computer program product comprising a computer program or instructions, characterized in that When the computer program or instruction is executed by a processor, the method according to any one of claims 1 to 5 is implemented.

10. A data transmission system, characterized in that: The device comprises a transmitting end and a receiving end as described in claim 6 or 7.

Citation Information

Patent Citations

  • Devices, systems, and methods for transmitting a message

    US20130013731A1

  • Method and device for detecting network attack

    US20180278632A1