Как BitTorrent работает только с исходящими соединениями?

18

Какой механизм позволяет BitTorrent работать только с исходящими соединениями?

То есть без переадресации портов.

Часто задаваемые вопросы и руководство Брайана по BitTorrent гласят:

BitTorrent будет нормально работать в среде NAT (трансляция сетевых адресов), поскольку он может работать только с исходящими соединениями.

Работают ли другие узлы в качестве серверов рандеву в этом случае?

Питер Мортенсен
источник

Ответы:

8

Насколько я знаю, он работает с использованием обратных соединений - в основном, ваш клиент выполняет исходящее соединение, которое остается открытым на удаленной машине, и они прокачивают данные через это же соединение.

Если бы все использовали это и ни у кого не было настройки портов, скорее всего, это не получится. Когда я использую Bittorent с отключенными портами, я получаю ужасные скорости, но он работает, поэтому я думаю, что он работает так.

Уильям Хилсум
источник
Почему этот метод приводит к более низким скоростям, чем если бы порты были перенаправлены?
gsingh2011
@ gsingh2011 есть много причин ... самая распространенная из BT - это то, что она может передавать вас через других людей, поэтому ваша скорость загрузки может быть ограничена скоростью загрузки других людей.
Уильям Хилсум
Для трекера это правильно и не проблема. но для загрузки это не так. потому что битовый торрент механизм загрузки требует загрузки от других пиров. другие коллеги могут быть позади NAT (как вы). Итак, как битный торрент работает за NAT?
SMMousavi
4
Это частичный ответ относительно общих методов обхода NAT. Истинный вопрос: откуда вы знаете, что кто-то хочет загрузить с вас некоторые блоки файлов, поскольку вы не принимаете какое-либо незапрошенное соединение? Таким образом, возможности ограничены: либо трекер предупреждает вас, либо вы активно подключаетесь к нескольким клиентам трекера, чтобы инициировать сеансы пиринга (чтобы они могли запрашивать загрузку в определенный момент времени), либо вы принимаете только запросы от партнеров, которые вы активно загружаете. от, или эти сверстники выступает в качестве точек рандеву. Итак, какое предложение реализовано в торрент-клиенте?
KrisWebDev
5

BitTorrent работает с использованием P2P-соединения. Поэтому должен быть способ прямого соединения с пэром. Как вы знаете, NAT нарушает работу P2P. Но есть какое-то решение для этого работает. Большинство (как я все знаю) основано на протоколе STUN.

Каждый клиент получает свой публичный IP-адрес и временный номер порта (UDP), используя сервер STUN. Сервер STUN помогает клиенту обнаруживать присутствие NAT и обнаруживать общедоступный ip + временный номер порта (назначенный NAT). Затем клиент пытается установить прямое соединение с другим узлом, используя технику пробивки отверстий (см. Википедию ).

Если вы включили UPnP, есть и другое решение.

Для получения дополнительной информации см. NAT Traversal в Википедии .

SMMousavi
источник
1

Обычно люди связываются с вами, чтобы запросить данные у вас, а вы будете связываться с людьми, запрашивающими данные у них.

Если входящие подключения невозможны, ваш клиент также выйдет и активно попросит передать данные другим людям (и может сделать это, если входящие подключения также возможны).

Вы загружаете не так много, но это не сильно беспокоит публичных трекеров.

Джеффри Эйлсворт
источник