Пробивка отверстий (сеть) - 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]
Смотрите также
Рекомендации
- ^ а б Форд, Брайан; Шрисуреш, Пида; Кегель, Дэн (2005), Одноранговая связь через трансляторы сетевых адресов
- ^ Шмидт, Юрген (2006), Уловка с дырой