Пробивка отверстий (сеть) - Hole punching (networking)

Пробивка отверстий (или иногда пробивать) - техника в компьютерная сеть для установления прямой связи между двумя сторонами, в которых одна или обе находятся позади брандмауэры или позади маршрутизаторы это использование преобразование сетевых адресов (NAT). Чтобы пробить дыру, каждый клиент подключается к неограниченному стороннему серверу, на котором временно хранятся внешние и внутренние адрес и порт информация для каждого клиента. Затем сервер передает информацию каждого клиента другому, и, используя эту информацию, каждый клиент пытается установить прямое соединение; в результате соединений, использующих допустимые номера портов, ограничительные брандмауэры или маршрутизаторы принимают и пересылают входящие пакеты на каждой стороне.

Пробивка отверстий не требует знания топологии сети. Пробивка отверстий ICMP, Пробивка отверстий UDP и Пробивка отверстий TCP соответственно используйте Сообщение управления Интернетом, Датаграмма пользователя и Протоколы управления передачей. Используя гнусную пробивку отверстий TCP, можно отправлять сжатые пакеты SYN по общему пути ACK.

Обзор

Сетевые устройства с общедоступными или глобально доступными IP-адреса могут легко создавать связи между собой. Клиенты с частными адресами также могут легко подключаться к общедоступным серверам, если клиент за маршрутизатором или брандмауэром инициирует соединение. Однако пробивка отверстий (или другая форма Обход NAT ) требуется для установления прямого соединения между двумя клиентами, которые находятся за разными межсетевыми экранами или маршрутизаторами, которые используют трансляция сетевых адресов (NAT).

Оба клиента инициируют соединение с неограниченным сервером, который записывает информацию о конечных точках и сеансах, включая общедоступный IP-адрес и порт, а также частный IP-адрес и порт. Брандмауэры также обращают внимание на конечные точки, чтобы позволить ответам от сервера пройти обратно. Затем сервер отправляет информацию о конечной точке и сеансе каждого клиента другому клиенту или партнеру. Каждый клиент пытается подключиться к своему одноранговому узлу через указанный IP-адрес и порт, которые брандмауэр однорангового узла открыт для сервера. Новая попытка подключения пробивает брешь в брандмауэре клиента, поскольку теперь конечная точка становится открытой для получения ответа от своего партнера. В зависимости от условий сети один или оба клиента могут получить запрос на подключение. Успешный обмен одноразовый идентификатор аутентификации между обоими клиентами указывает на завершение процедуры пробивки отверстий.[1]

Примеры

VoIP продукты, игровые онлайн-приложения и P2P все сетевое программное обеспечение использует перфорацию.

  • Программное обеспечение телефонии Skype использует перфорацию, чтобы пользователи могли общаться с одним или несколькими пользователями на слух.[2]
  • В динамичных многопользовательских онлайн-играх может использоваться техника дырокола или пользователям необходимо создать постоянный отверстие в брандмауэре для уменьшения задержки в сети.
  • VPN такие приложения, как Хамачи или же ZeroTier используйте пробивку отверстий, чтобы пользователи могли напрямую подключаться к подписанным устройствам за межсетевыми экранами.
  • Децентрализованный одноранговый обмен файлами программное обеспечение полагается на перфорацию при распространении файлов.

Требования

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

Когда исходящее соединение от частной конечной точки проходит через межсетевой экран, оно получает общедоступную конечную точку (общедоступный IP-адрес и номер порта), и межсетевой экран транслирует трафик между ними. Пока соединение не будет закрыто, клиент и сервер обмениваются данными через общедоступную конечную точку, а межсетевой экран направляет трафик соответствующим образом. Согласованная трансляция конечной точки повторно использует одну и ту же общедоступную конечную точку для данной частной конечной точки вместо выделения новой общедоступной конечной точки для каждого нового соединения.

Трансляция с помощью шпильки создает петлевое соединение между двумя собственными частными конечными точками, когда распознает, что конечной точкой назначения является она сама. Эта функция необходима для пробивки отверстий только при использовании в многоуровневом NAT.[1]

Смотрите также

Рекомендации

  1. ^ а б Форд, Брайан; Шрисуреш, Пида; Кегель, Дэн (2005), Одноранговая связь через трансляторы сетевых адресов
  2. ^ Шмидт, Юрген (2006), Уловка с дырой