STUN: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 3: Строка 3:
== Обзор протокола ==
== Обзор протокола ==


Такие протоколы, как [[SIP]], используют пакеты UDP <!-- ЭТО НЕ ПРАВДА - SIP это только сигнализация, для передачи голоса используеться RTP--> для передачи голоса, изображения или текста по IP-сетям. К сожалению, если обе общающиеся стороны находятся за NAT’ом, соединение не может быть установлено обычным способом. Именно здесь STUN и оказывается полезным.
Такие протоколы, как [[SIP]], используют пакеты UDP <!-- ЭТО НЕ ПРАВДА — SIP это только сигнализация, для передачи голоса используеться RTP--> для передачи голоса, изображения или текста по IP-сетям. К сожалению, если обе общающиеся стороны находятся за NAT’ом, соединение не может быть установлено обычным способом. Именно здесь STUN и оказывается полезным.


STUN — это клиент-серверный протокол. [[VoIP]]-клиент может включать в себя реализацию клиента STUN, который отправляет запрос серверу STUN. Затем сервер STUN отправляет клиенту обратно информацию о том, каков внешний адрес маршрутизатора NAT, и какой порт открыт на NAT для приема входящих запросов обратно во внутреннюю сеть.
STUN — это клиент-серверный протокол. [[VoIP]]-клиент может включать в себя реализацию клиента STUN, который отправляет запрос серверу STUN. Затем сервер STUN отправляет клиенту обратно информацию о том, каков внешний адрес маршрутизатора NAT, и какой порт открыт на NAT для приема входящих запросов обратно во внутреннюю сеть.
Строка 16: Строка 16:


== Ссылки ==
== Ссылки ==

* [http://nutss.gforge.cis.cornell.edu/stunt.php STUNT] — «STUN and TCP too», расширение STUN для включения функциональности TCP
* [http://nutss.gforge.cis.cornell.edu/stunt.php STUNT] — «STUN and TCP too», расширение STUN для включения функциональности TCP


== Реализация ==
== Реализация ==

* [http://sourceforge.net/projects/stun/ Библиотека, реализующая клиентскую и серверную часть STUN]
* [http://sourceforge.net/projects/stun/ Библиотека, реализующая клиентскую и серверную часть STUN]
* [http://jstun.javawi.de/ JSTUN — Реализация STUN на Java]
* [http://jstun.javawi.de/ JSTUN — Реализация STUN на Java]

Версия от 16:49, 20 декабря 2009

STUN (Simple Traversal of UDP through NATs, Простое прохождение UDP через серверы NAT) — это сетевой протокол, который позволяет клиенту, находящемуся за сервером трансляции адресов (или за несколькими такими серверами) определить свой внешний IP-адрес, способ трансляции адреса и порт во внешней сети, связанный с определенным внутренним номером порта. Эта информация используется для установления соединения UDP между двумя хостами в случае, если они оба находятся за маршрутизатором NAT. Протокол определен в рекомендации RFC 3489.

Обзор протокола

Такие протоколы, как SIP, используют пакеты UDP для передачи голоса, изображения или текста по IP-сетям. К сожалению, если обе общающиеся стороны находятся за NAT’ом, соединение не может быть установлено обычным способом. Именно здесь STUN и оказывается полезным.

STUN — это клиент-серверный протокол. VoIP-клиент может включать в себя реализацию клиента STUN, который отправляет запрос серверу STUN. Затем сервер STUN отправляет клиенту обратно информацию о том, каков внешний адрес маршрутизатора NAT, и какой порт открыт на NAT для приема входящих запросов обратно во внутреннюю сеть.

Ответ также позволяет клиенту STUN определить, какой тип трансляции адреса используется, поскольку различные типы маршрутизаторов NAT обрабатывают входящие UDP пакеты по-разному. STUN работает с тремя из четырех основных типов: полный конус (full cone), ограниченный конус (restricted cone) и конус, ограниченный по порту (port restricted cone). В случае транслятора типа «ограниченный конус» или «порт ограниченного конуса», клиент должен отправить пакет на удаленный узел, прежде чем NAT начнет пропускать пакеты от удаленного узла к клиенту. STUN не будет работать с симметричным NAT’ом (также называемым «двусторонний NAT»), который часто встречается в сетях больших компаний.

Как только клиент обнаружил свой внешний адрес, он может передать его узлу, с которым проходит соединение. Если на пути встречаются трансляторы типа «полный конус», любая из двух сторон может начать общение. Если же выполняется трансляция типа «ограниченный конус» или «порт ограниченного конуса», обе стороны должны начать передачу данных совместно.

Нужно отметить, что методы, описываемые в рекомендации RFC 3489 не обязательно требуют использования протокола STUN; они могут использовать в рамках любого протокола, основанного на UDP.

Соединение с STUN-сервером устанавливается через UDP-порт 3478, однако сервер предлагает клиентам выполнить проверку также и альтернативного IP-адреса и номера порта (у серверов STUN есть два IP-адреса). RFC устанавливает, что выбор порта и IP является произвольным.

Ссылки

  • STUNT — «STUN and TCP too», расширение STUN для включения функциональности TCP

Реализация