Пробивание отверстий (сеть)
Эта статья нуждается в дополнительных цитатах для проверки . ( май 2022 г. ) |
Перфорирование (или иногда сквозное соединение ) — это метод в компьютерных сетях для установления прямого соединения между двумя сторонами, в котором одна или обе стороны находятся за брандмауэрами или за маршрутизаторами , использующими преобразование сетевых адресов (NAT). Чтобы пробить дыру, каждый клиент подключается к неограниченному стороннему серверу, который временно хранит внешний и внутренний адрес и информацию о порте для каждого клиента. Затем сервер передает информацию каждого клиента другому, и, используя эту информацию, каждый клиент пытается установить прямое соединение; в результате соединений с использованием действительных номеров портов ограничительные межсетевые экраны или маршрутизаторы принимают и пересылают входящие пакеты с каждой стороны.
Для работы перфорации не требуется никаких знаний топологии сети. Пробивка отверстий ICMP , пробивание отверстий UDP и пробивание отверстий TCP соответственно используют управляющие сообщения Интернета , пользовательские дейтаграммы и протоколы управления передачей .
Обзор
[ редактировать ]Сетевые устройства с общедоступными или глобально доступными IP-адресами могут легко создавать соединения между собой. Клиенты с частными адресами также могут легко подключаться к общедоступным серверам, если клиент за маршрутизатором или брандмауэром инициирует соединение. перфорирование (или какая-либо другая форма обхода NAT требуется Однако для установления прямого соединения между двумя клиентами, которые оба находятся за разными межсетевыми экранами или маршрутизаторами, использующими преобразование сетевых адресов (NAT), ) .
Оба клиента инициируют соединение с неограниченным сервером, который записывает информацию о конечной точке и сеансе, включая общедоступный IP-адрес и порт, а также частный IP-адрес и порт. Брандмауэры также отслеживают конечные точки, чтобы обеспечить обратную передачу ответов от сервера. Затем сервер отправляет информацию о конечной точке и сеансе каждого клиента другому клиенту или одноранговому узлу. Каждый клиент пытается подключиться к своему узлу через указанный IP-адрес и порт, которые брандмауэр узла открыл для сервера. Новая попытка подключения пробивает брешь в брандмауэре клиента, поскольку конечная точка теперь становится открытой для получения ответа от своего узла. В зависимости от условий сети один или оба клиента могут получить запрос на соединение. Успешный обмен одноразовыми номерами аутентификации между обоими клиентами указывает на завершение процедуры пробивания отверстий. [1]
Примеры
[ редактировать ]В продуктах VoIP , онлайн-игровых приложениях и программном обеспечении для сетей P2P используется перфорирование.
- Программное обеспечение для телефонии Skype использует перфорацию, чтобы позволить пользователям общаться с одним или несколькими пользователями вслух. [2]
- В динамичных многопользовательских онлайн-играх может использоваться техника пробивания отверстий или требовать от пользователей создания постоянного отверстия в брандмауэре , чтобы уменьшить задержку в сети.
- VPN- приложения, такие как Hamachi , ZeroTier и Tailscale, используют перфорацию, чтобы позволить пользователям напрямую подключаться к подписанным устройствам за брандмауэрами.
- Программное обеспечение для децентрализованного однорангового обмена файлами основано на пробивании отверстий для распространения файлов.
Требования
[ редактировать ]Надежная перфорация требует согласованной трансляции конечных точек, а для нескольких уровней NAT — шпильковой трансляции.
Когда исходящее соединение от частной конечной точки проходит через брандмауэр, оно получает общедоступную конечную точку (публичный IP-адрес и номер порта), а брандмауэр преобразует трафик между ними. Пока соединение не закрыто, клиент и сервер взаимодействуют через общедоступную конечную точку, а брандмауэр направляет трафик соответствующим образом. Согласованное преобразование конечной точки повторно использует одну и ту же общедоступную конечную точку для данной частной конечной точки вместо выделения новой общедоступной конечной точки для каждого нового соединения.
Шпилька-преобразование создает петлевое соединение между двумя собственными частными конечными точками, когда распознает, что целевой конечной точкой является она сама. Эта функция необходима для перфорации только при использовании в многоуровневом NAT. [1]
См. также
[ редактировать ]- Протокол управления портами (PCP)
- Протокол сопоставления портов NAT (NAT-PMP)
- Протокол устройства интернет-шлюза (UPnP IGD)
- Порт стучит
- Протокол инициации сеанса
- Оглушение
Ссылки
[ редактировать ]- ^ Jump up to: а б Форд, Брайан; Шрисуреш, Пида; Кегель, Дэн (2005), Одноранговая связь через переводчики сетевых адресов
- ^ Шмидт, Юрген (2006), Трюк с дыркой