# BitTorrent

Na informática, o BitTorrent também chamado de sistema par-a-par, ou ponto-a-ponto (do inglês: peer-to-peer, com acrônimo P2P) é um sistema on-line de compartilhamento e download de arquivos entre usuários através do protocolo de rede sem que o arquivo precise estar em um computador servidor, criado pelo programador Bram Cohen em abril de 2001.
No sistema P2P, cada dispositivo de um usuário, computador e smartphone, funciona como servidor de arquivos e cliente de download ao mesmo tempo, permitindo transferências de múltiplos arquivos de graça por múltiplos usuários.
Esse protocolo introduziu o conceito de partilhar o que já foi descarregado, maximizando o desempenho e possibilitando altos índices de transferência, mesmo com um enorme número de usuários realizando descargas (downloads) de um mesmo arquivo simultaneamente. Enquanto nas outras redes você deve procurar pelo próprio programa o arquivo e baixá-lo, nos arquivos de protocolo BitTorrent a coisa é diferente. Acontece que, todos os usuários que fazem o download de um arquivo, tornam-se também fornecedores deste arquivo; quando alguém for baixá-lo, todos os computadores que já o possuem através do torrent e que estiverem online no momento vão atuar como "semeadores", cada um fornecendo uma parte do arquivo, portanto quanto mais usuários fizerem o download, mais rápido será feito o compartilhamento, pois a parte enviada do arquivo por cada um será menor.
O BitTorrent foi e teve sua primeira implementação liberada no dia 2 de Julho de 2001. Desde então tem sido alvo de empresas que lutam em defesa da propriedade intelectual, devido a alegações de violação de copyright (autoria) de alguns arquivos transmitidos pela rede. No ano de 2005 o protocolo BitTorrent foi responsável por 35% dos dados transferidos na Internet em todo o mundo.
Em transmissões via BitTorrent, os arquivos são divididos em partes normalmente bem menores que o arquivo original. Num sistema de servidor central (como sites e portais de downloads, por exemplo), existe uma fila de espera e os usuários dependem do funcionamento do servidor para enviar o arquivo para cada um, tornando o processo lento, principalmente quando são arquivos "grandes"/"pesados" e que são baixados por muitas pessoas ao mesmo tempo. No BitTorrent, o sistema de partilha otimiza o desempenho geral de rede, uma vez que não existem filas de espera e, todos partilham "pedaços" entre si. A quantidade de usuários baixando o mesmo arquivo apenas agiliza o processo, devido ao fato de todos se tornarem fornecedores dos pedaços do arquivo, não há um servidor central, portanto não há sobrecarga. Assim, quanto mais utilizadores entram para descarregar um determinado arquivo, mais largura de banda se torna disponível. Mesmo as máquinas que possuem apenas parte do arquivo e estão realizando o download também já compartilham o arquivo.

## Acesso

Há diversos sites onde usuários disponibilizam seus arquivos .torrent. Porém como o número desses serviços é crescente, foi criado outro tipo de serviço: o de pesquisar arquivos nesses sites sem a necessidade de vasculhar um por um.
E, apesar de nos últimos tempos estarem parecendo um caça as bruxas, ou melhor, caça aos sites de torrent, você poderá encontrar bons downloads se procurar bem. Aqui vai uma lista dos sites nos quais você pode encontrar seus torrents:
* The Pirate Bay
* Torrent-finder
* RARBG
* I Love torrents
* TorrentZilla
* Torrent Reactor
* Demonoid (privado)

## Cliente

São programas compatíveis com arquivos torrents necessários para criação, download e envio. Sem eles é impossível fazer o download de torrents. Você poderá até baixar o arquivo .torrent que vai redirecioná-lo ao original, porém se não houver cliente (como BitTorrent, BitComet, µTorrent, Vuze etc...) não é possível dar continuidade ao processo. Estes programas têm interfaces bem divididas e podem organizar muito bem os seus torrents entre aqueles que ainda estão sendo baixados, os que já foram concluídos e os outros dos quais você se tornou um seeder (semeador).

## Funcionamento

Baixar por torrent consiste em coletar fragmentos de um mesmo arquivo no computador de vários usuários que compartilham o conteúdo ou estejam fazendo download do mesmo documento. Isso é o que diferencia o compartilhamento por torrent de outras formas de download entre só dois usuários (P2P ou peer-to-peer). A transferência de dados acontece entre vários computadores que disponibilizam o mesmo arquivo. A sacada do protocolo BitTorrent é que o download também é realizado a partir de computadores que disponibilizam partes do mesmo arquivo, e não somente de quem baixou ele inteiro.
Para compartilhar um arquivo usando o BitTorrent, um utilizador cria um arquivo .torrent, um pequeno "apontador" que contém:
* o nome do arquivo;
* tamanho do arquivo;
* hash, a matrícula de cada bloco do arquivo (que assegura aos utilizadores que o arquivo é o que o nome diz ser);
* endereço do servidor tracker (ver a seguir)
O arquivo torrent pode ser distribuído para outros utilizadores, sendo um website o meio mais comum. No website, geralmente é disponibilizado um "link" que irá conectar o usuário direto ao fornecedor do arquivo .torrent, o site não contém o arquivo em si, apenas funciona como um intermediário entre o novo usuário e o fornecedor. O cliente BitTorrent se torna um "nó semeador", ou seja, se torna também um fornecedor do arquivo a partir do momento que inicia o download, permitindo que outros utilizadores se conectem a ele e comecem o download. Conforme outros utilizadores fazem o download do arquivo, eles também podem se tornar novos semeadores desse arquivo. Um dos problemas desse sistema é que se todos os semeadores saírem da rede, o arquivo, ficheiro, pode tornar-se indisponível para download, mesmo que se tenha o arquivo torrent. Com sorte ainda é possível descarregar todos os pedaços de um arquivo mesmo que nenhuma fonte seja completa, uma vez que os pedaços são distribuídos em ordem aleatória. Ou seja, mesmo se nenhum semeador possuir o arquivo completo, ainda é possível fazer o download do arquivo juntando as partes que cada semeador possui.
Descarregar com o BitTorrent é bastante intuitivo. Cada pessoa que quiser descarregar um arquivo, primeiro deve descarregar o arquivo torrent que aponta para o arquivo desejado, depois abri-lo no seu cliente BitTorrent, que é um software que usa o arquivo torrent para encontrar e descarregar o arquivo desejado. O arquivo torrent mostra ao cliente o endereço do tracker, que mantém um log de quais os utilizadores que estão descarregando o arquivo e onde o arquivo e seus pedaços estão (caso o tracker esteja fora do ar fica impossível começar o download). Depois do download começar, se o tracker sair do ar ainda é possível continuar o download, mas perde-se a informação de quais os utilizadores que estão online e quais os blocos que estão disponíveis. Para cada fonte disponível o cliente lista quais blocos do arquivo que estão disponíveis, para depois pedir o bloco menos disponível na rede que ele ainda não possui. Essa priorização dos blocos mais raros entre os utilizadores da rede primeiro faz com que todos tenham blocos para partilhar. Assim que um cliente termina de descarregar um bloco, ele é automaticamente "hasheado" para garantir a integridade e segurança do mesmo, para em seguida procurar um cliente qualquer para fazer o upload daquele bloco.
BitTorrent proporciona a melhor performance para pessoas com maior volume de upload, uma propriedade conhecida como "resistência a sugadores", já que ele não garante performance para utilizadores que somente descarregam e não devolvem nada para a rede e os outros utilizadores.

## Termos do BitTorrent

Segue lista de termos do universo BitTorrent:
* Seeder: Como tudo no mundo, os torrents também começam com uma semente. Isso, uma semente, isto é, um "seeder". Semeador, em bom português. O processo de compartilhamento de arquivos é iniciado por um usuário que envia um arquivo de extensão .torrent em um site da internet. Feito isso, todos os usuários que tiverem interesse naquele conteúdo podem baixá-lo.
* Leecher: Enquanto se baixa um torrent, se assume o papel de leecher (literalmente "sanguessuga"), aquele que aproveita. Porém este papel é um tanto ambíguo. Enquanto você faz o download pode também se tornar um seeder, pois partes do arquivo já terão sido concluídas e já vieram para seu computador, então automaticamente estão disponíveis para outros leechers que possam se interessar. Portanto você pode ter um papel unico (seeder ou leecher) ou optar por ambos simultaneamente.
* Swarm: (Enxame) É um grupo formado por seeders e leechers que compartilham arquivos torrents. Peers (pessoas ou usuários) conectados por um tracker.
* Tracker: Neste caso específico o servidor se chama tracker. Ao contrário do que muitos podem pensar este servidor não é como os outros. Os trackers não armazenam nenhum dos arquivos. "Então pra que eles servem?" - simplesmente para executar a função de conectar os usuários para que estes possam executar seus papéis de seeder ou leecher.
* PEX: O Peer Exchange é um dos pontos de destaque da relação usuário-tracker, já que permite que esta aconteça de forma diferenciada. O grande trunfo do PEX é o fato que ele permite que um indivíduo pertencente a um Swarm possa trocar informações sobre o próprio grupo diretamente, sem que seja necessário pedir a autorização do tracker. A vantagem dessa função é justamente poupar este servidor de algumas tarefas. Assim, percebe-se que existe autonomia na hora e encontrar arquivos via torrent.
* Hash: Estes hashs que confundem tanto com vários números e letras em uma ordem estranha têm uma razão de ser. Sempre que você terminar de fazer o download de um pedaço do arquivo, o seu cliente torrent vai criptografá-lo, ou seja, fazer o hash. Isso é feito para que você tenha garantias de que não vai fazer o download de algo que não ordenou. Assim, seu torrent é transformado em uma sequência alfanumérica de 128 bits muito semelhantes a este exemplo: "9e107d9d372bb6826bd81d3542aq419d6". As sequências são produzidas através do algoritmo MD5, ou seja, o modelo de criptografia unidirecional que não permite o retorno a frase que lhe deu origem. Este formato é muito comum em trocas do tipo P2P e até mesmo em verificações de login. Tudo isso serve para garantir que não está baixando algo corrompido e que há uma preocupação com a segurança nos downloads e uploads.
* DHT: As DHTs, ou seja, tabelas de hash distribuído, são uma das peças chaves na hora de fazer downloads de arquivos torrent. Elas são uma espécie de sistema distribuído descentralizado que trabalha com pares de informações. As chaves e os valores são armazenados nesta tabela e, assim, qualquer nó - normalmente os leechers - é capaz de recuperar esse valor associado a uma chave para fazer o download de blocos de um arquivo maior. As DHTs ficam guardadas nos trackers. Por isso, quando você for procurar por um arquivo, a tabela deverá estar bem arquivada e atualizada para gerar o mínimo de desordem. O surgimento das DHTs esta intrinsecamente ligado ao nascimento das redes P2P e aos sistemas como Gnutella, Napster e o Freenet. Além de serem eficientes, as tabelas são bastante maleáveis, permitindo a adaptação ao sistema no qual ela é utilizada. No Napster, por exemplo, a adição dos dados acontecia no momento em que o usuário fazia o seu cadastro. A partir deste ponto, as informações de arquivos a serem compartilhados no computador seriam armazenadas no servidor. Os hashs são pontos cruciais nesse caso, porque são meios de mapeamento das chaves para os nós desta rede. São essas DHTs que promovem o encontro entre o seeder e o arquivo que ele procura.

## Comparação com outros sistemas de partilha

O método de distribuição de arquivos do BitTorrent é similar ao usado pela rede eDonkey 2000 com uma pequena diferença. Os nós da última costumam partilhar um número muito maior de arquivos, tornando a banda disponível para cada arquivo muito menor. Isso não acontece na rede BitTorrent, pois normalmente cada nó não partilha um número muito grande de arquivos diferentes, tornando maior a disponibilidade de banda. Como na rede eDonkey 2000 o volume de arquivos partilhados em cada nó é muito grande, geram-se filas de espera muito longas, aumentando muito o tempo de download. Como compensação existe um sistema de créditos implementado pelos clientes como o eMule por exemplo. Os créditos são dados pelo cliente que faz o upload para o cliente que faz o download de um determinado arquivo, evitando que os créditos possam ser alterados pelo cliente que faz o download. Cada cliente que entra na fila de espera de um outro cliente ganha uma posição maior ou menor dependendo dos créditos que ele possui. Devido ao enorme volume de arquivos e ao sistema de créditos e fila de espera, as velocidades de download costumam ser muito instáveis.
O sistema de compensação por uploads do BitTorrent já era implementado numa variante no KaZaA em 2002. O nível de participação de um usuário aumentaria e baixaria de acordo com o volume de uploads. Então quando você faz upload de um arquivo, a pessoa com o maior nível de participação ganha prioridade, que faz o upload para a pessoa com o segundo maior nível de participação, que faz para a terceira e assim por diante. É como uma pirâmide, com a pessoa com a maior banda de upload disponível no topo, seguidas das outras na hierarquia. Este é o modo mais eficiente de distribuir um arquivo, os arquivos são distribuídos a partir do topo, onde está uma quantidade menor de usuários, para os níveis abaixo até a base, onde está a maior quantidade de usuários. Infelizmente o sistema adotado pelo KaZaA é considerado por alguns como falho, uma vez que ele depende que o próprio cliente reporte o seu nível de participação, o que permite que os usuários possam deliberadamente editar o seu nível enganando os outros clientes. O sistema de créditos armazenados no cliente que faz o upload, não no que faz o download, é a correção implementada pela rede eDonkey 2000 para este problema.

## Questões jurídicas

Inicialmente criada para distribuir arquivos de forma legal, sem violar nenhum copyright, como as distribuições de GNU/Linux, trailers de filmes de alta qualidade ou qualquer outro tipo de material de livre distribuição, o BitTorrent também é conhecido por ter na rede usuários partilhando músicas, filmes e programas ilegalmente, assim como acontece com as outras redes P2P. A rede BitTorrent foi usada para distribuir cópias ilegais de alta qualidade do filme The Matrix Reloaded já nos dias seguintes após o filme ser lançado nos cinemas. Outros casos famosos foram o do vazamento do código fonte do jogo Half-Life 2 e até uma parte do código fonte do Windows NT e do Windows 2000. Devido ao grande potencial da rede BitTorrent em distribuir material ilegal e rapidamente pelo mundo, uma chuva de processos vindos de diversas autoridades defensoras da propriedade intelectual, incluindo governos, atacou os principais sites de distribuição e indexação de torrents no mundo, o que envolveu muito dinheiro, semelhante à polêmica do MP3. Apesar disto, deve-se considerar que o BitTorrent não foi criado com propósitos de pirataria, os utilizadores que fazem mau uso do protocolo é que são os errados, o protocolo em si se mostrou eficiente em tirar a sobrecarga de sites que oferecem demos e videos legalizados para o público comum. Alguns desenvolvedores, publicadores e sites do mundo já aderiram ao protocolo ou a outros protocolos P2P como uma forma de reduzir os custos de manutenção de grandes servidores de arquivos.
Acompanhando o sucesso do seu protocolo inovador, o seu criador, Bram Cohen foi contratado para desenvolver uma nova maneira de distribuir correções e outros tipos de conteúdo para jogos online em 2004, demonstrando que existem pontos legais e inovadores da sua tecnologia que merecem ser explorados. Até o momento, o BitTorrent é o protocolo P2P mais popular adotado para usos legalizados. Outras redes como a Gnutella e eDonkey2000 também têm nos seus acervos dos usuários arquivos legalizados, porém estes arquivos estão lá por conta de alguns usuários, não por decisão dos criadores ou publicadores daquele material.
Existem duas diferenças principais entre o BitTorrent e outros protocolos de partilha, partilhadores, comumente conhecidos. Primeiramente, o BitTorrent não oferece um sistema de busca interno, o usuário deve procurar os arquivos torrent que apontam para o arquivo que ele quer baixar por indicação de alguém ou procurando em sites que indexam torrents. E em segundo lugar, a rede não dá suporte ao usuário para distribuir um arquivo, ele deve rodar um tracker, localizador, para tornar o seu torrent disponível para os outros por conta própria ou usar um tracker de terceiros para isso. Essas duas características tornam a rede BitTorrent um alvo improvável de processos judiciais, bem como os seus usuários. Porém, o mesmo não se pode dizer daqueles que rodam trackers ou sites indexadores de torrents para distribuição de programas comerciais, jogos, filmes completos, músicas, etc.

###### Criptomoeda

Também foi criada a criptomoeda BitTorrent sob a sigla BTT, que de acordo com o CoinMarketCap no mês de março de 2021 está cotada em US$ 0,003383 ou R$ 0,01857.