RTSP 2.0 | Метод TEARDOWN

Методы RTSP 2.0 — это указание того, что должно быть выполнено на ресурсе, идентифицированном Request-URI на основании синтаксиса строки запроса RTSP, определённой как:

<Method> SP <Request-URI> SP <RTSP-Version> CRLF

Методы RTSP 2.0 перечислены в таблице 2.

Два вида применения метода TEARDOWN:

  1. Клиент на сервер
  2. Сервер к клиенту

Клиент на сервер

Запрос клиента к серверу методом «TEARDOWN» останавливает доставку потока для данного URI, освобождая ресурсы, связанные с ним. Запрос TEARDOWN может быть выполнен как для агрегированного, так и для URI управления мультимедиа. Тем не менее, некоторые ограничения применяются в зависимости от текущего состояния. Запрос TEARDOWN ДОЛЖЕН содержать заголовок Session, указывающий, к какому сеансу применяется запрос. Запрос TEARDOWN НЕ ДОЛЖЕН включать заголовок Terminate-Reason.

TEARDOWN, использующий агрегированный управляющий URI или мультимедийный URI в сеансе под неагрегированным управлением (одиночный мультимедийный сеанс), МОЖЕТ быть выполнен в любом состоянии (Ready and Play). Успешный запрос ДОЛЖЕН привести к немедленной остановке доставки мультимедиа и разрушению состояния сеанса. Это ДОЛЖНО быть указано из-за отсутствия заголовка сеанса в ответе.

TEARDOWN, использующий URI мультимедиа в агрегированном сеансе, может быть выполнен только в состоянии Ready. Такой запрос только удаляет указанный мультимедийный поток и связанные с ним ресурсы из сеанса. Это может привести к возвращению сеанса к неагрегированному элементу управления, поскольку он содержит только один носитель после завершения запроса. Сеанс, который будет существовать после обработки запроса TEARDOWN, ДОЛЖЕН в ответе на этот запрос TEARDOWN содержать заголовок Session.

Таким образом, наличие заголовка сеанса указывает получателю ответа, является ли сеанс все еще существующим или был удален.

Пример:

C->S: TEARDOWN rtsp://example.com/fizzle/foo RTSP/2.0
CSeq: 892
Session: OccldOFFq23KwjYpAnBbUr
User-Agent: PhonyClient/1.2

S->C: RTSP/2.0 200 OK
CSeq: 892
Server: PhonyServer/1.0

Сервер к клиенту

Сервер может отправлять запросы методом «TEARDOWN» в направлении сервер-клиент, чтобы указать, что сервер был вынужден завершить текущий сеанс. Это может произойти по нескольким причинам, например, обслуживание сервера без доступной резервной копии или то, что сеанс неактивен в течение продолжительных периодов времени. Причина указана в заголовке Terminate-Reason (Прекращение действия) (раздел 18.52 из RFC 7826).

Когда клиент RTSP поддерживает сеанс RTSP, который в противном случае неактивен в течение продолжительного периода времени, сервер может восстановить ресурсы. Это делается путем выдачи запроса TEARDOWN с установленным значением «Session-Timeout» (Завершение сеанса). Это МОЖЕТ быть сделано, когда клиент был неактивен в сеансе RTSP в течение более одного периода ожидания сеанса (раздел 18.49 из RFC 7826). Однако серверу НЕ РЕКОМЕНДУЕТСЯ выполнять эту операцию до тех пор, пока не истечет 10-кратный период бездействия, превышающий период ожидания сеанса. Оператор сервера RTSP должен сам настроить, как долго этот длительный период бездействия. При выполнении этой конфигурации оператор должен учитывать, что представляет собой обслуживаемый контент и что это означает для продолжительного периода бездействия.

В случае, если серверу необходимо прекратить предоставление услуг установленным сеансам, и в запросе REDIRECT нет сервера, на который можно было бы указать, тогда TEARDOWN ДОЛЖЕН использоваться для завершения сеанса. Этот метод может также использоваться, когда произошли невосстановимые внутренние ошибки, и у сервера нет другого выбора, кроме как прекратить сеансы.

Запрос TEARDOWN ДОЛЖЕН быть сделан только на URI управления агрегатом сеанса (т. е. ему не разрешено завершать отдельные медиапотоки, если он агрегат сеанса), и он ДОЛЖЕН включать следующие заголовки: Session и Terminate-Reason. Запрос применяется только к сеансу, указанному в заголовке сеанса. Сервер может включать сообщение пользователю клиента с параметром «user-msg».

В качестве альтернативы запрос TEARDOWN может быть выполнен с использованием универсального URI «*» и без заголовка сеанса. Объем такого запроса ограничен следующим переходом (то есть агентом RTSP в прямой связи с сервером) и применяется также к соединению RTSP между агентом RTSP следующего перехода и сервером. Этот запрос указывает, что все сеансы и ожидающие запросы, управляемые через соединение, прекращаются. Любые промежуточные прокси должны делать все следующее в указанном порядке:

  1. ответить на запрос TEARDOWN
  2. отключить канал управления от запрашивающего сервера
  3. передать запрос TEARDOWN каждому подходящему клиенту (обычно это клиенты с активным сеансом или без ответа на запрос)

Примечание. Прокси-сервер отвечает за прием ответов TEARDOWN от своих клиентов; эти ответы НЕ ДОЛЖНЫ передаваться ни на исходный сервер, ни на целевой сервер при перенаправлении.

Ссылки на документы

Скачать оригинальный документ на английском языке RFC 7826 — Real-Time Streaming Protocol Version 2.0

Читать полную версию документа на русском языке RFC 7826 — Потоковый протокол в реальном времени (RTSP), версия 2.0

Поделись записью