Uma visão geral sobre o protocolo de mensagens pares .
O cliente pode usar dois protocolos para compartilhar informações com colegas, TCP ou uTP (sobre UDP). Esses dados seguem a especificação do protocolo bittorrent , as mensagens dos pares de seção .
Portanto, programaticamente, é necessário iniciar uma conexão entre dois clientes. Depois que a conexão é configurada (através de TCP ou uTP), um handshake bittorrent é iniciado pelo cliente, que pega as informações dos pares remotos (ip e porta) do rastreador ou através do DHT . Este handshake contém o info_hash que identifica o torrent sobre o qual essa conexão será realizada.
Vamos ver primeiro como os dados do Torrent são truncados através do protocolo. Uma parte é uma parte dos dados que você está compartilhando através da rede. Não confunda com um bloco , que é uma seção de uma peça embrulhada em um pacote. O bloco é a granularidade para compartilhar um pedaço através de pacotes, e um pedaço é a granularidade para compartilhar um Torrent através de pares.
Quando a conexão inicia, os dois clientes (cliente local, que chamarei de LC e cliente remoto, RC ) ficam bloqueados e desinteressados . Bloqueado significa "Não responderei a nenhuma das suas mensagens muito ocupadas, mas posso levá-las em consideração". Desbloqueado significa, portanto, "Eu responderei suas mensagens". Interessado significa, é claro, que eu gostaria de algumas peças que você tem. Portanto, o estado de uma conexão entre dois pares pode ser definido com esses quatro estados: LC_chocked ?, LC_interested ?, RC_chocked ?, RC_interested? Para avisar a RC que estou (des) chocado ou (des) interessado, Tenho que enviar mensagens (des) interessadas e (des) chocadas e reciprocamente.
Para informar um ao outro quais peças eles têm, eles podem enviar uma mensagem de campo de bits logo após o aperto de mão. Como o nome sugere, é uma cadeia de bits em que cada bit é definido como 1
se o cliente tiver essa parte peculiar , 0
caso contrário.
Então, se LC é calçadas e interessados e RC tem unchocked ele, então ele pode enviar uma solicitação de mensagens para pedir um bloco pertencente a uma peça que ele sabe LC tem graças a bitfield mensagem.
Quando um colega recebeu toda a peça , ele poderia enviar uma peça de mensagem para informar tudo o que é pares remotos para que eles atualizar o associado bitfield eles estão segurando.
Essa é uma visão geral muito básica e, é claro, nem todos os detalhes são fornecidos aqui, como o algoritmo de asfixia, etc ... Se você quiser obter mais detalhes, verifique os dois links que eu publiquei acima, na seção de comentários (como novo usuário eu posso tem mais de dois links em uma postagem).