RTSP 2.0 | Поле заголовка запроса Require

RTSP 2.0 | Поле заголовка запроса Require

Синтаксис строки запроса RTSP имеет следующий вид:

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

Заголовки RTSP в таблице могут быть включены в запрос как request-headers (заголовки запроса), чтобы изменить специфику запроса.

 

Поле заголовка запроса «Require» используется агентами, чтобы гарантировать, что другая конечная точка поддерживает функции, которые требуются в отношении этого запроса. Его также можно использовать для запроса, поддерживает ли другая конечная точка определенные функции; тем не менее, использование общего заголовка Supported (раздел 18.51 из RFC 7826) гораздо более эффективно для этой цели. В случае, если какой-либо из тегов функции, перечисленных в заголовке Require, не поддерживается сервером или клиентом, получающим запрос, он ДОЛЖЕН ответить на запрос с помощью кода ошибки 551 (Option Not Supported — Опция не поддерживается) и включает в себя заголовок Unsupported, в котором перечислены те теги функции, которые НЕ поддерживаются. Этот заголовок не относится к прокси; ту же функциональность в отношении прокси см. в заголовке Proxy-Require (раздел 18.37 из RFC 7826), за исключением прокси-серверов, модифицирующих медиа. Прокси-серверы, модифицирующие мультимедиа, из-за их характера обработки мультимедиа способом, очень похожим на сервер, должны также понимать функции сервера для правильного обслуживания клиента.

Это делается для того, чтобы взаимодействие клиент-сервер продолжалось без задержки, когда все функции понятны обеим сторонам, и замедлялось, только если функции не поняты (как в примере ниже). Для хорошо подобранной пары клиент-сервер взаимодействие происходит быстро, сохраняя двустороннюю передачу, часто требуемую механизмами согласования. Кроме того, он также устраняет неоднозначность состояния, когда клиенту требуются функции, которые сервер не понимает.

Пример (не полный):

C->S: SETUP rtsp://server.com/foo/bar/baz.rm RTSP/2.0
CSeq: 302
Require: funky-feature
Funky-Parameter: funkystuff

S->C: RTSP/2.0 551 Option not supported
CSeq: 302
Unsupported: funky-feature

В этом примере «funky-feature» — это тег функции, который указывает клиенту, что требуется вымышленное поле Funky-Parameter. Взаимосвязь между «funky-feature» и Funky-Parameter не передается через обмен RTSP, поскольку эти отношения являются неизменным свойством «funky-feature» и, следовательно, не должны передаваться при каждом обмене.

Прокси и другие промежуточные устройства ДОЛЖНЫ игнорировать этот заголовок. Если конкретное расширение требует, чтобы промежуточные устройства поддерживали его, расширение должно быть помечено в поле Proxy-Require (см. Раздел 18.37 из RFC 7826). См. Обсуждение в разделе прокси (Раздел 15.1 из RFC 7826) о том, когда следует учитывать, что для функции требуется поддержка прокси.

Синтаксис поля заголовка запроса Require в RTSP 2.0

Require = "Require" HCOLON feature-tag-list

Ссылки

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

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

Ссылка на синтаксис