Design of Algorithms and Protocols for Peer-To-Peer Streaming Systems