При соединении клиенты сразу обмениваются информацией об имеющихся у
них сегментах. Клиент, желающий скачать сегмент, посылает запрос и,
если второй клиент готов отдавать, получает этот сегмент. После этого
клиент проверяет контрольную сумму сегмента и оповещает всех
присоединённых пиров о наличии у него этого сегмента.
Каждый клиент имеет возможность временно блокировать отдачу другому клиенту (англ. choke).
Это делается для более эффективного использования канала отдачи. Кроме
того, при выборе — кого разблокировать, предпочтение отдаётся пирам,
которые сами передали этому клиенту много сегментов. Таким образом,
пиры с хорошими скоростями отдачи поощряют друг друга по принципу «ты —
мне, я — тебе».
Обмен сегментами ведётся по принципу «ты — мне, я — тебе»
симметрично в двух направлениях и в случайном порядке. Клиенты
периодически сообщают друг другу об имеющихся у них сегментах. Обмен
данными начинается, когда обе стороны в нём заинтересованы, то есть
каждая из сторон имеет сегменты, которых нет у другой. Количество
переданных сегментов подсчитывается, и если одна из сторон
обнаруживает, что передаёт в среднем больше, чем принимает, она
блокирует (англ. choke) отдачу. Таким образом, в протокол заложена защита от личеров.
При получении полного файла клиент переходит в специальный режим работы, в котором он только отдаёт данные (становится сидом).
Клиенты периодически информируют трекер об изменениях в состоянии закачек и обновляют списки IP-адресов.