Не могу понять как работает пробивание 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 совпадает. 

 Доброго дня.  

Когда прокидывал видеопоток через NAT, то выяснил, что там ведь есть 2 типа вещания, один по UDP, другой по TCP.  

По UDP камера отсылала на server\_port пачку каких-то пакетов (возможно тем самым пытаясь продырявить нат), в ответ камера начинала отправлять видеопоток. Похоже, что UDP открывается и со стороны камеры, а не только с клиента. Также как самый простой вариант обхода - перейти на TCP (если камера поддерживает) - покрайне мере так поступает VLC, когда видит, что по UDP ничего нет. client\_port у сервера может значить, к примеру, для другого типа (unicast/multicast). Не очень внятно написал, так как полностью не разобрался, извините. Был бы рад, если разберётесь и прокомментируете. 

> Не могу понять как работает пробивание NAT в RTSP

Да никак, RTSP не имеет к NAT никакого отношения.  
  

> Я не могу понять, откуда сервер берёт client\_port, ведь нужно, что бы клиент за NAT инициализировал передачу, но UDP в этот момент ещё не настроен. Так же что сервер выдаёт в server\_port ? 

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