Pokud se nejedná o zprávu udržující spojení (keep alive), začíná jedním z těchto znaků:
- 0: choke
- 1: unchoke
- 2: interested
- 3: not interested - tyto čtyři zprávy oznamují změnu příznaků spojení
- 4: have – potvrzuje správné přijetí bloku; odeslána poté, co klient dokončí příjem bloku a zkontroluje platnost hash kódu; následuje číslo bloku
- 5: bitfield – je posíláná pouze jednou při navazování spojení; následuje pole n bitů (doplněné nulami na celé byty), kde n je počet bloků; význam je 1 = klient má blok, 0 = nemá blok; klient, který nemá žádná data, může tuto zprávu vynechat
- 6: request – žádost o data; následuje index bloku, offset částice v bloku a délku částice (mocnina dvou, pokud nejde o poslední částici); je-li větší než 2^17, je zpráva považována za neplatnou a spojení uzavřeno
- 7: piece – samotná data: následuje index bloku, offset částice a data částice
- 8: cancel – slouží ke zrušení požadavku; používá se především v ukončovacím módu stahování; následuje index bloku, offset částice a její délka