Не могу понять как работает пробивание NAT в RTSP (или как обходить правильно)? Приветствую!
Пытаюсь сделать клиент-сервера RTSP протокола.
Смотря логи обмена между камерой (камера выступает сервером) и клиентом (клиент сейчас VLC) вижу примерно такую картину:
Есть два протокола, один транспортный (UDP), другой командный (TCP).
Клиент делает по командному протоколу запрос на начало передачи данных (SETUP), где указывает свой внутренний IP и порт UDP (client_port 2200), на котором он ожидает эти данные.
Сервер в ответ ему отдаёт какой-то client_port (например 5200) и server_port (например 3005)
Я не могу понять, откуда сервер берёт client_port, ведь нужно, что бы клиент за NAT инициализировал передачу, но UDP в этот момент ещё не настроен. Так же что сервер выдаёт в server_port ?
Мучаю гугл, но эти моменты не обсуждаются.
P.S. если не за NAT, то у клиента в запросе и у сервера в ответе client_port совпадает.

21 Авг 2019 в 06:37
292 +1
0
Ответы
1

Проблема, с которой вы столкнулись, связана с тем, что NAT (Network Address Translation) усложняет установление прямого соединения между клиентом и сервером в случае использования протокола RTSP.

Когда клиент делает запрос на начало передачи данных (SETUP) с указанием своего внутреннего IP и порта UDP, сервер возвращает указанный клиентом порт (client_port) и порт сервера (server_port), на котором клиент должен ожидать данные.

Однако, в случае, когда клиент находится за NAT, сервер не сможет напрямую узнать его внешний IP и порт, так как NAT переписывает адреса и порты в пакетах. Для обхода этой проблемы вам потребуется использовать технику STUN (Session Traversal Utilities for NAT), которая позволяет определить внешний IP и порт клиента через сервер STUN.

Таким образом, вы можете использовать STUN для определения внешнего IP и порта клиента и передать их серверу RTSP, чтобы установить правильное соединение через NAT.

Надеюсь, что это поможет вам разобраться с проблемой пробивания NAT в RTSP. Если у вас остались какие-либо вопросы, не стесняйтесь задавать.

20 Апр 2024 в 13:15
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир