File sharing is the practice of distributing or providing access to  digitally stored information, such as computer programs, multimedia  (audio, images, and video), documents, or electronic books. It may be  implemented through a variety of ways. Common methods of storage,  transmission, and distribution used in file sharing include manual  sharing using removable media, centralized servers on computer networks,  World Wide Web-based hyperlinked documents, and the use of distributed  peer-to-peer networking.
  Peer-to-peer (P2P) computing or  networking is a distributed application architecture that partitions  tasks or workloads among peers. Peers are equally privileged, equipotent  participants in the application. They are said to form a peer-to-peer  network of nodes.
Peers make a portion of their resources, such as  processing power, disk storage or network bandwidth, directly available  to other network participants, without the need for central coordination  by servers or stable hosts. Peers are both suppliers and consumers of  resources, in contrast to the traditional client–server model where only  servers supply (send), and clients consume (receive).
  P2P or  Peer-to-peer file sharing allows users to download files such as music,  movies, and games using a P2P software client that searches for other  connected computers. The "peers" are computer systems connected to each  other through internet. Thus, the only requirements for a computer to  join peer-to-peer network are internet connection and P2P software. The  first generation of P2P software was Napster, a central server-based  model that was eventually shut down. The second generation of P2P  software is Gnutella and following Kazaa network, which are user-based  model. However, they are legally controversial until now. BitTorrent  becomes the third generation of P2P network. Difference between  BitTorrent and previous generations is that it creates a new network for  every set of files instead of trying to create one big network of files  using SuperNodes, web caches or servers.