A data transmission method, comprising: receiving K packets by using a first protocol, wherein each packet comprises a sequence number, and the K packets are some of L packets sent by a transmit end, and the first protocol is a modified TCP protocol which is used to delay sending of an acknowledgement, ACK, message based on a packet loss status, and is not used to retransmit the packet; determining whether at least one packet is lost by using the first protocol based on sequence numbers in the K packets, wherein the at least one lost packet is a target packet; determining a second sending delay based on the target packet when it is detected that the target packet is lost, wherein the second sending delay is greater than a first sending delay, and the first sending delay is preset; sending an ACK message to the transmit end by using the first protocol based on the second sending delay, wherein the ACK message is used to notify the transmit end that a receive end has received the L packets; sending a retransmission request for the target packet to the transmit end by using a second protocol, wherein the second protocol is a modified TCP protocol applied to a TCP quasi-application layer used to receive related information about the target packet that is sent by using the first protocol, and the second protocol is used to retransmit the target packet; and receiving, by using the second protocol, the target packet retransmitted by the transmit end, wherein after the determining the second sending delay based on a target packet, the method further comprises: starting a counter; and each time one packet is received, determining whether a packet loss occurs; and if a packet is lost, resetting the counter, and increasing the second sending delay, or if no packet is lost, increasing a value of the counter, and determining whether the value of the counter reaches a preset threshold; and if the value of the counter reaches the preset threshold, decreasing the second sending delay, and resetting the counter. receiving K packets by using a first protocol, wherein each packet comprises a sequence number, and the K packets are some of L packets sent by a transmit end, and the first protocol is a modified TCP protocol which is used to delay sending of an acknowledgement, ACK, message based on a packet loss status, and is not used to retransmit the packet; determining whether at least one packet is lost by using the first protocol based on sequence numbers in the K packets, wherein the at least one lost packet is a target packet; determining a second sending delay based on the target packet when it is detected that the target packet is lost, wherein the second sending delay is greater than a first sending delay, and the first sending delay is preset; sending an ACK message to the transmit end by using the first protocol based on the second sending delay, wherein the ACK message is used to notify the transmit end that a receive end has received the L packets; sending a retransmission request for the target packet to the transmit end by using a second protocol, wherein the second protocol is a modified TCP protocol applied to a TCP quasi-application layer used to receive related information about the target packet that is sent by using the first protocol, and the second protocol is used to retransmit the target packet; and receiving, by using the second protocol, the target packet retransmitted by the transmit end, wherein after the determining the second sending delay based on a target packet, the method further comprises: starting a counter; and each time one packet is received, determining whether a packet loss occurs; and if a packet is lost, resetting the counter, and increasing the second sending delay, or if no packet is lost, increasing a value of the counter, and determining whether the value of the counter reaches a preset threshold; and if the value of the counter reaches the preset threshold, decreasing the second sending delay, and resetting the counter. starting a counter; and each time one packet is received, determining whether a packet loss occurs; and if a packet is lost, resetting the counter, and increasing the second sending delay, or if no packet is lost, increasing a value of the counter, and determining whether the value of the counter reaches a preset threshold; and if the value of the counter reaches the preset threshold, decreasing the second sending delay, and resetting the counter.