Оглушение
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Набор интернет-протоколов |
---|
Прикладной уровень |
Транспортный уровень |
Интернет-слой |
Слой связи |
STUN ( Session Traversal Utilities for NAT ; первоначально Simple Traversal of User Datagram Protocol (UDP) через трансляторы сетевых адресов ) — это стандартизированный набор методов, включая сетевой протокол, для обхода шлюзов транслятора сетевых адресов (NAT) в приложениях реального времени. голосовая связь, видео, обмен сообщениями и другие интерактивные коммуникации.
STUN — это инструмент, используемый другими протоколами, такими как установление интерактивного подключения (ICE), протокол инициации сеанса (SIP) и WebRTC . Он предоставляет хостам инструмент для обнаружения присутствия транслятора сетевых адресов, а также для обнаружения сопоставленного, обычно общедоступного, адреса Интернет-протокола (UDP) приложения. протокола пользовательских датаграмм (IP) и номера порта, которые NAT выделил для потоков удаленные хосты. Протоколу требуется помощь стороннего сетевого сервера (STUN-сервера), расположенного на противоположной (общедоступной) стороне NAT, обычно это общедоступный Интернет .
STUN был впервые анонсирован в RFC 3489; [1] название было изменено в спецификации обновленного набора методов, опубликованной как RFC 5389, с сохранением той же аббревиатуры. [2]
История
[ редактировать ]
STUN впервые был анонсирован в RFC 3489. [1] Исходная спецификация определяла алгоритм для характеристики поведения NAT в соответствии с поведением сопоставления адресов и портов. Этот алгоритм не является надежным и применим только к подмножеству развернутых устройств NAT. Алгоритм состоит из серии тестов, которые выполняет приложение. Если путь на схеме заканчивается красным прямоугольником, связь UDP невозможна, а когда путь заканчивается желтым или зеленым прямоугольником, связь возможна. Методы RFC 3489 оказались слишком ненадежными, чтобы справиться с множеством различных реализаций NAT и сценариев приложений, встречающихся в производственных сетях. Протокол и метод STUN были обновлены в RFC 5389, сохранив многие исходные спецификации как подмножество методов, но удалив другие.
Название было изменено в спецификации обновленного набора методов, опубликованной как RFC 5389, с сохранением той же аббревиатуры. [2]
Дизайн
[ редактировать ]STUN — это инструмент протоколов связи для обнаружения и обхода трансляторов сетевых адресов, расположенных на пути между двумя конечными точками связи. Он реализован как облегченный протокол клиент-сервер , требующий только простых компонентов запросов и ответов, а сторонний сервер расположен в общей, легкодоступной сети, обычно в Интернете . Клиентская часть реализуется в коммуникационном приложении пользователя, таком как телефон с передачей голоса по Интернет-протоколу (VoIP) или клиент обмена мгновенными сообщениями.
Базовый протокол работает по существу следующим образом: клиент, обычно работающий внутри частной сети , отправляет запрос привязки на STUN-сервер в общедоступном Интернете. Сервер STUN отвечает успешным ответом , который содержит IP-адрес и номер порта клиента, как видно с точки зрения сервера. Результат запутывается посредством эксклюзивного сопоставления или (XOR), чтобы избежать трансляции содержимого пакета шлюзами прикладного уровня (ALG), которые выполняют глубокую проверку пакетов в попытке выполнить альтернативные методы прохождения NAT.
Сообщения STUN отправляются в пакетах протокола пользовательских датаграмм (UDP). Поскольку UDP не обеспечивает надежную транспортировку, надежность достигается за счет повторной передачи запросов STUN, управляемой приложением. Серверы STUN не реализуют никаких механизмов обеспечения надежности своих ответов. [2] Когда надежность является обязательной, можно использовать протокол управления передачей (TCP), но это приводит к дополнительным сетевым издержкам. В приложениях, чувствительных к безопасности, STUN может транспортироваться и шифроваться с помощью Transport Layer Security (TLS).
Приложение может автоматически определить подходящий сервер STUN для связи с конкретным одноранговым узлом, запрашивая у системы доменных имен (DNS) сервера оглушения (для UDP) или оглушения сервера (для TCP/TLS) ( SRV запись ресурса ), например, _stun. _udp.example.com. Стандартный номер порта прослушивания для сервера STUN — 3478 для UDP и TCP и 5349 для TLS. Альтернативно, TLS также может быть запущен на порту TCP, если реализация сервера может демультиплексировать пакеты TLS и STUN. В случае, если сервер STUN не найден с помощью поиска DNS, стандарт рекомендует запрашивать имя домена назначения для записей адреса (A или AAAA), которые будут использоваться с номерами портов по умолчанию. [2]
Помимо использования шифрования протокола с TLS, STUN также имеет встроенные механизмы аутентификации и целостности сообщений с помощью специализированных типов пакетов STUN.
Когда клиент оценил свой внешний адрес, он может использовать его в качестве кандидата для связи с узлами, разделяя внешний адрес NAT, а не частный адрес, который недоступен для узлов в общедоступной сети.
Если оба взаимодействующих узла расположены в разных частных сетях, каждая из которых находится за NAT, узлы должны координировать свои действия, чтобы определить лучший путь связи между ними. Некоторое поведение NAT может ограничивать одноранговое соединение, даже если общедоступная привязка известна. Протокол интерактивного установления соединения (ICE) предоставляет структурированный механизм для определения оптимального пути связи между двумя узлами. Расширения протокола инициации сеанса (SIP) определены для обеспечения возможности использования ICE при настройке вызова между двумя хостами.
Ограничения
[ редактировать ]Трансляция сетевых адресов реализуется с помощью ряда различных схем сопоставления адресов и портов, ни одна из которых не стандартизирована.
STUN не является автономным решением обхода NAT, применимым во всех сценариях развертывания NAT , и не работает правильно со всеми из них. Это инструмент среди других методов и инструмент для других протоколов, связанных с обходом NAT, в первую очередь для обхода с использованием релейного NAT (TURN) и установления интерактивного соединения (ICE).
STUN работает с тремя типами NAT: полный NAT , NAT с ограниченным конусом и NAT с ограниченным портом . В случае NAT с ограниченным конусом или конусом с ограниченным портом клиент должен отправить пакет в конечную точку, прежде чем NAT разрешит пакеты от конечной точки до клиента. STUN не работает с симметричным NAT (также известным как двунаправленный NAT), который часто встречается в сетях крупных компаний. Поскольку IP-адрес STUN-сервера отличается от IP-адреса конечной точки, в случае симметричного NAT сопоставление NAT для STUN-сервера будет отличаться от IP-адреса для конечной точки. TURN предлагает лучшие результаты при использовании симметричного NAT.
См. также
[ редактировать ]- Протокол управления портами (PCP)
- Протокол сопоставления портов NAT (NAT-PMP)
- Протокол устройства интернет-шлюза (UPnP IGD)
- Пробивка отверстий UDP
Ссылки
[ редактировать ]- ^ Jump up to: а б RFC 3489
- ^ Jump up to: а б с д RFC 5389
Внешние ссылки
[ редактировать ]- STUNTMAN — серверное программное обеспечение STUN с открытым исходным кодом.
- Yahoo VoIP STUN на YouTube
- ЭТЮР: обход TCP NAT на Wayback Machine (архивировано 11 сентября 2017 г.)