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