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]
BiTorrent протоколът може да бъде използван за намаляване на влиянието на сървъра и мрежата при разпространение на големи файлове. Вместо файлът да се тегли от един сървър, BitTorrent протоколът позволява на потребители да се присъединят към рояк от хостове, които качват/свалят помежду си едновременно. Протоколът представлява алтернатива на старите източници с миръри за разпространение на данни и могат да работят ефективно и в мрежи с ниска скорост и малка честотна лента. Използвайки BitTorrent, няколко обикновени компютри могат да заместят големи сървъри, докато ефективно разпространяват файлове към много участници. Това спомага и за намаляването на скокове в интернет трафика в даден район, като се поддържа висока интернет скорост за всички потребители като цяло, независимо дали ползват или не BitTorrent. Потребител, който иска да качи файл, създава малък описателен файл, наречен торент, който разпространяват по конвенционален начин (уеб, имейл и т.н.). Тогава правят файла наличен чрез BitTorrent възел, работейки като сийдър. Тези, които се сдобият с торент файла, стават пиъри или лийчъри, когато свалят съдържание.
Разпространяваният файл се разделя на парчета (сегменти). Когато даден пиър получи ново парче от файла, той става източник (на това парче) за останалите пиъри, облекчавайки първоначалния сийдър от това да трябва да изпраща въпросното парче към всеки компютър. Всяко парче е защитено от криптографска хеш функция, която се съдържа в торент файла.[5] Така се изключва възможността за модификация на парчето, била тя инцидентна или умишлена.
Парчетата обикновено се теглят непоследователно и се подреждат в правилния ред от BitTorrent клиента, който наглежда кои парчета са му нужни и кои парчета има и може да качва към другите пиъри. Парчетата са с еднакъв размер за цялото теглене (например файл с размер 10 MB може да бъде предаван на десет парчета от по 1 MB или четиридесет парчета от по 256 kB). Поради естеството на този подход, изтеглянето на файла може да бъде спряно по всяко време и да бъде продължено по-късно, без да има риск от загуба на предишната изтеглена информация, което на свой ред прави BitTorrent особено полезен при обмена на големи файлове. Това, също така, позволява на клиента да търси налични части и да ги тегли веднага, а не да спира тегленето, докато чака за следващото налично парче, което обикновено намалява времето на изтегляне. Когато даден пиър изтегли целия файл, той става допълнителен сийдър.
Дистрибутивната природа на BitTorrent може да доведе до лавинообразно разпространение на файл чрез множество компютърни възли. С повече пиъри в рояка, вероятността за напълно успешно изтегляне от всеки възел нараства. Това позволява значително намаляване на разходите по хардуер и честотна лента на първоначалния разпространител. Протоколите за сегментирано теглене по принцип предоставят излишък против системни проблеми, намаляват зависимостта от първоначалния разпространител[8] и предоставят източници за файла, които по принцип са преходни и следователно по-трудни за проследяване от тези, които биха желали да блокират разпространението.
BitTorrent клиент е всяка програма, която изпълнява BitTorrent протокола. Всеки клиент е способен да подготвя, иска и изпраща всякакъв тип компютърен файл по мрежата, използвайки протокола. Пиър е всеки компютър, изпълняващ инстанция на клиента. За да сподели файл или група от файлове, пиърът първо създава малък файл, наречен торент (с разширение .torrent). Този файл съдържа метаданни за споделяните файлове и за тракера (компютърът, който координира разпространението на файла). Пиърите, които искат да изтеглят файла първо трябва да получат торент файла и да се свържат към определения тракер, който им казва от кои други пиъри да изтеглят парчетата от файла.
Въпреки че и двете обменят файлове по мрежа, BitTorrent даунлоуда (теглене) се различава от класическия даунлоуд по няколко основни черти:
Взети заедно, тези разлики позволяват на 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]