Anatomia do BitTorrent a Ciência da Computação no Transmission Paulo Cheadi Haddad Filho Orientador: José Coelho de Pina Trabalho de Formatura Supervisionado Universidade de São Paulo São Paulo, 2013 Sumário Sumário I ListadeFiguras III 1 Introdução 3 2 Napster,Gnutella,eDonkeyeBitTorrent 5 2.1 Períodopré-torrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 NascimentodoBitTorrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Mundopós-torrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3 AnatomiadoBitTorrent 11 3.1 Buscaporinformações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2 TabelasHashDistribuídaseoKademlia . . . . . . . . . . . . . . . . . . . . . 29 3.3 PeerExchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.4 Jogodatrocadearquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4 CiênciadaComputaçãonoTransmission 74 4.1 Estruturasdedados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.2 Funçõesdehash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.3 Criptografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.4 Bitfieldseotrafficshaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.5 ProtocolosTCPeUDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.6 Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.7 Configuraçãoeroteamentodepacotesemrede . . . . . . . . . . . . . . . . . 98 4.8 IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 4.9 ConexãocomaInternet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 4.10 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 4.11 EngenhariadeSoftware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 I 5 TransmissioneoBCC 113 6 ComentáriosFinais 115 Glossário 117 Bibliografia 123 II Lista de Figuras 3.1 simulaçãodeumatransferênciatorrent: oseeder,naparteinferiordasfiguras, possuitodasascincopartesdeumarquivo,queosoutroscomputadores—os leechers—baixamdeformaindependenteeparalela. Fonte: [128] . . . . . . . 12 3.2 amostradeumarededeconexõesBitTorrent . . . . . . . . . . . . . . . . . . . 13 3.3 comparaçãodeoverheadsderedescentralizadasedescentralizadas,eabrecha ondeaDHTseencaixa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.4 árvore binária do Kademlia. O nó preto é a posição do ID 0011...; os ovais cinzassãoassubárvoresondeonópretodevepossuirnósconhecidos. Fonte: [66] 31 3.5 exemplodeumabuscanaárvoredenósdoKademliausando-seumID.Onó preto, de prefixo 0011, encontra o nó de prefixo 1110 através de sucessivas buscas(setasnumeradasinferiores). Assetassuperioresmostramaconvergência dabuscaduranteaexecução. Fonte: [66] . . . . . . . . . . . . . . . . . . . . . 32 3.6 trechodaseçãodedadosdotorrent,comasdivisõesdaspartesedosblocos . . 55 3.7 parâmetrosdamensagemrequest eseussignificados . . . . . . . . . . . . . . 56 4.1 formatosdosdatagramasdosprotocolosIPv4eIPv6. Ambospossuemlargura de32bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.2 esquemadeusodoNAT444. Fonte:[47] . . . . . . . . . . . . . . . . . . . . . 103 4.3 estruturasdeprocessosUNIX,semecomthreads. Fonte:[41] . . . . . . . . . . 108 4.4 estruturasdepastasdoTransmission . . . . . . . . . . . . . . . . . . . . . . . 111 5.1 disciplinas do BCC utilizadas diretamente na programação do Transmission, ligadaspelos seuspré-requisitos. Asbordas arredondadasindicam queoconhe- cimentoauxilia,masnãoénecessário. . . . . . . . . . . . . . . . . . . . . . . 113 III Sobre este trabalho Algumas observações devem ser feitas sobre este trabalho, para conhecimento antes da leitura. Cores no texto Emalgunsmomentospercebeu-sequepoderiahaverconfusãosemântica. Natentativadese resolverisso,umpadrãodeescritafoiadotadoparaotrabalhoe,utilizandocores,dividiu-seem duasfunçõessemânticas; • texto: foiusadoquandoosignificadodotrechodestacadoeradeconteúdonãoproces- sadopeloprograma,ouseja,comofoirecebido;e • texto: usadoquandootextodestacadojáfoiprocessado,jásendonaformadesequência decaracteres(string). Essadiferençaénotadanaseçãoquetratadedicionáriosbencode(capítulo3,página14), quando são mostrados conteúdos que representam um dicionário em duas formas diferentes: enquanto d3:foo3:bar6:foobar6:bazbare éoqueserecebeemumamensagem,possuire- presentaçãodiferentenocomputadorapósserprocessado,queé{"foo": "bar", "foobar": "bazbar"}. Termos em inglês FoipreferidoousodostermostécnicosdeBitTorrenteminglêsàssuastraduções,paraque o usuário se habitue com os originais, que são bastante utilizados na área. Por isso, estes não aparecememitálico. Paraosoutrostermos,sãoescritosemitálico. 1 Trechos de código e comentários Comooobjetivodestetrabalhoé apresentarcódigodalinguagemC usadonoTransmission, emalgunsmomentos,ocódigooriginalqueseriamostradonãoeramuitolegível. Porcausadisso, elesforammodificadosapenasparamelhorarsuailustração,nãoperdendofuncionalidade. Essas alterações envolveram omissões de trechos de código irrelevantes (por exemplo, verificação de erros)etrocasdevalores,pré-definidoscomoconstantes,paraseusvaloresabsolutos. Além disso, alguns comentários originais foram mantidos para garantir a essência do código apresentado. Todosessesoriginaisestãocomentadosentre/* ... */. Porém,existemmomentosemquealeituradocódigodoTransmissionnãoésuficiente,e, nessescasos,foramfeitoscomentáriosextrasusando// .... 1 /* Comentarios originais do codigo do Transmission. */ 2 3 // comentario de codigo 4 // Comentarios extras adicionados posteriormente. 2 Capítulo 1 Introdução Desde o início da história da computação, o compartilhamento de dados é uma ação na- turalmente necessária, e que passou a ser mais comum com a criação dos dispositivos de armazenamentode dadossob aforma dearquivos, coma Internetanos depoise, maisrecente- mente,comacomputaçãoemnuvem. Apartirde1999,comosurgimentodoNapster,asredespeer-to-peer(P2P)passaramaser maispopulares,sendofrequentementeutilizadasparatransferirdados. Essasredestêmcomo característicaprincipalcomputadorestransferindodadosentresi,ouseja,nãoexistindofunções fixasdefonteedeconsumodedados,massimdeambasessasfunções. AcomunicaçãoP2Pveiosedesenvolvendoaolongodosanos. Em2003,essedesenvolvi- mento teve um grande impulso, quando Bram Cohen propôso protocolo BitTorrent, lançando-o juntamente com um programa cliente, e incentivando o seu uso por “testadores” mediante o compartilhamento dematerial pornográfico. Com isso, pôdemelhorar o seufuncionamento, se tornandopopularrapidamenteatravésdeseususuários. Desdeentão,muitosprogramasdecompartilhamentoBitTorrentpassaramaserdesenvolvi- dos,eo protocolo começouaserestudadopelaáreaacadêmica,passando pormelhorias. Em 2013,o protocolo foioresponsávelporaproximadamente10%do tráfego totaldeInternetnos EstadosUnidos[54],setornandoumadasformasmaiseficienteseutilizadasdesecompartilhar arquivosviaInternetatualmente. OBitTorrentcontémconceitosdediversostópicosemCiênciadaComputação,taiscomo teoria dos jogos, estruturas de dados, tabelas de dispersão, etc, contando ainda com diversos estudosacadêmicossobretopologiasderedeformadaseotimizaçõesderedesealgoritmos,por exemplo. Nestetrabalho,estudamosoprotocoloBitTorrent,analisandoemprofundidadeasuaapli- 3 cação pelo programa cliente Transmission [95], particularmente interessados nos elementos de Ciência de Computação presentes no código. Este texto contém uma descrição desses vá- rios elementos encontrados, junto com trechos de código que consideramos ilustrativos para exemplificá-los. Nofinal,relacionamososconceitosdeCiênciadaComputaçãoencontradosnoTransmission, eondeelesaparecem,etambémsetaisconceitosaparecemnagradecurriculardoBacharelado emCiênciadaComputação. 4 Capítulo 2 Napster, Gnutella, eDonkey e BitTorrent ParaentendermoscomoeporqueoBitTorrentsetornouoqueéhoje,devemosvoltarum pouconotempoereverahistóriaqueprecedeuàsuacriação,nofimdadécadadosanos1990. 2.1 Período pré-torrent Entre o final dos anos 80 e o início dos 90 [109, 126], a Internet deixou de ser uma rede decomputadores usada somentepor entidades governamentais, laboratórios depesquisa e universidades, passando a ter seu acesso comercializado para o público em geral pelos fornecedores deacesso à Internet (ISPs) [114]. Com oadvento do formato de áudio MP3(MP3) [119], no final de 1991, e do seu primeiro reprodutor de áudio MP3 Winamp, o tráfego da Internetcresceudevidoaoaumentodatrocadiretadessetipodearquivo. Entre 1998 e 1999, dois sites de compartilhamento gratuito de músicas foram criados: o MP3.com[118],queeraumsitededivulgaçãodebandasindependentes,eoAudiogalaxy.com [97,104].Maispopularqueoprimeiro,oAudiogalaxyeraumsitedebuscademúsicas,sendo que o download e upload eram feitos a partir de um software cliente. A lista de músicas procuradas era enviada pelosite parao computadoronde o usuário tinha instaladoo cliente,que então conectava com o computador de outro usuário, que era indicado pelo servidor. A lista possuíatodososarquivosqueumdiapassarampelasuarede. Sealgumarquivofosserequisitado, masousuárioqueopossuíssenãoestivesseconectado,oservidorcentraldoAudiogalaxyfazia aponte,pegandooarquivoparasieenviando-oparaoclientedorequisitanteemseupróximo login. Os três anos seguintes à criação desses dois sites foram muito produtivos ao mundo das redespeer-to-peerdemodogeral,ondesurgiramalgunsprotocolosdesseparadigmaeinúmeros 5 softwaresqueosimplementavam. OsmaisrelevantesforamoNapster,oGnutella,oeDonkeye oBitTorrent. Napster Emmaiode1999,surgiuoNapster[120],umprogramadecompartilhamentodeMP3que inovou pordesfigurarousual modelocliente-servidor,no qualumservidor central localizavaos arquivosnosusuáriosefaziaaconexãoentreestes,ondeocorriamastransferências. ONapster foicontemporâneoaoAudiogalaxy,eambosfizerammuitosucessoporcercadedoisanos,até quecomeçaramasaçõesjudiciaiscontraambososprogramas. Não demorou muito tempo para a indústria da música entrar em ação contra a troca de arquivosprotegidos por direitos autorais, sem autorização dos detentores detais direitos, pela Internet. Seu primeiro alvo foi o Napster, em dezembro de 1999, quando a RIAA (do inglês RecordingIndustryAssociationofAmerica)entroucomprocessojudicialrepresentandovárias gravadoras, alegando quebra de direitos autorais [60]. Em abril de 2000, foi a vez da banda Metallica também processá-lo, como retaliação à descoberta de que uma música ainda não lançadaoficialmente jácirculavana rede[51, 59].Ummês depois, outraaçãojudicial, agora encabeçada pelo rapper Dr. Dre, que tinha feito um pedido formal para a retirada de seu materialdecirculação[31].IssofezcomqueoNapsterrecebesseatençãodamídia,ganhando popularidadeeatingindoos20milhõesdeusuáriosemmeadosdoano2000[72]. Em 2001, esses imbróglios judiciais resultaram numa liminar federal que ordenou que o Napster retirasse o conteúdo protegido pelas entidades representadas pela RIAA. O Napster tentoucumprir aordem judicial, masa juízado casonão ficousatisfeita, ordenandoentão, em julhodaquele ano,odesligamento daredeenquantoesta nãoconseguissecontrolar oconteúdo quetrafegavaali[120].Emsetembro,oNapsterfezumacordo[102],ondepagou26milhõesde dólares pelos danos já causados pelo uso indevido de músicas, e mais 10 milhões de dólares pelos danos futuros envolvendo royalties. Para pagar esse valor, o Napster tentou cobrar o serviçoqueprestavaaosseususuários,queacabarammigrandoderedeP2P,inclusiveparao Audiogalaxy. Nãoconseguindoquitaroacordo,em2002,oNapsterdecretafalênciaeéforçado aliquidarseusativos. Deláparacá,foinegociadoalgumasvezes,e,atualmente,pertenceao siteRhapsody[82]. Osucessodo Napster,mesmoque porcurtoperíododetempo, mostrouopotencialqueas redesP2Ppoderiamter,ecomisso,novossoftwareseprotocolosderedesforamsendolançados, sempretentandosediferenciardosseusantecessores,afimdenãoseremnovosalvosdeações judiciais. Asoluçãoparaissofoitentardescentralizarosmecanismosdeindexaçãoedebusca, queforamospontosfracosdoNapster. 6
Description: