A method for transmitting data streams, wherein in the method, the data streams are transmitted between a source node and a destination node by using at least one intermediate node; the data streams comprise a first data stream whose encoded form is a fountain code; and the method comprises: receiving (S130), by a first intermediate node, an encoded packet sent by the source node or a second intermediate node, wherein the encoded packet is a packet obtained by encoding an original packet of the first data stream with a fountain code technology; and dropping (S150), by the first intermediate node, the encoded packet when the usage of a first cache queue exceeds a threshold, wherein the first cache queue is in the first intermediate node and the first cache queue is a cache queue allocated to the first data stream, and the threshold indicates maximum allowed usage of the first cache queue, characterized in that the method further comprises: receiving, by the first intermediate node, an instruction message, wherein the instruction message is sent by the destination node when the destination node obtains, by means of decoding based on received encoded packets, all original packets of the first data stream, the instruction message is used to instruct the source node to stop sending the first data stream, and a size of the instruction message is 1 bit; sending, by the first intermediate node, the instruction message to the source node, wherein the instruction message is further used to instruct to drop the first data stream; and dropping, by the first intermediate node according to the instruction message, an encoded packet that is of the first data stream and that is stored in the first cache queue. receiving (S130), by a first intermediate node, an encoded packet sent by the source node or a second intermediate node, wherein the encoded packet is a packet obtained by encoding an original packet of the first data stream with a fountain code technology; and dropping (S150), by the first intermediate node, the encoded packet when the usage of a first cache queue exceeds a threshold, wherein the first cache queue is in the first intermediate node and the first cache queue is a cache queue allocated to the first data stream, and the threshold indicates maximum allowed usage of the first cache queue, characterized in that the method further comprises: receiving, by the first intermediate node, an instruction message, wherein the instruction message is sent by the destination node when the destination node obtains, by means of decoding based on received encoded packets, all original packets of the first data stream, the instruction message is used to instruct the source node to stop sending the first data stream, and a size of the instruction message is 1 bit; sending, by the first intermediate node, the instruction message to the source node, wherein the instruction message is further used to instruct to drop the first data stream; and dropping, by the first intermediate node according to the instruction message, an encoded packet that is of the first data stream and that is stored in the first cache queue. receiving, by the first intermediate node, an instruction message, wherein the instruction message is sent by the destination node when the destination node obtains, by means of decoding based on received encoded packets, all original packets of the first data stream, the instruction message is used to instruct the source node to stop sending the first data stream, and a size of the instruction message is 1 bit; sending, by the first intermediate node, the instruction message to the source node, wherein the instruction message is further used to instruct to drop the first data stream; and dropping, by the first intermediate node according to the instruction message, an encoded packet that is of the first data stream and that is stored in the first cache queue. <EOS>