In a typical web service, our PCs are clients whereas the URL that we type is a server. We request something from a server such as a web page, information or a complete file. Sometimes we also send information to the server to be processed. This is a typical client-server environment.
Torrent downloads are completely different. When we are downloading from torrents, this is not a typical client-server environment. There is no central server that is attending and serving the download requests. In a torrent (or peer-to-peer) network, all connected computers share files. Some computers are uploading (seeding) while others are downloading (leeching).
A file is made up of many blocks and the file is downloaded or uploaded, block by block. When someone starts a fresh download, that client starts with zero. It finds other computers in the P2P network that have the file to share (seeds). The download (leeching) starts block by block. The download is complete when all blocks of the files are recieved.
When the download completes, the same computer is now ready to share. Now the leech becomes the seed.
Some points to be noted:
- A file may be seeded by 10 peers. When someone is downloading, the file blocks are downloaded from any seed and not necessarily from the same peer.
- A leech becomes a 100% seed at the end of the file download. However, as soon as you have some blocks downloaded, you are ready to seed (share) them
- So even while downloading (leeching), uploading (seeding) is also going on