|
|
BitTorrent - ett bland de mest populära fildelningssystemen.
BitTorrent är ett P2P-protokoll först implementerat i Python. Det är uppbyggt på det viset att alla som laddar ner filen även skickar vidare de delar hon har till andra som också laddar ner. Genom felkontroller och att man laddar ner den ovanligaste delen först fungerar detta på ett utmärkt vis. Då nerladdningen sker från många källor finns ingen flaskhals. Detta gör att nerladdning oftast går väldigt fort. BitTorrent är ett populärt sätt att sprida större filer till många personer utan att belasta servern för mycket, och bland annat används det av Slashdot. Det finns en rad klienter.
Ur användarens synpunkt fungerar det så att hon letar upp en webbsida att hämta en s.k. torrent från. Det är det externa Bittorrent-programmet som sköter själva nerladdningen av filens delar, och sätter ihop delarna till en komplett fil. Bittorrent-programmet kommunicerar med en s.k. tracker (adressen till den står skrivet i torrent-filen), för att få reda på vilka källor som fortfarande går att ladda ner från, m.m. Samtidigt som användaren laddar ner laddar han också upp till andra användare, och det är den som är huvudtanken med Bittorrent.
Peer-to-peer, eller P2P, är engelska och betecknar kommunikation mellan jämställda parter, t.ex. direkt mellan två användare, utan att passera en server eller kommunikationscentral. Två plåtburkar på ett snöre eller en walkie-talkie är exempel på P2P, medan mobiltelefoni och e-post är exempel på motsatsen. De flesta fildelningsprogram bygger på peer-to-peer-teknik medan du i detta fall har hämtat denna text från en server och inte en jämställd part.
Användningen av P2P får till följd att informationen inte kopieras till någon mellanliggande central, vilket bland annat det numera utdöda fildelningsprogrammet Napster använde sig av. -Inte helt sant, Napster stängdes genom att centraldatorn (servern) stängdes. Ett helt rent P2P-system går inte att stänga centralt. Ett exempel är gnutella som bygger på flera dynamiska servar. Jag lämnar denna kommentar synlig eftersom att många tror napster var P2P //Certa P2P kan ses som en motsats eller komplement till klient-server-teknik.
Djupgående information
Överföring
Om klienten har satts igång med att försöka få hem de filer som specificers i en .torrent-fil så kommer klienten att först ansluta till den tracker som beskrivs i .torrent, och skapa de filer som specificeras i filen (dessa filer kan antigen ha storlek 0 för att sedan fyllas på allt eftersom, eller i andra implementationer få den exakta storlek de kommer få senare, fast då fylld med ointressant info som kommer bytas ut). Vi får sedan en lista på andra klienter som också försöker tanka hem filen och vad de har för bitar. Information utbyts sedan om vilka delar av filen vi vill ha (i tidigare implementationer är det helt slumpmässigt, medan det i vissa är så att den mest ospridda biten som efterfrågas först). Vi frågar alltså alla andra klienter om dessa bitar (begärande många olika bitar samtidigt för att få ut en bra effektivitet, sk pipelining).
För att kunna införa en viss ge-och-ta system så finns det i protokollet en sk choke-idé beskriven, dvs att en klient är för upptaget med andra saker och kan inte skicka. Detta kan då användas för att begränsa skickandet, då TCP har problem om mycket ska skickas i många olika anslutningar samtidigt, och för att vi (som vi nämnde) ska kunna implementera ett visst ge-och-ta beteende då vi vägrar skicka tills den andra klienten har skickat till oss. När vi sedan får hem en bit meddelar vi det till resten av folket så kan de uppdatera sin info.
Detta hanteringen av bitar av filen som beskrivs ovan är en viktig del varför systemet fungerar bra. Istället för att sekventiellt tanka hem en fil (som att tanka hem från tex en webserver, vi tankar från starten av filen till slutet) så tankar vi hem olika delar av filen. Detta gör att om filen bara består av 9 bitar så kanske person A har bit 1;4;5, person B har 2;3;6 och person C har 7;8;9. Ingen av personerna i sig har hela filen, men tillsammans kan de lyckas få fram hela filen. Detta betyder att när vi initiellt försöker föra ut filen (dvs vi är de första som har filen, vi har den ENDA kompletta kopian) så kan vi skicka iväg olika bitar till olika personer och de tvingas sedan arbeta tillsammans för att få ihop hela filen, vilket gör att de utnyttjar varandras hastighet istället för den ursprungligade uppladdaren.
Vad man vill göra är därför att minimera hur mycket data man tvingas skicka innan resten av klienterna själva kan hantera situationen och bygga ihop den kompletta filen. I tidigare implementationer skickade klienten egentligen upp data efter hur de andra klienterna efterfrågade den, vilket kunde resultera i att man kunde vara tvungen att skicka upp 150-200% av filens storlek innan den fanns spridd (skickade upp samma bit flera ggr). I nyare klienter (tex Shad0ws, Azereus) så finns det något som kallas Super-Seed mode som helt enkelt bygger på att vi gömmer bitarna från resten av klienten. Sen tar vi och avslöjar för dom att "aha vi hade bit X" som vi då vet att vi aldrig skickar förut, och sen nästa gång hittar vi en annan intressant bit som aldrig skickats förut osv. Detta betyder att vi minimerar dupliceringen av utskickad information och vi kan lyckas få ut hela filen efter 105-110% uppskickad data (inte helt perfekt system + att andra klienter kanske går offline med de unika bitarna de hade).
Terminologin:
Leecher – det är den personen som inte har hela filen. Observera att leechern ändå ingår i processen och laddar upp samtidigt, trots inte tillgång till hela filen. Du ska veta att i de flesta fall ökar chanserna att få ner filen fortare om du ser till att ladda upp ordentligt när du är leecher – så undvik strypa uppladdningen i mesta möjliga mån.
Seeder – de som nu har hela filen, 100%, och bara fungerar för att ladda upp till andra som inte har fått ner hela ännu.
Peers – alla användare som är inkopplade på samma torrentfil. Ju fler peers desto bättre hastigheter, förutsatt att det är många som seedar. Om det är tusentals peers och bara en seeder, så får du nog lov att ha lite tålamod till att börja med.
Tracker – själva navet när man startar upp torrentfilen. Kort sagt, den sätter dig i kontakt med de andra användare. Det är den som skickar ”meddelanden” till din klient, och upplyser om huruvida det går att få kontakt med trackern för ögonblicket, eller om den vill att du använder en annan klient. Det sistnämnda är tydligt, de andra error du får är nio fall av tio endast en överansträngd tracker, lämna torrentfilen öppen och ha lite tålamod.
Hashning
BitTorrent använder sig flitigt av så kallad hashning för att kunna garantera integriteten av filer. Personen som först skapar .torrent-filen hashar filen genom ett externt program och skapar därför ett, kan vi säga, unikt fingeravtryck för filen. Dessutom hashas alla bitar av filen (storlek kan väljas själv, 256 Kb är vanligt), vilket gör att vi förutom att garantera filens integritet kan garantera integriteten för alla 256 KB stora bitar av den. Vi kan därför, efter att ha fått hem en bit, undersöka ifall den stämmer överens med just den hash vi vet den biten ska få, gör den inte det kastar vi bort den och försöker igen
Fördelen med hasning och överföring i ett
Ett vanligt sätt att överföra stora filer är att använda sig av RAR som delar upp filen i massa små delar, så att man kan vara säker på att :
- filen är hel och oskadd
- man behöver inte ladda ner hela filen igen om någon del är skadad
Det är precis på samma sätt som Bittorrent fungerar. Hashningen ser till att filen är hel och oskadd, och du laddar bara hem den delen du behöver. Fördelen med BT är att du fortfarande har en oskadad fil som går att använda, även om du inte har hela filen nerladdad. Alltså en filmtrailer nerladdad med Bittorrent kan mycket väl vara möjlig att se om den är 90% färdig, medans om du tankar hem RAR arkiv så måste du ha hela filen.
Läs vidare på www.torrentguide.net för att lära dig mer om hur bitttorrent fungerar! |
|