Confusion around Bitfield Torrent

Viewed 1901

I'm a bit confuse about the bitfield message in bittorrent. I have noted the confusion in form of question below.

  1. Optional vs Required

Bitfield to be sent immediately after the handshaking sequence is completed

I'm assuming this is compulsory i.e after handshake there must follow a bitfield message. Correct?

  1. When to expect bitfield?

The bitfield message may only be sent immediately after the handshaking sequence is completed, and before any other messages are sent

assuming I read this clear although be optional message. peer can still broadcast the bitfield message prior to any message (like request, choke, uncoke etc). correct ?

  1. The high bit in the first byte corresponds to piece index 0

If I'm correct bitfield represent the state i.e whether or not the peer has a given piece with it.

Assuming that my bitfield is [1,1,1,1,1,1,1,1,1,1 ..]. I establish the fact that the peer has 10th piece missing and if the bitfield look like this [1,1,0,1,1,1,1,1,1,1 ..] the peer has a 3rd piece missing. Then what is the high bit in the first byte corresponds to piece index 0 means.

  1. Spare bits

Spare bits at the end are set to zero

What does this mean ? I mean if have a bit at end as 0 does it not means that peers has that as missing piece. why is the spare bit used.

  1. The most important of all what is the purpose of the bitfield.

My hunch on this is that bitfield make it easier to find the right peer for a piece knowing available with the peer but am i correct on this?

@Encombe

here how my bitfield payload looks like

\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFE

1 Answers
Related