Направо към съдържанието

BitTorrent

от Уикипедия, свободната енциклопедия

BitTorrent е комуникационен протокол за обмен на файлове в интернет, базиран P2P система. Това е един от най-широко разпространените протоколи за обмен на големи файлове, като например цифрово видео (телевизионни предавания или видео клипове) или цифров звук (песни). За P2P мрежите е оценено, че общо представляват между 43% и 70% от целия интернет трафик към 2009 г.[1] Към ноември 2004 г. BitTorrent е отговорен за около 25% от целия интернет трафик.[2] Към февруари 2013 г. BitTorrent представлява 3,35% от цялата честотна лента на света, над половината от общо 6% приспадащи към файлообмена.[3]

За да се изпращат или получават файлове обикновено се използва BitTorrent клиент на компютър, свързан към интернет, но обменът е възможен и без клиент. BitTorrent клиентът представлява компютърна програма, която изпълнява BitTorrent протокола. Сред най-известните такива клиенти са: μTorrent, qBittorrent, Vuze, Deluge, BitComet и други. BitTorrent тракерите предоставят списъци с файлове, които са налични за трансфер, и позволяват на клиента да намери сийдъри, които могат да изпращат файлове.

Програмистът Брам Коен проектира протокола през април 2001 г. и издава първата му версия на 2 юли 2001 г.,[4] както и най-новата му версия през 2013 г.[5] BitTorrent клиентите са налични на различни компютърни платформи и операционни системи.

Към 2013 г. BitTorrent има между 15 и 27 милиона потребители едновременно по всяко време.[6] Към 2012 г. BitTorrent се използва от 150 милиона активни потребители. Основавайки се на тази фигура, общият брой ежемесечни BitTorrent потребители вероятно надминава четвърт милиард.[7]

Анимация на употребата на протокола: цветните точки под всеки компютър представляват различни части на споделяния файл.
  • Пиър (на английски: peer) – клиент, който участва във файлообмена.
  • Сийдър (на английски: seeder) – пиър, имащ всички сегменти на разпространявания файл, тоест той или е първоначалният му разпространиел, или вече е свалил цялото съдържание и го оставил да се споделя.
  • Лийчър (на английски: leech) – пиър, който все още няма всички сегменти, тоест е в процес на изтегляне. Понякога този термин има и негативен смисъл, когато се отнася за потребител, който тегли много повече, отколкото качва.
  • Рояк (на английски: swarm) – съвкупността от всички пиъри.
  • Анонс (на английски: announce) – обръщение на клиента към тракера чрез HTTP GET заявка При всеки анонс клиентът предава на тракера информация относно обема на сваленото и каченото, а тракерът предава на клиента списък с други клиенти. Тази връзка се осъществява на определени времеви интервали.
  • Уеб сийдHTTP или FTP-сървър, използван като източник на данни наред с обикновените сийдове.
  • Достъпност (на английски: availability) – брой на целите копия на файла, достъпни за клиента. Всеки сийдър добавя 1,0 към този брой, а лийчърите го увеличават в зависимост от количеството свалено съдържание, което не присъства у дригите лийчъри.
  • Сегмент (на английски: part) – всички файлове в обмена се делят на малки парчета – сегменти, които след това се предават по мрежата в произволен ред за оптимизация на обмена.
  • Рейтинг (на английски: share ratio) – съотношението на каченото към сваленото съдържание.
  • Хеш (на английски: hash) – SHA-1 функция върху отделните сегменти. Всяка получена част се проверява за съвпадение на хеша. Ако проверката се провали, данните се изтрива и се поискват още веднъж.
  • Паский (на английски: passkey) – автентикатор на потребителя на неанонимен тракер. Съдържа се в изтегления торент файл.
Компютърът в средата е сийдър и предоставя файл към други компютри – пиъри.

BiTorrent протоколът може да бъде използван за намаляване на влиянието на сървъра и мрежата при разпространение на големи файлове. Вместо файлът да се тегли от един сървър, BitTorrent протоколът позволява на потребители да се присъединят към рояк от хостове, които качват/свалят помежду си едновременно. Протоколът представлява алтернатива на старите източници с миръри за разпространение на данни и могат да работят ефективно и в мрежи с ниска скорост и малка честотна лента. Използвайки BitTorrent, няколко обикновени компютри могат да заместят големи сървъри, докато ефективно разпространяват файлове към много участници. Това спомага и за намаляването на скокове в интернет трафика в даден район, като се поддържа висока интернет скорост за всички потребители като цяло, независимо дали ползват или не BitTorrent. Потребител, който иска да качи файл, създава малък описателен файл, наречен торент, който разпространяват по конвенционален начин (уеб, имейл и т.н.). Тогава правят файла наличен чрез BitTorrent възел, работейки като сийдър. Тези, които се сдобият с торент файла, стават пиъри или лийчъри, когато свалят съдържание.

Разпространяваният файл се разделя на парчета (сегменти). Когато даден пиър получи ново парче от файла, той става източник (на това парче) за останалите пиъри, облекчавайки първоначалния сийдър от това да трябва да изпраща въпросното парче към всеки компютър. Всяко парче е защитено от криптографска хеш функция, която се съдържа в торент файла.[5] Така се изключва възможността за модификация на парчето, била тя инцидентна или умишлена.

Парчетата обикновено се теглят непоследователно и се подреждат в правилния ред от BitTorrent клиента, който наглежда кои парчета са му нужни и кои парчета има и може да качва към другите пиъри. Парчетата са с еднакъв размер за цялото теглене (например файл с размер 10 MB може да бъде предаван на десет парчета от по 1 MB или четиридесет парчета от по 256 kB). Поради естеството на този подход, изтеглянето на файла може да бъде спряно по всяко време и да бъде продължено по-късно, без да има риск от загуба на предишната изтеглена информация, което на свой ред прави BitTorrent особено полезен при обмена на големи файлове. Това, също така, позволява на клиента да търси налични части и да ги тегли веднага, а не да спира тегленето, докато чака за следващото налично парче, което обикновено намалява времето на изтегляне. Когато даден пиър изтегли целия файл, той става допълнителен сийдър.

Дистрибутивната природа на BitTorrent може да доведе до лавинообразно разпространение на файл чрез множество компютърни възли. С повече пиъри в рояка, вероятността за напълно успешно изтегляне от всеки възел нараства. Това позволява значително намаляване на разходите по хардуер и честотна лента на първоначалния разпространител. Протоколите за сегментирано теглене по принцип предоставят излишък против системни проблеми, намаляват зависимостта от първоначалния разпространител[8] и предоставят източници за файла, които по принцип са преходни и следователно по-трудни за проследяване от тези, които биха желали да блокират разпространението.

BitTorrent клиент е всяка програма, която изпълнява BitTorrent протокола. Всеки клиент е способен да подготвя, иска и изпраща всякакъв тип компютърен файл по мрежата, използвайки протокола. Пиър е всеки компютър, изпълняващ инстанция на клиента. За да сподели файл или група от файлове, пиърът първо създава малък файл, наречен торент (с разширение .torrent). Този файл съдържа метаданни за споделяните файлове и за тракера (компютърът, който координира разпространението на файла). Пиърите, които искат да изтеглят файла първо трябва да получат торент файла и да се свържат към определения тракер, който им казва от кои други пиъри да изтеглят парчетата от файла.

Въпреки че и двете обменят файлове по мрежа, BitTorrent даунлоуда (теглене) се различава от класическия даунлоуд по няколко основни черти:

  • BitTorrent прави множество малки заявки за данни чрез различни IP връзки към различни машини, докато класическото теглене обикновено се прави чрез една TCP връзка към една-единствена машина.
  • BitTorrent тегли по случаен или „най-редкият първи“[9] подход, който осигурява висока наличност, докато класическите тегления са последователни.

Взети заедно, тези разлики позволяват на BitTorrent да постигне много по-ниски разходи за доставчика на данни и голяма устойчивост към злоупотреби в сравнение с обикновения сървърен софтуер. Все пак, тази защита, теоретично, идва с някои недостатъци: може да мине време преди тегленията да достигнат пълна скорост, защото може да отнеме време да се установят достатъчни връзки с пиъри. Това контрастира с обикновените тегления (като например от HTTP сървър), които макар и по-уязвими към злоупотреби и пренатоварване, развиват пълна скорост много бързо и поддържат тази скорост през цялото време. По принцип непоследователните методи на теглене на BitTorrent са го възпрели от поддръжка на „поточно възпроизвеждане“ или „стрийминг“ (streaming playback). Въпреки това, през януари 2011 г. Брам Коен демонстрира ранна версия на BitTorrent стрийминг, заявявайки, че тази функционалност се планира да е налична към лятото на същата година.[10] Към 2013 г. BitTorrent стрийминг протоколът е наличен за бета тестване.[11]

Създаване и публикуване на торенти

[редактиране | редактиране на кода]

Пиърът, разпространяващ файла, го обработва като брой парчета с еднакъв размер, обикновено между 32 kB и 16 MB. Пиърът създава хеш за всяко парче, използвайки SHA-1 функция, и го записва в торент файла. Когато друг пиър получи дадено парче, хешът му се сравнява със записания хеш, за да се тества парчето за грешко.[5] Пиърите, които предоставят цели файлове, се наричат сийдъри. Точната информация, съхранявана в торент файла зависи от версията на BitTorrent протокола. Торент файлове имат част за анонс, която уточнява URL на тракера и част за информация, съдържаща имената на файловете, големината им, големината на парчетата им и хешовете за всяко парче, всички от които се използват от клиентите за проверка на целостта на данните, които получават. Въпреки че SHA-1 има известни криптографски слабости, Брам Коен първоначално не счита риска за толкова голям, че да въведе промяна, която би довела до обратна несъвместимост на протокола. BitTorrent се готви за преминаване към SHA-256.[12]

Торент файловете обикновено се публикуват на сайтове и се регистрират поне на един тракер. Тракерът поддържа списък с клиенти, които участват във файлообмена.[5] Алтернативно, в система без тракер (децентрализиран тракер) всеки пиър действа като отделен тракер. Azureus е първият BitTorrent клиент, който въвежда такава система чрез разпределена хештаблица (DHT).[13] Алтернативна DHT система, наречена Mainline DHT, е включена и в едноименния BitTorrent клиент три седмици по-късно (макар да се разработва още от 2002 г.) и впоследствие бива приета от клиентите µTorrent, Transmission, BitComet и Deluge.

След създаването на DHT, е въведен е „личен флаг“ (private flag), който казва на клиентите да ограничат използването на децентрализирани тракери, независимо от предпочитанията на потребителя. Флагът нарочно се поставя в информационната част на торент файла, така че да не може да бъде изключен или премахнат, без да се промени идентичността на торента. Целта на флага е да се попречи торентите да бъдат споделяни с клиенти, които нямат достъп до тракера.[14]

Сваляне на торенти и споделяне на файлове

[редактиране | редактиране на кода]

Потребителите намират торент като сърфират в мрежата или по други начин, изтеглят го и го отварят в BitTorrent клиента си. Клиентът се свързва с тракера, посочен в торент файла и получава от него списък с пиъри, които обменят парчета от файла, посочен в торента. Клиентът се свързва към въпросните пиъри, за да се сдобие с парчетата. Ако роякът съдържа само един първоначален сийдър, клиентът се свързва директно към него и започва да иска парчета. Клиентите включват механизми за оптимизиране на скоростта на сваляне и качване. Например, те теглят парчета в произволен ред, за да се увеличи възможността за взаимен обмен на данни, което е възможно само тогава, когато двата пиъра имат различни парчета от файла.

Ефективността на този взаимообмен на данни зависи много от политиките, които клиентите използват за да определят на кого да изпращат данни. Клиентите могат да предпочетат да изпращат данни на пиъри, които им връщат данни обратно, което поощрява честния обмен. Обаче, строгите политики често водят до не толкова оптимални ситуации, като например когато новосвързал се пиър не може да получава никакви данни, защото все още няма парчета за обмен или когато два пиъра с добра свързаност не обменят данни, защото никой от тях не поема инициативата. За справяне с този проблем официалният BitTorrent клиент използва механизъм, при който клиентът резервира част от наличната си честотна лента за изпращане на парчето към случайни пиъри с надеждата да открие дори по-добри партньори и за да осигури шанс на новодошлите да се присъединят към рояка.[15]

Въпреки че системата на рояка се мащабира добре при голям наплив на пиъри за популярно съдържание, тя е по-малко полезна при по-непопулярно съдържание. Пиърите, пристигнали след първия наплив, могат да се окажат без налично съдържание или да трябва да чакат пристигането на сийдър, за да завършат свалянето си. Пристигането на сийдър, обаче, може да отнеме много време. Тъй като поддържането на сийдъри за непопулярно съдържание води до административни разходи, това контрира целта на разпространителите, които ценят BitTorrent като евтина алтернатива на подхода клиент-сървър. Това се случва в голям мащаб – изследвания сочат, че около 38% от всички нови торенти стават недостъпни след първия месец.[16] Стратегия, приета от много разпространители, която значително увеличава наличността на непопулярно съдържание, представлява събирането на много файлове в един рояк.[17] Предлагани са и по-сложни решения, включващи коопериране между множество торенти за по-добро споделяне на съдържание.[18]

BitTorrent сам по себе си не предлага на потребителите анонимност или сигурност. Възможно е да се получат IP адресите на всички текущи и минали участници в даден рояк от тракера. Това може да изложи потребителите на атаки.[15] В редки случаи това може да изложи потребителите и на риска да бъдат съдени, в случай, че са разпространявали файлове без разрешение от собственика на авторските им права. Умерена степен на анонимност, достатъчна да предотврати проблеми от страна на интернет доставчиците, може да бъде постигната с т.нар. сийдбокс, които теглят торент файловете първо на сървърите на компании, след което осъществяват директен обмен с потребителя.[19][20] Скритите тракери (private tracker) предоставят по-голяма степен на анонимност в сравнение с публичните тракери.

Макар протоколът да е напълно законен, възникват проблеми от използването на протокола за разпространението на материали в нарушение на авторски права. Съществуват много противоречия относно използването на торент тракери. Самите торент файлове не съхраняват файлово съдържание. Дали разпространителите на торент файлове нарушават авторски права чрез предоставянето на връзка към защитени с авторски права произведения без одобрението на праводържателя е предмет на противоречия. Различни държави предприемат правни мерки срещу сайтове, които предоставят торент тракери. Сред най-известните примери за това са Suprnova, TorrentSpy, LokiTorrent, BTJunkie, Mininova и Demonoid. Сайтът The Pirate Bay е известен с „легалната“ си част, в която се показват публично писма и отговорите им относно предполагаеми нарушения на авторско право. На 31 май 2006 г. сървърите на сайта в Швеция са иззети от шведската полиция, поради обвинения за нарушения на авторски права.[21] Въпреки това, сайтът тракерът е възстановен три дни по-късно. В САЩ над 200 000 души са били осъдени за файлообмен чрез BitTorrent от 2010 г. насам.[22] На 30 април 2012 г. Висшият съд на Великобритания нарежда на пет интернет доставчика да блокират The Pirate Bay.[23]

  1. Schulze, Hendrik, Mochalski, Klaus. Internet Study 2008/2009. Leipzig, Germany, ipoque, 2009. Посетен на 3 октомври 2011. Peer-to-peer file sharing (P2P) still generates by far the most traffic in all monitored regions – ranging from 43% in Northern Africa to 70% Eastern Europe.
  2. BitTorrent: The „one third of all Internet traffic“ Myth // TorrentFreak, 24 януари 2007. Архивиран от оригинала на 2014-03-26. Посетен на 7 април 2013.
  3. Application Usage & Threat Report // Palo Alto Networks. 2013. Архивиран от оригинала на 2013-10-31. Посетен на 7 април 2013.
  4. Cohen, Bram. BitTorrent – a new P2P app // Yahoo eGroups, 2 юли 2001. Архивиран от оригинала на 2013-09-05. Посетен на 15 април 2007.
  5. а б в г Cohen, Bram. BitTorrent Protocol 1.0 // BitTorrent.org, октомври 2002. Архивиран от оригинала на 2014-02-08. Посетен на 19 април 2013.
  6. Measuring large-scale distributed systems: Case of Bit Torrent Mainline DHT // IEEE P2P 2013 Proceedings. 1 септември 2013. ISBN 978-1-4799-0515-7. DOI:10.1109/P2P.2013.6688697. с. 1 – 10. Посетен на 7 януари 2016.
  7. BitTorrent and µTorrent Software Surpass 150 Million User Milestone // Bittorrent.com, 9 януари 2012. Архивиран от оригинала на 2014-03-26. Посетен на 9 юли 2012.
  8. Estimating Self-Sustainability in Peer-to-Peer Swarming Systems // 2010.
  9. Urvoy-Keller. Rarest First and Choke Algorithms Are Enough (PDF) // SIGCOMM, декември 2006. Посетен на 9 март 2012.
  10. Cohen, Bram. BitTorrent Inventor Demos New P2P Live Streaming Protocol // torrentfreak.com, януари 2011. Посетен на 19 януари 2011.
  11. BitTorrent Live // Bittorrent.com. Архивиран от оригинала на 2013-10-25. Посетен на 4 март 2013.
  12. Does bittorrent support SHA-2 256/512 or future SHA-3? – Quora
  13. Jones, Ben. BitTorrent's DHT Turns 10 Years Old // TorrentFreak, 7 юни 2015. Посетен на 5 юли 2015.
  14. Harrison, David. Private Torrents // Bittorrent.org, 3 август 2008. Посетен на 4 октомври 2009.
  15. а б Tamilmani, Karthik. Studying and enhancing the BitTorrent protocol (DOC) // Stony Brook University, 25 октомври 2003. Архивиран от оригинала на 2004-11-19. Посетен на 6 май 2006.
  16. Kaune, Sebastian. Unraveling BitTorrent's File Unavailability: Measurements and Analysis // arXiv. Посетен на 20 юли 2017.
  17. D. Menasche. Content Availability and Bundling in Swarming Systems. Рим, ACM via sigcomm.org, декември 2009. ISBN 978-1-60558-636-6.
  18. Kaune, Sebastian. The Seeder Promotion Problem: Measurements, Analysis and Solution Space (PDF) // Queen Mary's University London. Посетен на 20 юли 2017.
  19. This Website Could Be The Ultimate All-In-One Torrent Machine // 8 април 2016. Архивиран от оригинала на 2016-04-08. Посетен на 2018-06-03.
  20. Torrent From the Cloud With Seedr – TorrentFreak // 17 януари 2016.
  21. The Piratebay is Down: Raided by the Swedish Police // TorrentFreak, 31 май 2006. Посетен на 20 май 2007.
  22. BitTorrent: Copyright lawyers' favourite target reaches 200 000 lawsuits // The Guardian, 9 август 2011. Архивиран от оригинала на 2013-12-04. Посетен на 10 януари 2014.
  23. Albanesius, Chloe. U.K. High Court Orders ISPs to Block The Pirate Bay // PC Magazine, 30 април 2012. Посетен на 6 май 2012.