Пробивка отверстий UDP
Эта статья нуждается в дополнительных цитатах для проверки . ( июнь 2016 г. ) |
Пробивка отверстий UDP — это широко используемый метод, используемый в приложениях трансляции сетевых адресов (NAT) для поддержки потоков пакетов протокола пользовательских дейтаграмм (UDP), которые проходят через NAT. Методы прохождения NAT обычно требуются для сетевых приложений клиент-клиент в Интернете с участием хостов, подключенных к частным сетям , особенно в одноранговых сетях , прямых соединениях клиент-клиент (DCC) и голосовой связи по интернет-протоколу (VoIP). . [1]
Пробивка отверстий UDP устанавливает соединение между двумя хостами, взаимодействующими через один или несколько трансляторов сетевых адресов. Обычно сторонние хосты в сети общественного транспорта используются для установления состояний портов UDP, которые могут использоваться для прямой связи между взаимодействующими хостами. После того, как состояние порта успешно установлено и хосты обмениваются данными, состояние порта может поддерживаться либо обычным коммуникационным трафиком, либо, в случае его длительного отсутствия, пакетами проверки активности , обычно состоящими из пустых пакетов UDP или пакетов с минимальными, не- навязчивый контент.
Обзор
[ редактировать ]Пробивка отверстий UDP — это метод установления двунаправленных UDP-соединений между хостами Интернета в частных сетях с использованием трансляторов сетевых адресов. Этот метод не применим во всех сценариях и со всеми типами NAT, поскольку рабочие характеристики NAT не стандартизированы.
Хосты с сетевым подключением внутри частной сети, подключенной через NAT к Интернету, обычно используют метод утилиты обхода сеанса для NAT (STUN) или интерактивное установление соединения (ICE) для определения публичного адреса NAT, который требуется его узлам связи. В этом процессе другой хост в общедоступной сети используется для установления сопоставления портов и другого состояния порта UDP, которое считается допустимым для прямой связи между хостами приложений. Поскольку состояние UDP обычно истекает через короткие промежутки времени в диапазоне от десятков секунд до нескольких минут, [2] и порт UDP при этом закрывается, перфорация UDP использует передачу периодических пакетов проверки активности , каждый из которых обновляет счетчики времени жизни в конечном автомате UDP NAT.
Пробивка отверстий UDP не будет работать с устройствами симметричного NAT (также известными как двунаправленный NAT), которые обычно встречаются в крупных корпоративных сетях. В симметричном NAT сопоставление NAT, связанное с подключением к известному серверу STUN, ограничено получением данных от известного сервера, и поэтому сопоставление NAT, которое видит известный сервер, не является полезной информацией для конечной точки.
При более сложном подходе оба хоста начнут отправлять сообщения друг другу, используя несколько попыток. В NAT с ограниченным конусом первый пакет от другого хоста будет заблокирован. После этого устройство NAT имеет запись об отправке пакета на другой компьютер и пропускает любые пакеты, поступающие с этого IP-адреса и номера порта. Этот метод широко используется в одноранговом программном обеспечении и телефонии с передачей голоса по интернет-протоколу . Его также можно использовать для создания виртуальных частных сетей, работающих через UDP. Тот же метод иногда распространяется на соединения протокола управления передачей (TCP), хотя и с меньшим успехом, поскольку потоки TCP-соединений контролируются операционной системой хоста, а не приложением, а порядковые номера выбираются случайным образом; таким образом, любое устройство NAT, выполняющее проверку порядкового номера, не будет считать пакеты связанными с существующим соединением и отбрасывать их.

Поток
[ редактировать ]Пусть A и B — два хоста с внутренними IP-адресами iAddr A и iAddr B соответственно, каждый в своей частной сети; N A и N B — два устройства NAT с внешними IP-адресами eAddr A и eAddr B соответственно; S — общедоступный сервер с известным IP-адресом.
- Каждый из A и B начинает диалог UDP с S; Устройства NAT NA и NB создают состояния трансляции UDP и назначают временные номера внешних портов ePort и ePort B. A
- S проверяет пакеты UDP, чтобы определить исходный порт, используемый N A и N B (внешние порты NAT ePort A и ePort B ).
- S информирует B о значениях eAddr A :ePort A значениях eAddr B :ePort B. и информирует A о
- A отправляет пакет на eAddr B :ePort B , а B отправляет пакет на eAddr A :ePort A (не обязательно одновременно и в каком-либо определенном порядке).
- Когда эти пакеты покидают частную сеть, каждое устройство NAT добавляет запись в свою таблицу трансляции:
- N A проверяет пакет A и обнаруживает, что запись уже существует (iAddr A , iPort A , eAddr A , ePort A ), но пункт назначения другой (S). N A создаст новую запись с тем же переводом для трафика, полученного из A ( iAddr A ) в B (eAddr B ).
- N B проверяет пакет B и обнаруживает, что запись уже существует (iAddr B , iPort B , eAddr B , ePort B ), но пункт назначения другой (S). N B создаст новую запись с тем же переводом для трафика, полученного из B (iAddr B ) в A (eAddr A ).
- В зависимости от состояния таблицы трансляции каждого NAT по прибытии пакета удаленного устройства:
- Если новая запись уже была добавлена в таблицу трансляции NA до прибытия пакета B, то NA пропускает пакет B, но в противном случае отбрасывает его.
- Если новая запись уже была добавлена в таблицу трансляции N B до прибытия пакета A, то N B пропускает пакет A, но в противном случае отбрасывает его.
- Когда эти пакеты покидают частную сеть, каждое устройство NAT добавляет запись в свою таблицу трансляции:
- Как только оба NAT добавят эти кортежи, в NAT «пробиваются дыры», позволяя обоим хостам напрямую взаимодействовать.
- Если оба хоста имеют NAT с ограниченным конусом или симметричный NAT , внешние порты NAT будут отличаться от портов, используемых с S. На некоторых маршрутизаторах внешние порты выбираются последовательно, что позволяет установить диалог путем угадывания соседних портов.
См. также
[ редактировать ]- Хамачи
- Фринет
- ICMP пробивание отверстий
- пробивание отверстий TCP
- Пробивание отверстий (сеть)
- ВебRTC
- Протокол управления портами (PCP)
- Тередо туннелирование
Ссылки
[ редактировать ]- ^ Форд, Брайан; Кегель, Дэн; Срисуреш, Пида (01 марта 2008 г.). «Пробивка отверстий UDP, состояние одноранговой (P2P) связи через трансляторы сетевых адресов (NAT)» . ietf.org . Проверено 22 июня 2016 г.
- ^ «Простая безопасность в CPE шлюза IPv6» . ietf.org. 01.01.2011 . Проверено 22 июня 2016 г.
Внешние ссылки
[ редактировать ]- Одноранговая связь через переводчики сетевых адресов , PDF — содержит подробное объяснение процесса пробивания отверстий.
- STUNT – Простое прохождение UDP через NAT и TCP
- Трансляция сетевых адресов и одноранговые приложения (NATP2P)