Пробивка отверстий UDP - это широко используемый метод, используемый в приложениях трансляции сетевых адресов (NAT) для поддержки Протокол пользовательских дейтаграмм (UDP) потоки пакетов, проходящие через NAT. Методы обхода NAT обычно требуются для сетевых приложений клиент-клиент в Интернете с участием хостов, подключенных в частных сетях, особенно в одноранговых сетях. -peer, Direct Client-to-Client (DCC) и Развертывания по протоколу передачи голоса по Интернет-протоколу (VoIP).
Пробивка отверстий UDP устанавливает связь между двумя хосты обмениваются данными через один или несколько трансляторов сетевых адресов. Обычно сторонние узлы в сети общественного транспорта используются для установления состояний порта UDP, которые могут использоваться для прямого обмена данными между взаимодействующими узлами. После того, как состояние порта было успешно установлено и узлы обмениваются данными, состояние порта может поддерживаться либо обычным коммуникационным трафиком, либо при его длительном отсутствии пакетами keep-alive, обычно состоящими из пустых пакетов UDP или пакеты с минимальным ненавязчивым содержимым.
Пробивка отверстий UDP - это метод для установления двунаправленного UDP-соединения между хостами Интернет в частных сетях с использованием трансляторов сетевых адресов. Этот метод не применим во всех сценариях или со всеми типами NAT, поскольку рабочие характеристики NAT не стандартизированы.
Хосты с сетевым подключением внутри частной сети, подключенные через NAT к Интернету, обычно используют Утилиты обхода сеанса для NAT (STUN) или Установление интерактивного подключения ( ICE) для определения публичного адреса NAT, который требуется его узлам связи. В этом процессе другой хост в общедоступной сети используется для установления сопоставления портов и другого состояния порта UDP, которое считается допустимым для прямой связи между хостами приложений. Поскольку состояние UDP обычно истекает через короткие промежутки времени в диапазоне от десятков секунд до нескольких минут, а порт UDP закрывается в процессе, пробивка отверстий UDP использует передачу периодических пакетов подтверждения активности, каждый из которых продлевает срок службы. счетчики времени в конечном автомате UDP NAT.
Пробивка отверстий UDP не будет работать с устройствами симметричного NAT (также известными как двунаправленный NAT), которые, как правило, встречаются в крупных корпоративных сетях. В симметричном NAT отображение NAT, связанное с подключением к известному серверу STUN, ограничивается получением данных от известного сервера, и поэтому отображение NAT, которое видит известный сервер, не является полезной информацией для конечной точки.
При более сложном подходе оба хоста начнут отправлять друг другу сообщения, используя несколько попыток. На Restricted Cone NAT первый пакет от другого хоста будет заблокирован. После этого устройство NAT имеет запись об отправке пакета на другую машину и пропускает любые пакеты, приходящие с этого IP-адреса и номера порта. Этот метод широко используется в программном обеспечении одноранговой сети и телефонии по протоколу передачи голоса по Интернет-протоколу. Его также можно использовать для помощи в создании виртуальных частных сетей, работающих через UDP. Тот же метод иногда применяется к соединениям Протокол управления передачей (TCP), но с меньшим успехом, поскольку потоки соединений TCP управляются ОС хоста, а не приложением, а порядковые номера выбираются случайным образом; таким образом, любое устройство NAT, которое выполняет проверку порядкового номера, не будет считать пакеты связанными с существующим соединением и отбрасывать их.
Пусть A и B - два хоста, каждый в своей частной сети; N A и N B - два устройства NAT с глобально доступными IP-адресами EIP A и EIP B соответственно; S - это общедоступный сервер с хорошо известным глобально доступным IP-адресом.