Система распределения информации в BitTorrent работает следующим образом: 14
- Клиент подсоединяется к трекеру — специализированному серверу, работающему по протоколу HTTP. 1 Он нужен, чтобы клиенты (пиры) могли найти друг друга. 1
- Клиент сообщает трекеру свой адрес и идентификатор файла, который требуется скачать (он именуется хеш-суммой). 1 В ответ клиент получает адреса других клиентов, скачивающих или раздающих этот файл. 1
- Впоследствии клиент периодически информирует трекер о ходе процесса и получает обновлённые списки адресов. 1
- Пиры соединяются друг с другом и обмениваются сегментами файлов без непосредственного участия трекера. 1 Он лишь хранит информацию, получаемую от клиентов. 1
- При соединении клиенты сразу обмениваются информацией об имеющихся у них сегментах. 1 Обмен данными начинается, когда каждая из сторон имеет сегменты, которых нет у другой. 1
- Пир, желающий скачать сегмент, посылает запрос и получает его от соответствующего клиента. 1 После этого он проверяет контрольную сумму сегмента. 1 Если она совпала с той, что записана в торрент-файле, сегмент считается успешно скачанным, и клиент оповещает всех о наличии у него этого сегмента. 1 Если же контрольные суммы различаются, то сегмент скачивается заново. 1
- Порядок обмена выбирается таким образом, чтобы сначала клиенты обменивались наиболее редкими сегментами: таким образом повышается доступность файлов в раздаче. 1
- Когда скачивание почти завершено, клиент входит в режим, именуемый end game. 1 Он запрашивает все оставшиеся сегменты у всех раздающих клиентов, что позволяет избежать замедления почти завершённой закачки. 1
- При получении полного файла клиент становится сидом, то есть переходит в специальный режим работы, в котором он только отдаёт данные. 1 Далее сид периодически информирует трекер об изменениях в состоянии торрентов и обновляет списки IP-адресов. 1
Существуют также и бестрекерные системы, в которых трекер доступен децентрализованно — на клиентах в форме распределённой хеш-таблицы. 1