LT-codes are a new class of codes introduced by Luby for the purpose of scalable and fault-tolerant distribution of data over computer networks. In this paper, we introduce Raptor codes, an extension of LT-codes with linear time encoding and decoding. We will exhibit a class of universal Raptor codes: for a given integer $k$ and any real $\varepsilon > 0$, Raptor codes in this class produce a potentially infinite stream of symbols such that any subset of symbols of size $k(1 + \varepsilon)$ is sufficient to recover the original k symbols with high probability. Each output symbol is generated using $O(\log(1/\varepsilon))$ operations, and the original symbols are recovered from the collected ones with $O(\log(1/\varepsilon))$ operations.We will also introduce novel techniques for the analysis of the error probability of the decoder for finite length Raptor codes. Moreover, we will introduce and analyze systematic versions of Raptor codes, i.e., versions in which the first output elements of the coding system coincide with the original $k$ elements.