- Головна
- Техніка
- Технології
- Як працює торрент
Як працює торрент

Датою народження торрента вважається 4 квітня 2001 року. Саме в цей день Бремом Коеном був анонсований перший торрент-клієнт. Офіційний вихід першої версії відбувся 2 липня 2001 року, і з тих пір ця технологія семимильними кроками захоплює комп’ютери мережі.
Торрент (torrent) сам по собі є мережевим протоколом для обміну файлами між комп’ютерами в мережі. При передачі файли розбиваються на невеликі частини і в такому вигляді передаються. Торрент-клієнт (torrent-client) закачує ці частини і потім збирає у себе файл воєдино. У чому ж основна відмінність його від того ж ftp-протоколу? В процесі скачування шматочків, клієнт відразу ж надає до них доступ для файл одразу після завантаження іншим учасникам мережі, що дозволяє передавати торрент-файли з набагато більшою швидкістю і без очікування звільнення основного джерела (сидера).
Торрент-трекер
Торрент трекер (torrent tracker) — виділений сервер, що працює по протоколу HTTP. Він дозволяє клієнтам спілкуватися один з одним, тобто знаходити один одного і обмінюватися інформацією про наявні у них торрентах. Трекер містить інформацію про IP адреси і використовуваних портах клієнтів і хеш суми роздаваних мережею файлів. Самі файли на трекері в більшості випадків не зберігаються і визначити їх з хеш суми не можна. Втім, як правило, сервер крім безпосереднього зберігання хеш сум торрентів одночасно виконує функції Веб-сервера, на якому міститься опис файлів, статистика завантажень, статистика вузлів мережі та користувачів.
Торрент-клієнти
Безпосередньо частини файлу між клієнтами передаються безпосередньо, без участі торрент-трекера. Трекер тільки акумулює і надає клієнтам дані про процеси поширення файлів по мережі. Щоб протокол працював з максимальною ефективністю, необхідно, щоб максимальну кількість клієнтів могли приймати і віддавати файли. Коли клієнти приєднуються один до одного, вони першим ділом обмінюються даними про шматочках торрента, наявного у них. Якщо у першого клієнта є відсутній другого сегмент, то другий клієнт посилає запит «скачати торрент». Перший клієнт віддає необхідну частину торрента, якщо така можливість є. При отриманні запитуваної частини, адресат перевіряє її контрольну суму і ставить трекер до відома про те, що він також має цю частину, щоб всі інші підключені клієнти могли завантажити torrent з нього.
Протоколи і порти торрента
Клієнти з’єднуються з трекером по протоколу TCP. Як правило, вхідний порт трекеру присвоюється 6969. Клієнти спілкуються один з одним також по протоколу TCP. Найбільш часто використовувані вхідні порти клієнтів: 6881-6889. Втім, номери портів не є обов’язковими згідно специфікації протоколу і можуть змінюватися за необхідності. Велика кількість трекерів в даний час використовують звичайний HTTP порт 80, а клієнтам рекомендується вибирати випадковий вхідний порт. Деякі провайдери забороняють використання раніше згаданого діапазону портів з метою протидії поширення піратського вмісту торрент-мереж.
Також в клієнтах закладена можливість використовувати UDP порти, але вона не є офіційно затвердженої. Не всі клієнти підтримують її. UDP порти використовуються для роботи опції DHT, тобто для режиму роботи без зв’язку з torrent трекером.
Для оптимізації роздачі клієнт може призупинити віддачу частин torrent файл іншому клієнту. Пріоритет надається тому учаснику мережі, який сам віддав Вам більшу кількість частин, тобто чим більше віддав Вам бенкет (вузол, клієнт), тим більше ви віддаєте йому. У результаті велику швидкість скачування отримують ті торрент клієнти, які віддають з великою швидкістю.
Особливості торрент протоколу
Відсутні черги скачування, тобто не потрібно всім стояти в черзі до джерела/сидеру, для того щоб завантажити файл. Торрент завантажується частинами; чим менше поширений фрагмент файлу, тим частіше він буде віддаватися. Протокол розподіляє фрагменти між клієнтами, так щоб надалі вони могли обмінюватися частинами без участі роздає. Завантажені частини файлу відразу стають доступними для інших. Для роздачі можливе відкриття цілого каталогу з файлами всередині.
У сучасній версії торрент протоколу розроблена підтримка роботи без центрального трекера, режим DHT. В такому режимі, в випадки недоступності центрального сервера, клієнти можу продовжувати працювати підтримуючи зв’язок між собою. Такий режим роботи здійснюється на основі протоколу Kademlia. При такому режимі роботи інформація трекера распределенно міститься на клієнтів у вигляді хеш-таблиць. Такий режим реалізований не на всіх клієнтах, реалізований по-різному. Тому різні клієнти можуть не працювати один з одним.
Кожен день в Торрент мережах тисячі людей по всьому світу обмінюються файлами один з одним. Не дивно, що в більшій мірі вміст трафіку являє собою неліцензійне програмне забезпечення, музичні та відео-файли. Саме цей вміст є стимулом для більшості учасників до обміну файлами. Втім, якщо Ви вступаєте в це співтовариство, то ніхто не може вказати Вам, які файли качати, а які ні – це кожен вирішує сам для себе. Правовласники періодично намагаються боротися з мережами, з учасниками, з власниками трекерів. Але закриті сервера моментально відроджуються на новому місці під новим ім’ям.
Яка послідовність кроків, якщо Ви захотіли поділитися з співтовариством торрент наявними у Вас файлом? Ви створюєте в спеціальній програмі Торрент-файл, вказуючи файл, яким хочете поділитися, а програма автоматично створює Торрент-файл. Цей файл має розширення*.torrent» і має невеликий об’єм, близько 200-300 кб. Це як би зміст вашого файлу. Далі Ви заходите на Трекер, попередньо зареєструвавшись на ньому, і викладаєте свій Торрент-файл, вибравши попередньо категорію, і даєте короткий опис викладеного файлу, його розмір і т. п. для користувачів. Файл стає доступним для учасників мережі.
Навіщо вам викладати файли, чому не можна просто користуватися наданою розкішшю? На Торрент-трекерах є просте правило: якщо ти не даєш скачувати іншим і сам не зможеш нічого скачати. При реєстрації встановлюється для нового користування ліміт скачування. Наприклад, можна скачати 500 Мб, а далі, якщо не будеш ділитися файлами з іншими користувачами — буде заборонено викачувати. Але якщо ділишся, то ліміт автоматично підвищується.
Трекерів і торрент-клієнтів у мережі безліч, і Ви легко їх знайдете, скориставшись пошуковими серверами. Який з них вибрати – Ваша особиста справа.
Термінологія
Анонс (англ. announce) — звернення клієнта до трекера. При кожному анонсі клієнт передає на трекер інформацію про обсяги їм скачаного і відданого, a трекер передає клієнту перелік адрес інших клієнтів. Звернення клієнта до трекера відбувається через певні проміжки часу, які визначаються параметрами клієнта і трекера.
Веб-сід — HTTP-сервер, який може використовуватися як джерело даних, виступаючи в ролі сіда.
Доступність (англ. availability, англ. distributed copies — поширені копії) — кількість повних копій файлу, доступних клієнтові.
Затихлий (англ. choked — затихлий, придушений) — клієнт, обмін даними з яким заглох. Або його канал на вихід забитий повністю, і він не може нічого передати (досяг max_uploads), або він є сідом і йому нічого не потрібно отримувати.
Зацікавлений (англ. interested) — учасник, який бажає отримати шматки файлу, наявні у іншого учасника. Наприклад, якщо у клієнта А немає якихось частин, які є у клієнта Б, вважається, що клієнт А зацікавлений в обміні з клієнтом Б.
Індекс (англ. index) — це список .torrent-файлів (зазвичай включає описи та іншу інформацію), керований веб-сайтом (индексатором) і доступний для пошуку. Індексуючі сайт також може бути і трекером.
Ліч, лічер (англ. витоків — п’явка) — бенкет, що не має поки всіх сегментів, тобто продовжує скачування.
Отруєний торрент — ситуація, коли частина бенкетів роздає пошкоджені сегменти.
Бенкет (англ. peer — співучасник) — клієнт, який бере участь в роздачі.
Поскрестись (англ. scrape — шкребти, дряпати) — процес, аналогічний анонсу, але клієнт запитує тільки статистику торрента, інформацію про підключених клієнтів і можливості з ними зв’язатися для обміну.
Нехтує (англ. snubbed) — клієнт, підключений до одержувача, але не посылавший йому дані вже більше 60 секунд.
Роздача (англ. посів) — процес поширення файлу по протоколу BitTorrent.
Рейтинг (англ. share ratio) — відношення відданого до викачаного.
Рой (англ. swarm) — сукупність всіх колег, які беруть участь в роздачі.
Сегмент (англ. part — частина) — усі файли для передачі поділяються на невеликі блоки — сегменти, які потім передаються по мережі у довільному порядку для оптимізації обміну.
Сід, сідер (англ. seeder — сіяч) — бенкет, має всі сегменти розповсюджуваного файлу, тобто або початковий розповсюджувач файлу, або вже викачав весь файл і залишився на роздачі.
Супер-сидирование — спеціальний режим роздачі в деяких BitTorrent-клієнтів, намагається мінімізувати кількість даних, яке віддасть роздає до появи першого який скачав. Суперсид пропонує кожному бенкеті завантажити тільки один сегмент файлу, якого ще немає в інших бенкетів. Потім сід не дає цьому бенкеті наступних сегментів, поки не отримає від інших бенкетів підтвердження, що вони теж отримали цей сегмент. Таким чином, суперсид намагається уникнути повторної віддачі одних і тих же сегментів, і намагається віддавати сегменти тільки тим учасникам, які активно передають їх іншим.
Хеш (англ. hash) — рядок буквено-цифрових символів .torrent-файл, яку використовують клієнти для перевірки переданих даних. Кожна частина після отримання спочатку перевіряється на збіг хеш. Якщо перевірка не удалась, дані відкидаються і запитуються ще раз.
Passkey — аутентификатор користувача на неанонимных трекерах. Міститься в скачуваному torrent-файл. Таким чином, якщо хтось отримає доступ до torrent-файлу (наприклад, користувач з необережності розшарив його), він зможе працювати з трекером від імені цього користувача. Трекер може змінити passkey за запитом користувача, але при цьому необхідно буде перескачать всі минулі torrent-файлів (або вручну відредагувати їх), щоб мати можливість і далі роздавати викачані файли.
URL анонсу (англ. announce URL) — адреса трекера, до якого клієнт робить анонс. Найчастіше він називається «Tracker URL». Може включати «passkey» — унікальний код, який призначається трекером для облікового запису користувача, що допомагає ідентифікувати його на трекері (додається до URL анонсу в самому *.torrent-файл при скачуванні).
Успішної роботи!