Arquivo de Torrent

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Arquivo de torrent
Extensão do arquivo .torrent

Um arquivo de torrent é um arquivo contendo metadados usados para Bittorrent. Está definido na especificação do protocolo Bittorrent.[1] 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 de 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 de torrent.

NOTA: O arquivo de destino só funciona quando todas as partes são completadas.

Um arquivo de 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.[2]

Estrutura do arquivo[editar | editar código-fonte]

Um arquivo de 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 - numero 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[editar | editar código-fonte]

Extensões dos projetos[editar | editar código-fonte]

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

Tabelas de Hash distribuídas[editar | editar código-fonte]

BEP-0005[3] 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:

{
...
'nodes': [["<host>", <port>], ["<host>", <port>], ...]
...
}

Por exemplo,

'nodes': [["127.0.0.1", 6881], ["your.router.node", 4804]]

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[editar | editar código-fonte]

BEP-0012[4] expande o Bittorrent para suportar múltiplos trackers.

Uma nova chave,announce-list, é adicionada no topo da lista.

...
}

Seeds HTTP[editar | editar código-fonte]

BEP-0017[5] 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:

{
...
'httpseeds': ['http://www.site1.com/source1.php', 'http://www.site2.com/source2.php']
...
}

Torrents privados[editar | editar código-fonte]

BEP-0027[6] expande o Bittorrent para suportar torrents privados.

Uma nova chave, private, é adicionada no topo da lista. Se o valor for 1 o torrent é privado.

{
...
'private': 1
...
}

Merkle trees[editar | editar código-fonte]

BEP-0030[7] expande o BitTorrent para suportar Merkle trees.

{
...
'info': {
...
'root hash': e6bdebcc5d55da0a77f4bb1b57d88de794838577
...
}
...
}

Exemplos[editar | editar código-fonte]

Arquivo único[editar | editar código-fonte]

Aqui está um arquivo de 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):

{
    'announce': 'http://bttracker.debian.org:6969/announce',
    'info':
    {
        'name': 'debian-503-amd64-CD-1.iso',
        'piece length': 262144,
        'length': 678301696,
        'pieces': '841ae846bc5b6d7bd6e9aa3dd9e551559c82abc1...d14f1631d776008f83772ee170c42411618190a4'
    }
}

Multiple files[editar | editar código-fonte]

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

{
    'announce': 'http://tracker.site1.com/announce',
    'info:
    {
        'name': 'directoryName',
        'piece length': 262144,
        'files':
        [
            {'path': '111.txt', 'length': 111},
            {'path': '222.txt', 'length': 222}
        ],
        'pieces': '6a8af7eda90ba9f851831073c48ea6b7b7e9feeb...8a43d9d965a47f75488d3fb47d2c586337a20b9f'
    }
}

Veja também[editar | editar código-fonte]

Referências