Как работает обход NAT в случае одноранговых протоколов, таких как bittorrent.

Я знаю про обход NAT, STUN, TURN, ICE и его использование. Я хочу знать, реализованы ли они в одноранговых приложениях для обмена файлами, таких как bittorrent. Помогают ли трекеры одноранговым узлам за NAT общаться друг с другом, помогая в создании прямого соединения с помощью STUN или ретрансляции через TURN. В случае распределенной хеш-таблицы (DHT), как один партнер будет взаимодействовать с другим партнером за NAT?


person user1887464    schedule 21.05.2016    source источник


Ответы (1)


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

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

Таким образом, он не использует sip / turn / etc.

Различные клиенты используют комбинацию следующих подходов для улучшения подключения для массовых транспортных соединений:

  • PCP, NAT-PMP или UPnP-IGD согласование со шлюзом для пересылки порт, пока приложение работает.
  • Для TCP можно использовать привязку к исходному порту (исходящие соединения) и параметры сокета повторного использования порта (прослушивание + исходящий) для использования одного и того же локального порта для всех подключений для использования сопоставления NAT, независимые от конечной точки (EIM) (также известные как NAT с полным конусом).
  • Аналогично для UDP следует использовать единственный сокет в сочетании с sendto / recvfrom или эквивалентные API для мультиплексирования всех соединений на уровне приложения через один порт вместо создания одного сокета на одноранговое соединение. .
  • в основном недокументированные _ 1_, который использует взаимно доступные члены роя вместо серверов оглушения.
  • дополнительный транспортный протокол на основе UDP (µTP), который можно использовать в сочетании с предыдущими пунктами . Обычно обход nat легче достигается с помощью udp
  • сигнализация возможностей IPv6, которая в принципе позволяет клиентам обновлять свои соединения, а затем сплетничать о пирах v6 через PEX / DHT.
  • предложение пользователю выполнить перенаправление портов вручную

В случае DHT используются только первые две точки (согласование шлюза и повторное использование порта). Накладные расходы на попытку обхода nat для одного цикла запрос-ответ составят ›100% и не стоят того.

person the8472    schedule 21.05.2016
comment
знаете ли вы, совместим ли libtorrent с серверами TURN / STUN / ICE? - person Gubatron; 21.09.2018
comment
@Gubatron вопрос неясен. Вы имеете в виду, может ли libtorrent действовать как оглушающий сервер или он может действовать как клиент, чтобы использовать такие серверы для обхода nat? - person the8472; 21.09.2018