Торренты: как они устроены
vk f t

Торренты: как они устроены

Сага о тех, кто кача­ет по кусоч­кам

Пред­ставь­те: кто-то взял мно­го­стра­нич­ную кни­гу, вырвал из неё все листы и раз­да­ёт про­хо­жим ксе­ро­ко­пии слу­чай­ных стра­ниц со ско­ро­стью 10 листов в час. Ваша зада­ча — собрать кни­гу, что­бы все стра­ни­цы шли по поряд­ку. Как это быст­рее все­го сде­лать?

Самый про­стой спо­соб — соби­рать само­му все листы, про­ве­рять, что­бы сре­ди них не попа­да­лись дуб­ли­ка­ты и ждать, пока таким обра­зом не собе­рёт­ся вся кни­га. Но это дол­го — ско­рость сбо­ра целой кни­ги напря­мую зави­сит от коли­че­ства стра­ниц. Кни­гу из 100 стра­ниц мы будем соби­рать 10 часов, а из 1000 стра­ниц — 4 дня.

Но есть спо­соб собрать кни­гу быст­рее, и для это­го пона­до­бит­ся помощь дру­гих про­хо­жих. Мы будем спра­ши­вать у всех, какие стра­ни­цы есть у них. Если у нас таких нет — берём их стра­ни­цы и сни­ма­ем копии. А что­бы было чест­но, отда­ём свои стра­ни­цы на копи­ро­ва­ние тем, у кого их нет.

Чем боль­ше людей, тем боль­ше в обра­ще­нии стра­ниц, тем быст­рее у вас собе­рёт­ся кни­га.

Теперь про торренты

Если в этой ситу­а­ции кни­гу заме­нить на файл, а про­хо­жих — на ком­пью­те­ры, то полу­чит­ся опи­са­ние торрент-сети. Эта сеть осно­ва­на на про­то­ко­ле Bittorrent, кото­рый дела­ет так:

Для того что­бы поде­лить­ся с кем-то сво­им фай­лом, не обя­за­тель­но отправ­лять его цели­ком. Доста­точ­но сде­лать из него тор­рент и поде­лить­ся ссыл­кой. Глав­ное, помни­те: у кого будет torrent-файл, тот и может ска­чать этот доку­мент. Если он досту­пен всем, то и ска­чи­вать могут тоже все.

В тор­рен­тах файл пере­да­ет­ся по кусоч­кам от поль­зо­ва­те­ля к поль­зо­ва­те­лю напря­мую.

Как происходит скачивание

Когда torrent-файл ска­чан, спе­ци­аль­ная про­грам­ма откры­ва­ет его, узна­ёт, где нахо­дит­ся нуж­ный доку­мент и как он поде­лён на кус­ки. Кро­ме это­го, она запра­ши­ва­ет у раз­да­ю­ще­го инфор­ма­цию о том, кто ещё кача­ет или ска­чал этот файл. Если такие есть — про­грам­ма соеди­ня­ет­ся с ними и начи­на­ет тоже заби­рать кусоч­ки фай­ла у них.

В ито­ге вы ска­чи­ва­е­те файл слу­чай­ны­ми кусоч­ка­ми, а все кру­гом могут узнать, какие кусоч­ки есть у вас.

Как толь­ко к ска­чи­ва­нию при­со­еди­ня­ет­ся кто-то новый, он начи­на­ет ска­чи­вать со всех под­ряд слу­чай­ные кусоч­ки это­го фай­ла, а парал­лель­но — раз­да­вать те, кото­рые уже ска­чал. Общая ско­рость ска­чи­ва­ния обыч­но рас­тёт, пото­му что у всех ста­но­вит­ся боль­ше раз­ных кусоч­ков, кото­рые мож­но качать парал­лель­но.

В ито­ге, когда все кусоч­ки ска­ча­ны, про­грам­ма соби­ра­ет их в один файл и про­ве­ря­ет, вер­но ли она его собра­ла. Если всё хоро­шо, вы полу­ча­е­те целый файл и про­дол­жа­е­те раз­да­вать его тем, кто ещё не успел всё ска­чать.

Поль­зо­ва­те­ли обме­ни­ва­ют­ся недо­ста­ю­щи­ми кусоч­ка­ми фай­ла друг с дру­гом.

Термины

Тот, у кого есть целый файл и он его раз­да­ёт, назы­ва­ет­ся сидом. Те, кто ска­чи­ва­ют, но цело­го у них пока нет, — личи, а вме­сте они назы­ва­ют­ся пира­ми. Отсю­да и пошло вто­рое назва­ние подоб­ных торрент-сетей — пирин­го­вые сети. Это зна­чит, что каж­дый участ­ник при­ни­ма­ет рав­но­прав­ное уча­стие в рабо­те всей сети и что нет цен­траль­но­го сер­ве­ра, где хра­нят­ся все фай­лы.

Кста­ти, если тот, кто пер­во­на­чаль­но раз­да­вал нуж­ный файл, пере­ста­нет его раз­да­вать, но кто-то дру­гой уже успе­ет его ска­чать, то файл всё рав­но будет досту­пен всем. В этом вся пре­лесть пирин­го­вых сетей — если есть хоть один чело­век, у кого есть целый файл, то ска­чи­вать его может вся сеть, даже если изна­чаль­но этот чело­век его не выкла­ды­вал.

Раз­да­ю­щий про­пал с раз­да­чи, но у дво­их поль­зо­ва­те­лей доста­точ­но кусоч­ков, что­бы обме­нять­ся друг с дру­гом и полу­чить целый файл.

Этикет

Сооб­ще­ство не при­вет­ству­ет тех, кто ска­чи­ва­ет файл и сра­зу ухо­дит с раз­да­чи. Такие пиры помо­га­ют осталь­ным, пока кача­ют, но от них боль­ше нагруз­ки на сеть, чем поль­зы. По-настоящему полез­ные ребя­та — те, кто ска­ча­ли файл сами и раз­да­ли его мно­го раз дру­гим ребя­там.

Даже если изна­чаль­ный раз­да­ю­щий окон­ча­тель­но про­пал, раз­да­ча про­дол­жа­ет­ся за счет тех, кто уже успел ска­чать файл.

У торрентов своя атмосфера

В торрент-сетях нет огра­ни­че­ния на раз­мер выло­жен­но­го фай­ла или архи­ва — мож­но выло­жить хоть тера­байт фоток и раз­да­вать их пару недель.

Само исполь­зо­ва­ние тор­рен­тов — не запре­ще­но. Но если нару­шать тор­рен­та­ми чьи-то пра­ва, то вот это будет запре­ще­но — по реше­нию суда.

Тор­рен­ты осо­бен­но полез­ны тем, что любой чело­век может стать мощ­ным источ­ни­ком раз­да­чи. Напри­мер, если вы отко­па­ли и оциф­ро­ва­ли ред­чай­шие ауди­о­за­пи­си совет­ско­го вре­ме­ни, кото­рых нет боль­ше ни у кого, вы може­те создать раз­да­чу с эти­ми запи­ся­ми и вос­ста­но­вить утра­чен­ное насле­дие: чем боль­ше людей будут даль­ше участ­во­вать в раз­да­че это­го фай­ла, тем креп­че и проч­нее всё будет дер­жать­ся.

Пер­вый торрент-клиент — BitTorrent — был напи­сан на Python. Мы уже гово­ри­ли о том, поче­му Питон — это класс­но, и повто­рим это сно­ва.

Если раз­да­ю­щий ушёл с раз­да­чи до того, как кто-то успел ска­чать файл цели­ком, такая раз­да­ча назы­ва­ет­ся «мёрт­вой», и её невоз­мож­но ска­чать до кон­ца, пока не появит­ся пер­вый раз­да­ю­щий. Но если это, напри­мер, фильм, то боль­шин­ство пле­е­ров смо­гут пере­прыг­нуть через недо­ска­чан­ные кусоч­ки.

Так как всем нуж­на инфор­ма­ция о том, где брать осталь­ные кус­ки фай­лов, то каж­дый участ­ник видит IP-адреса дру­гих пиров. Ано­ним­но­сти в тор­рен­тах нет.

Ещё по теме