A data transmission method, comprising: periodically obtaining (S501), by a sending device, a first packet sequence number and a second packet sequence number, wherein the first packet sequence number is a maximum value in packet sequence numbers respectively corresponding to packets that belong to a first data flow and that are received by a receiving device through a first data channel between the sending device and the receiving device in a statistics period, the second packet sequence number is a maximum value in packet sequence numbers respectively corresponding to packets that belong to the first data flow and that are received by the receiving device through a second data channel between the sending device and the receiving device in the statistics period, at least one packet of the first data flow is sent on both the first data channel and the second data channel, and the packet sequence number is used to indicate a ranking sequence of a corresponding packet in the first data flow; and updating (S502), by the sending device, packet cache queues and/or a packet cache queue of the first data channel and/or the second data channel based on the first packet sequence number and the second packet sequence number; wherein the updating, by the sending device, packet cache queues and/or a packet cache queue of the first data channel and/or the second data channel based on the first packet sequence number and the second packet sequence number comprises: if a difference between the first packet sequence number and the second packet sequence number is greater than a preset threshold, updating, by the sending device, the packet cache queues and/or the packet cache queue of the first data channel and/or the second data channel based on the first packet sequence number and the second packet sequence number. periodically obtaining (S501), by a sending device, a first packet sequence number and a second packet sequence number, wherein the first packet sequence number is a maximum value in packet sequence numbers respectively corresponding to packets that belong to a first data flow and that are received by a receiving device through a first data channel between the sending device and the receiving device in a statistics period, the second packet sequence number is a maximum value in packet sequence numbers respectively corresponding to packets that belong to the first data flow and that are received by the receiving device through a second data channel between the sending device and the receiving device in the statistics period, at least one packet of the first data flow is sent on both the first data channel and the second data channel, and the packet sequence number is used to indicate a ranking sequence of a corresponding packet in the first data flow; and updating (S502), by the sending device, packet cache queues and/or a packet cache queue of the first data channel and/or the second data channel based on the first packet sequence number and the second packet sequence number; wherein the updating, by the sending device, packet cache queues and/or a packet cache queue of the first data channel and/or the second data channel based on the first packet sequence number and the second packet sequence number comprises: if a difference between the first packet sequence number and the second packet sequence number is greater than a preset threshold, updating, by the sending device, the packet cache queues and/or the packet cache queue of the first data channel and/or the second data channel based on the first packet sequence number and the second packet sequence number. <EOS>