Я делаю a Java implementation из RFC 3550 (RTP), и я столкнулся с небольшой проблемой:RTP RFC (3550) интерпретация вопрос
В chapter 11 пункте 2 говорится, что:
(.. .) Участник НЕ ДОЛЖЕН предполагать, что исходный порт входящего пакета RTP или RTCP может использоваться в качестве порта назначения для исходящих пакетов RTP или RTCP. Когда пакеты данных RTP отправляются в обоих направлениях, пакеты RTCP SR каждого участника ДОЛЖНЫ быть отправлены на порт, указанный другим участником для приема RTCP. (...)
RTP не имеет механизма для информирования об этих адресах и портах (это зависит от SDP или другого протокола установки), что привело бы меня к пониманию этого параграфа как «если вы получая данные из неизвестного источника, просто отбросьте его ».
Но в section 6.3.3 в основном говорится, что при получении RTP или не-BYE RTCP-пакета с неизвестным SSRC в таблицу должен быть добавлен новый участник.
Так, чтобы подвести итог:
- Вы должны добавить новый участник, когда неизвестный SSRC получен;
- Вы не можете использовать IP/порт источника пакета в качестве адресата пакетов для этого участника;
- SDP не определяет SSRC, который будет использоваться каждым из участников RTP;
- Вы можете вручную добавить участников RTP (обнаруженных другими способами), но вы не знаете, что такое SSRC.
Таким образом, вопрос в миллион долларов: как же он должен обрабатывать неожиданные SSRC?
Большой вопрос заключается в том, как определить состав IP/Port этого нового участника - после его проверки - начиная с раздела 11, параграф 2 гласит, что источник IP/порт «НЕ ДОЛЖЕН» использоваться и «(.. .) пакеты ДОЛЖНЫ быть отправлены в порт, который другой участник указал для приема (...) ». Если это новый, неожиданный участник (что означает, не объявлено через SDP, возможно, кто-то нажал), как указано назначение IP/Port combo приема? – biasedbit