BitTorrent

З пляцоўкі Вікіпедыя.
Перайсці да: рух, знайсці

BitTórrent (літар. англ.: «бітавая плынь») — пірынгавы (P2P) сеткавы пратакол для кааператыўнага абмену файламі праз сеціва.

Файлы перадаюцца часткамі, кожны torrent-кліент, які атрымлівае (сцягвае) гэтыя часткі, адначасова аддае (зацягвае) іх іншым кліентам, што зніжае нагрузку і залежнасць ад кожнага кліента-крыніцы і забяспечвае надмер інфармацыі.

Пратакол быў створаны Брэмам Коэнам, які напісаў першы torrent-кліент «BitTorrent» на мове Python 4 красавіка 2001 года. Запуск першай версіі адбыўся 2 ліпеня 2001 года.

Існуе шмат іншых BitTorrent кліентаў для абмену файламі па пратаколе BitTorrent.

Файл метададзеных[правіць | правіць зыходнік]

Файл метададзеных з'яўляецца слоўнікам у фармаце bencode з пашырэннем .torrent. Змяшчае наступную інфармацыю:

  • URL трэкера;
  • агульную інфармацыю пра файлы (назва, памер і інш.) у гэтай раздачы;
  • кантрольныя сумы (SHA1) кавалкаў файлаў у раздачы;
  • Passkey карыстальніка, калі ён зарэгістраваны на гэтым трэкеры. Даўжыня ключа вызначаецца трэкерам;
  • (неабавязкова) кантрольныя сумы цэлых файлаў;
  • (неабавязкова) альтэрнатыўныя крыніцы, што працуюць не па пратаколе BitTorrent. Найбольшы распаўсюд маюць так званыя web-сіды (пратакол HTTP), але таксама могуць быць ftp, ed2k, magnet URI.

Прынцып працы пратаколу[правіць | правіць зыходнік]

Прынцып працы BitTorrent: нагрузка на распаўсюдніка файла памяншаецца дзякуючы таму, што кліенты пачынаюць абменьвацца інфармацыяй адразу ж, нават калі файл не дацягнуты імі да канца.

Перад пачаткам сцягвання кліент падключаецца да трэкера па адрасе, пазначаным ў торэнт-файле, паведамляе яму свой адрас і хэш-суму торэнт-файла, на што ў адказ кліент атрымлівае адрасы іншых кліентаў, што сцягваюць або раздаюць гэты ж файл. Далей кліент перыядычна інфармуе трэкер пра развіццё працэсу і атрымлівае абноўлены спіс адрасоў. Гэты працэс завецца абвяшчэннем (анг. announce).

Кліенты злучаюцца адзін з адным і абменьваюцца кавалкамі файлаў без непасрэднага ўдзелу трэкера, які толькі захоўвае інфармацыю, атрыманую ад далучаных да абмену кліентаў, спіс саміх кліентаў і іншую статыстычную інфармацыю. Для эфектыўнай працы сеткі BitTorrent неабходна, каб як мага больш кліентаў былі здольныя прымаць уваходныя злучэнні. Няправільна настаўлены NAT або брандмаўэр могуць гэтаму перашкодзіць.

Пры далучэнні кліенты адразу абменьваюцца інфармацыяй пра наяўныя ў іх кавалкі. Кліент, які хоча сцягнуць кавалак (ліч), дасылае запыт і, калі другі кліент гатовы аддаваць, атрымлівае гэты кавалак. Пасля гэтага кліент правярае кантрольную суму кавалка. Калі яна супала з той, што запісана ў торэнт-файле, то кавалак лічыцца паспяхова сцягнутым, і кліент паведамляе ўсім далучаным пірам пра наяўнасць ў яго гэтага кавалка. Калі ж кантрольныя сумы адрозніваюцца, то кавалак пачынае сцягвацца ізноў. Некаторыя кліенты блакіруюць піры, якія дужа часта аддаюць некарэктныя кавалкі.

Такім чынам, аб'ём службовай інфармацыі (памер торэнт-файла і памер паведамленняў са спісам кавалкаў) непасрэдна залежыць ад колькасці, а значыць, і памеру кавалкаў. Таму пры выбары кавалка неабходна вытрымліваць баланс: з аднаго боку, пры вялікім памеры кавалка аб'ём службовай інфармацыі будзе менш, але ў выпадку памылкі праверкі кантрольнай сумы кліент мусіць сцягваць нанава больш інфармацыі. З іншага боку, пры малым памеры памылкі не вельмі важныя, бо неабходна зноў сцягваць меншы аб'ём, але затое памер торэнт-файла і паведамленняў пра наяўныя кавалкі робіцца больш.

Раздача[правіць | правіць зыходнік]

Пасля атрымання поўнага файла кліент пераходзіць у іншы рэжым працы, у якім ён толькі аддае змесціва раздачы (робіцца сідам). Далей сід перыядычна інфармуе трэкер пра змены стану торэнтаў (сцягванняў) і абнаўляе спісы IP-адрасоў.

Агульныя асаблівасці[правіць | правіць зыходнік]

  • Адсутнасць чэргаў на сцягванне.
  • Файлы сцягваюцца невялікімі кавалкамі; чым меней даступны кавалак, тым часцей ён будзе перадавацца. Такім чынам, прысутнасць у сетцы сіда з поўным файлам для сцягвання неабавязкова — сістэма размяркуе кавалкі паміж пірамі, каб далей яны маглі абменьвацца адсутнымі кавалкамі.
  • Кліенты-піры абменьваюцца кавалкамі непасрэдна паміж сабой.
  • Сцягнутыя кавалкі адразу становяцца даступнымі іншым кліентам.
  • Кантралюецца цэльнасць кожнага кавалка.
  • На кавалкі разбіваюцца не асобныя файлы, а ўся раздача цалкам, таму ў ліча, які пажадаў сцягнуць толькі некаторыя файлы з раздачы, для падтрымкі суцэльнасці кавалкаў нярэдка будзе захоўвацца таксама невялікі аб'ём надмернай для яго інфармацыі.
  • У якасці аб'екту раздачы могуць быць некалькі файлаў (напрыклад, змесціва каталога).

Трэкер[правіць | правіць зыходнік]

Трэкер (англ.: tracker; /ˈtrækə(r)/) — спецыялізаваны сервер, які працуе па пратаколе HTTP. Трэкер патрэбны каб кліенты маглі знайсці адзін другога. Фактычна, на трэкеры захоўваецца IP-адрасы, уваходныя порты кліентаў і хэш-сумы, якія унікальным чынам ідэнтыфікуюць аб'екты, што ўдзельнічаюць у сцягваннях. Па стандарце, назва файлаў на трэкеры не захоўваюцца, і даведацца пра іх па хэш-сумах нельга. Аднак на практыцы трэкер часта апрача сваёй асноўнай функцыі выконвае і функцыю невялікага вэб-сервера. Такі сервер захоўвае файлы метазвестак і апісанні файлаў, падае статыстыку сцягванняў па розных файлах, паказвае бягучую колькасць падключаных піраў і інш.

Web-сіды[правіць | правіць зыходнік]

Адным з варыянтаў раздачы з'яўляецца гэтак званая web-раздача. Часам на серверы з розных прычын нельга запусціць паўнавартасны торэнт-кліент. У гэтым выпадку ў якасці крыніцы раздачы выступае сервер, які працуе па пратаколе HTTP. Звычайна, кліенты аддаюць перавагу іншым BitTorrent кліентам і звяртаюцца да web-сіда толькі пры неабходнасці.

Заганы і абмежаванні[правіць | правіць зыходнік]

  • Недаступнасць раздачы. Гэта становішча, калі няма ніводнага сіда, а прысутныя піры яшчэ не скончылі сцягванне.
  • Адсутнасць ананімнасці. Кожны кліент атрымлівае ад сервера IP-адрасы іншых кліентаў. Можна даведацца, хто раздае або сцягвае нейкі файл.
  • Адсутнасць персаналізацыі. Карыстальнікі не маюць мянушак, няма чату паміж пірамі.
  • Праблема лічаў. Некаторыя карыстальнікі не падтрымліваюць раздачу пасля завяршэння сцягвання, што вядзе да зніжэння агульнай прадукцыйнасці.
  • Адсутнасць дакладнага уліку трафіку. Архітэктура пратаколу не прадугледжвае дакладнага механізму ўліку і кантролю трафіку паміж пунктамі сеткі. Усё, што ёсць — палі downloaded і uploaded, у якіх кліенты перадаюць пры абвяшчэнні трэкеру колькасць байт, ўлічаных пры сцягванні/раздачы змесціва з моманту папярэдняга абвяшчэння. Аднак не кантралюючыся нікім, апроч як кліентам, яны могуць быць лёгка падменены. Для гэтага карыстальнікі статычна прапісваюць значэнні гэтых палёў у URI трэкера, карыстаюцца змененымі ці асобнымі праграмамі-кліентамі (RatioMaster, GiveMeTorrent, GreedyTorrent і г.д.), альбо папросту выдаляюць з кліента запіс аб трэкеры адразу ж пасля атрымання ад яго спісу пунктаў сеткі. Усё гэта дазваляе абыходзіць штучныя абмежаванні, якія ствараюцца адміністрацыяй шматлікіх прыватных і публічных трэкераў.

Тэрміналогія[правіць | правіць зыходнік]

Ліч са сваім гуртам.
  • Абвяшчэнне (англ.: announce) — звяртанне кліента да трэкера праз HTTP-GET-запыт. Пры кожным абвяшчэнні кліент перадае на трэкер інфармацыю пра аб'ёмы сцягнутага і аддадзенага ім трафіку, a трэкер перадае кліенту спіс адрасоў іншых кліентаў. Зварот кліента да трэкеру адбываецца праз пэўныя інтэрвалы часу, якія вызначаюцца настаўленнямі кліента і трэкера.
  • Вэб-сід — HTTP альбо FTP-сервер, які выкарыстоўваецца як крыніца змесціва раздач, нароўні са звычайнымі сідамі.
  • Грэблівы (англ.: snubbed) — кліент, які злучыўся з атрымальнікам, але не дасылае яму звесткі ўжо больш за 60 секунд.
  • Гурт (англ.: swarm) — усе піры, што бяруць удзел у раздачы, разам.
  • Даступнасць (англ.: availability) — колькасць поўных копій файла, даступных кліенту. Кожны сід дадае 1,00 да гэтага ліку; лічы павялічваюць даступнасць у залежнасці ад колькасці сцягнутага, якога няма ў іншых лічаў. Напрыклад, калі на раздачы ёсць адзін сід і два лічы, якія сцягнулі па 50 % файла (сцягнутыя часткі роўныя паміж сабой), то даступнасць складзе 1,50.
  • Заглухшы (англ.: choked — заглухшы, здушаны) — кліент, абмен звесткамі з якім заглух. Альбо ягоны канал на выхад цалкам забіты і ён не можа нічога перадаць (дасягнуў max_uploads), альбо ён сід і яму нічога не трэба атрымліваць.
  • Зацікаўлены (англ.: interested) — удзельнік, які жадае атрымаць кавалкі файла, наяўныя ў іншага ўдзельніка. Напрыклад, калі ў кліента А няма нейкіх частак, якія ёсць у кліента Б, лічыцца, што кліент А зацікаўлены ў абмене з кліентам Б.
  • Індэкс (англ.: index) — гэта спіс файлаў .torrent (ён звычайна ўключае апісанне і іншую інфармацыю), якім кіруе вэб-сайт (індэксатар), і які даступны для пошуку. Сайт, што індэксуе, часта памылкова завуць трэкерам.
  • Кавалак (англ.: piece) — усе файлы для перадачы дзеляцца на невялікія кавалкі, якія затым перадаюцца па сетцы ў адвольнай паслядоўнасці для аптымізацыі абмену.
  • Кліент (англ.: client) — праграма, якая дазваляе рабіць файлы агульнымі праз пратакол BitTorrent. Прыкладам: qBittorrent, Transmission, Vuze.
  • Ліч (англ.: leech — п'яўка) — пір, які не мае пакуль ўсіх кавалкаў, то бок які працягвае сцягванне. Тэрмін часта ўжываецца і ў негатыўным сэнсе, які ён мае ў іншых файлаабменных сетках: карыстальнік, які аддае значна менш, чым сцягвае.
  • Паскрэбціся (англ.: scrape — скрэбціся) — дзеянне, аналагічнае абвяшчэнню, але кліент запытвае толькі статыстыку торэнта, інфармацыю пра падлучаныя кліенты і магчымасць з імі звязацца для абмену.
  • Пір (англ.: peer — саўдзельнік) — кліент, які ўдзельнічае ў раздачы.
  • Раздача (англ.: seeding) — працэс распаўсюджвання файла па пратаколе BitTorrent.
  • Сід (англ.: seed — сеяць) — пір, што мае ўсе кавалкі файла з раздачы, то бок ён альбо пачатковы распаўсюднік файла, альбо ўжо сцягнуў увесь файл і застаўся на раздачы.
  • Стасунак (англ.: share ratio) — стасунак аддадзенага і сцягнутага.
  • Супер-раздача (англ.: super-seeding) — спецыяльны рэжым раздачы ў некаторых BitTorrent-кліентах. Спрабуе мінімізаваць колькасць звестак, якія аддасць сід перад з'яўленнем першага сцягнуўшага. Суперсід прапануе кожнаму піру сцягнуць толькі адзін кавалак файла, якога яшчэ няма ў іншых піраў. Затым сід не дае гэтаму піру наступных кавалкаў, пакуль не атрымае ад іншых піраў пацверджанне, што яны таксама атрымалі гэты кавалак. Такім чынам, суперсід імкнецца пазбегнуць паўторнага аддавання адных і тых жа кавалкаў і аддаваць кавалкі толькі тым пірам, якія актыўна перадаюць іх іншым.
  • Торэнт (англ.: torrent) — у залежнасці ад кантэксту можа азначаць як .torrent-файл з метазвесткамі, так і змесціва (файлы і каталогі), якое апісваецца ў .torrent-файле.
  • Трэкер (англ.: tracker) — сервер, які каардынуе працу кліентаў BitTorrent.
  • Хэш (англ.: hash) — SHA1 асобных кавалкаў арыгінальных файлаў, пералічаных ў слоўніку «info» .torrent-файла. Кожная частка пасля атрымання спачатку правяраецца на супадзенне хэшу. Калі праверка не выйшла, інфармацыя адкідаецца і запытваюцца ізноў. Таксама ў пратаколе выкарыстоўваецца хэш самога слоўніка «info» («інфахэш»), які выступае ў ролі ідэнтыфікатара канкрэтнай раздачы.
  • URL трэкера (англ.: tracker URL) — адрас трэкера, якому кліент робіць абвяшчэнне.
  • P2P, peer-to-peer — азначае «роўны-роўнаму». Гэта тэхналогія абмену файламі праз сеціва, пры якой кожны вузел (камп'ютар) дзейнічае і як кліент, і як сервер. Такім чынам атрымліваецца сетка без адзінага цэнтра (так званая дэцэнтралізаваня сетка).
  • Passkey — аўтэнтыфікатар карыстальніка на неананімных трэкерах. Змяшчаецца ў сцягнутым torrent-файле. Такім чынам, калі хтосьці атрымае доступ да torrent-файла, ён зможа працаваць з трэкерам ад імя гэтага карыстальніка.

Гл. таксама[правіць | правіць зыходнік]

Спасылкі[правіць | правіць зыходнік]