Fountain codes are forward error correction codes for erasure channels.
They are able to recover lost packets without needing a backchannel.
As a rateless code, transmitters generate packets at random, on the fly.
Receivers then listen to as many packets as needed to reconstruct the message.