Mapping the Gnutella Network: Properties of Large-Scale Peer-to-Peer Systems and Implications for System Design