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.