PavelK
@PavelK

Не могу понять как работает пробивание 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 совпадает.
  • Вопрос задан
  • 848 просмотров
Решения вопроса 1
Kalombyr
@Kalombyr
Доброго дня.
Когда прокидывал видеопоток через NAT, то выяснил, что там ведь есть 2 типа вещания, один по UDP, другой по TCP.
По UDP камера отсылала на server_port пачку каких-то пакетов (возможно тем самым пытаясь продырявить нат), в ответ камера начинала отправлять видеопоток. Похоже, что UDP открывается и со стороны камеры, а не только с клиента. Также как самый простой вариант обхода - перейти на TCP (если камера поддерживает) - покрайне мере так поступает VLC, когда видит, что по UDP ничего нет. client_port у сервера может значить, к примеру, для другого типа (unicast/multicast). Не очень внятно написал, так как полностью не разобрался, извините. Был бы рад, если разберётесь и прокомментируете.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Jump
@Jump
Системный администратор со стажем.
Не могу понять как работает пробивание NAT в RTSP
Да никак, RTSP не имеет к NAT никакого отношения.

Я не могу понять, откуда сервер берёт client_port, ведь нужно, что бы клиент за NAT инициализировал передачу, но UDP в этот момент ещё не настроен. Так же что сервер выдаёт в server_port ?
Если вы о подключении к компьютеру за NAT, то в любом случае подключиться к нему невозможно. Подключиться может только он сам.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы