A method of correcting errors in a data transmission network, comprising: transmitting a plurality of uncoded information packets (u 1, u 2,..., u n) across a network path to a given receiver; transmitting a plurality of coded packets (e j,...,e j+1) for recovering uncoded information packets lost in transmission to said receiver across said network path, the coded packets being temporally interspersed among said uncoded information packets, wherein each uncoded information packet comprise one or more uncoded data symbols; wherein: the coded packets are encoded using random linear network coding and a coded packet e j comprises one or more coded symbols e i j determined as: e i j = ∑ k = K K + NR − 1 c k s i k, i=1,2,...,n in which: k is an index; j is a coded packet index; n is a number of the one or more uncoded data symbols in the uncoded information packet; e i j represents an ith coded symbol for a jth coded packet; c k represents a kth weighting coefficient drawn at random from a same finite field as the uncoded data symbols; s i k represents an ith data symbol of a kth uncoded information packet; K an index of the first uncoded information packet used for encoding the coded packet; and NR is a number of information packets, where N is a block size and R is a coding rate determined as a function of a packet loss rate; wherein each of the coded packets is encoded based on uncoded information packets transmitted prior thereto such that each of the coded packets is not limited to uncoded information packets in a specified block; and interspersing the coded packets amongst the uncoded information packets. transmitting a plurality of uncoded information packets (u 1, u 2,..., u n) across a network path to a given receiver; transmitting a plurality of coded packets (e j,...,e j+1) for recovering uncoded information packets lost in transmission to said receiver across said network path, the coded packets being temporally interspersed among said uncoded information packets, wherein each uncoded information packet comprise one or more uncoded data symbols; wherein: the coded packets are encoded using random linear network coding and a coded packet e j comprises one or more coded symbols e i j determined as: e i j = ∑ k = K K + NR − 1 c k s i k, i=1,2,...,n in which: k is an index; j is a coded packet index; n is a number of the one or more uncoded data symbols in the uncoded information packet; e i j represents an ith coded symbol for a jth coded packet; c k represents a kth weighting coefficient drawn at random from a same finite field as the uncoded data symbols; s i k represents an ith data symbol of a kth uncoded information packet; K an index of the first uncoded information packet used for encoding the coded packet; and NR is a number of information packets, where N is a block size and R is a coding rate determined as a function of a packet loss rate; wherein each of the coded packets is encoded based on uncoded information packets transmitted prior thereto such that each of the coded packets is not limited to uncoded information packets in a specified block; and k is an index; j is a coded packet index; n is a number of the one or more uncoded data symbols in the uncoded information packet; e i j represents an ith coded symbol for a jth coded packet; c k represents a kth weighting coefficient drawn at random from a same finite field as the uncoded data symbols; s i k represents an ith data symbol of a kth uncoded information packet; K an index of the first uncoded information packet used for encoding the coded packet; and NR is a number of information packets, where N is a block size and R is a coding rate determined as a function of a packet loss rate; wherein each of the coded packets is encoded based on uncoded information packets transmitted prior thereto such that each of the coded packets is not limited to uncoded information packets in a specified block; and interspersing the coded packets amongst the uncoded information packets.