# Arquivo torrent

Um arquivo torrent é um arquivo contendo metadados usados para Bittorrent. Está definido na especificação do protocolo Bittorrent, criado por Bram Cohen. Um torrent simplesmente é uma informação acerca do arquivo de destino, embora não contenha nenhuma informação sobre o conteúdo do ficheiro. A única informação que contém no arquivo torrent é a localização das partes do arquivo de destino. Os torrents funcionam dividindo o arquivo ou arquivos em partes menores localizadas em diferentes hosts de maneira ilimitada. Com esse método os arquivos grandes são baixados de maneira mais eficiente, ou seja, mais rapidamente. Quando um cliente (o receptor do arquivo) inicia o download por torrent, as pequenas partes requisitadas são encontradas mais rapidamente devido a informação do arquivo torrent.
NOTA: O arquivo de destino só funciona quando todas as partes são completadas.
Um arquivo torrent pode conter muitas URLs de trackers e a integridade de todos os metadados de todas as partes. Também pode conter metadados adicionais para a extensão das especificações Bittorrent.

## Estrutura do arquivo

Um arquivo torrent é um dicionário de Bencode com as seguintes chaves:
* announce - a URL do tracker.
* info - isto cria um dicionário cujas chaves são dependentes se um ou mais arquivos estão sendo compartilhados.
   * name - diretório sugerido onde os arquivos serão guardados.
   * piece length - número de bytes por parte. É comumente 218 = 256 KiB = 262,144 B.
   * pieces - uma lista de hash. Esta é a concatenação de cada hash SHA-1 das partes. Como SHA-1 retorna um hash de 160 bits cada parte será uma sequência cujo comprimento é um múltiplo de 160-bits.
   * length - tamanho do arquivo em bytes (somente quando o arquivo está sendo compartilhado).
   * files - uma lista de dicionários cada uma correspondendo a um arquivo (somente quando vários arquivos estão sendo compartilhados). Cada dicionário tem as seguintes chaves:
      * path - uma lista de seqüências correspondentes aos nomes de subdiretório, a última delas é o nome do arquivo real.
      * length - o tamanho do arquivo em bytes.
Todas as sequências devem ser codificadas em UTF-8.

## Extensões
### Extensões dos projetos

Estas extensões estão sendo consideradas para a normalização. Arquivos torrent usam a extensão ".torrent".

### Tabelas de Hash distribuídas

BEP-0005 expande o BitTorrent para suportar tabelas de hash distribuídas.
Um dicionário torrent sem tracker não tem uma chave de anunciar. Em vez disso, um torrent sem tracker tem uma chave de nós:
Por exemplo,
A especificação recomenda que nós "devem ser definidos para os nós mais próximos de K na tabela de roteamento do cliente de torrent. Alternativamente, a chave pode ser definida como um nó conhecido o bem como um operado pela pessoa geradora do torrent."

### Múltiplos trackers

BEP-0012 expande o Bittorrent para suportar múltiplos trackers.
Uma nova chave,announce-list, é adicionada no topo da lista.

### Seeds HTTP

BEP-0017 expande o Bittorrent para suportar seeds HTTP}}.
Uma nova chave, httpseeds, é adicionada no topo da lista. O valor da chave é uma lista de endereços da web onde os arquivos podem ser recuperados:

### Torrents privados

BEP-0027 expande o Bittorrent para suportar torrents privados.
Uma nova chave, private, é adicionada no topo da lista. Se o valor for 1 o torrent é privado.

### Merkle trees

BEP-0030 expande o BitTorrent para suportar Merkle trees.

## Exemplos
### Arquivo único

Aqui está um arquivo torrent de-bencode (com partes de tamanho 256 KB = 262144 bytes) para o arquivo debian-503-amd64-CD-1.iso (cujo tamanho e 647 MB = 678301696 bytes):

### Múltiplos arquivos

Aqui está um arquivo torrent de-bencode (com partes de tamanho 256 KiB = 262144 B) para 2 arquivos, 111.txt e 222.txt:

## Veja também

* P2P
* Transmission
* Vuze
* BitComet
* µTorrent