ebook img

Anatomia do BitTorrent PDF

142 Pages·2014·1.55 MB·Portuguese
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Anatomia do BitTorrent

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:
existente na teoria dos jogos — área da matemática que estuda modelos matemáticos de conflito e cooperação entre agentes Funções de hash são funções matemáticas usadas para gerar conteúdo de comprimento fixo que referencia o conteúdo original. add some bullshit padding */. 13.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.