Огляд протоколу повідомлень рівних .
Клієнт може використовувати два протоколи для обміну інформацією з однолітками, TCP або uTP (через UDP). Ці дані відповідають специфікації протоколу bittorrent , повідомлень про однорангові розділи .
Так програмно, зв’язок повинен починатися між двома клієнтами. Після встановлення з'єднання (через TCP або uTP) клієнт ініціює рукостискання bittorrent, яке захоплює інформацію віддаленого однорангового протоколу (ip & port) з трекера або через DHT . Це рукостискання містить info_hash, який ідентифікує торрент, про який буде з'єднання.
Давайте спочатку побачимо, як дані Torrent обрізаються через протокол. Частина є частиною даних , які спільно через мережу. Не плутати з блоком , який представляє собою частину шматка, загорнутого в пакет. Блок є зернистість ділити шматок через пакети, а частина є зернистість ділити Torrent через колег.
Коли з'єднання починається, обидва клієнта (локальний клієнт, якого я називаю LC та віддалений клієнт, RC ) задушені та нецікаві . Подарований означає "я не відповім на ваші повідомлення, занадто зайняті, але я можу їх врахувати". Відключений тому означає "я відповім на ваші повідомлення". Зацікавлений означає, звичайно, що я хотів би, щоб у вас були якісь твори . Тому стан зв’язку між двома однолітками можна визначити з цими чотирма станами: LC_chocked ?, LC_interested ?, RC_chocked ?, RC_interested? Щоб попередити RC, що я (не) забитий або (не) зацікавлений, Я мушу надсилати йому (не) зацікавлені та (не) подрібнені повідомлення та взаємно.
Щоб повідомити один одному, які шматки вони мають, вони можуть надіслати повідомлення на бітфілді відразу після рукостискання. Як випливає з назви, це біт-рядок, у якому встановлюється кожен біт, 1
якщо клієнт має цей особливий фрагмент , 0
інакше.
Так що якщо LC є дроселювання і зацікавлений і RC має unchocked його, то він може послати запит повідомлення попросити блок , що належить до однієї частини він знає LC має завдяки двійкового повідомленнями.
Коли одноранговий отримав весь фрагмент , він може надіслати повідомлення про частину повідомлення, щоб повідомити всіх віддалених однолітків, щоб вони оновлювали пов’язане з ним бітове поле .
Це дуже базовий огляд, і, звичайно, тут не наводяться всі деталі, як алгоритм задушення тощо. Якщо ви хочете отримати більше деталей, перегляньте два посилання, які я розмістив вище, у розділі коментарів (як новий користувач я можу у публікації не буде більше двох посилань).