This document discusses peer-to-peer (P2P) systems. It introduces the rationale for P2P, which is to leverage edge resources and scale without centralized servers. It describes three generations of P2P systems: centralized file sharing (Gen I), decentralized file sharing (Gen II), and P2P middleware (Gen III). It then discusses various P2P architectures like pure, hybrid, and mediated P2P. The rest of the document focuses on distributed hash tables (DHTs), covering concepts like GUID routing, content routing, bootstrapping, and specific DHT implementations like Pastry and Chord.