Описание протокола rtp
Протокол реального времени — RTP (Real-Time Transport Protocol) – гарантирует доставку данных одному или более адресатам с временной задержкой, не превышающей заданных пределов, т. е. данные могут быть воспроизведены в реальном масштабе времени. RTP не поддерживает каких-либо механизмов доставки пакетов, обеспечения достоверности передачи или надежности соединения.
При использовании протокола RTP открываются два порта UDP. Один для передачи потока медиаданных – в данном случае – речи (четный номер порта), и один для передачи данных протокола управления (Real-Time Transport Control Protocol -RTCP).
Пакеты RTP содержат следующую информацию: идентификатор отправителя, указывающий, кто из участников генерирует данные, отметки о времени генерирования пакета, чтобы данные могли быть воспроизведены принимающей стороной с правильными интервалами, информация о порядке передачи, а также информация о характере содержимого пакета, например, о типе кодировки речи. Наличие такой информации позволяет оценить величину начальной задержки и объема буфера передачи.
Каждый пакет RTP имеет основной заголовок, а также, возможно, дополнительные поля, специфичные для приложения. Основными смысловыми полями RTP-заголовка являются:
Рayload Тype (7 бит). Поле типа полезной нагрузки. Это поле идентифицирует тип полезной нагрузки и формат данных, включая сжатие и шифрование. При передаче речи в этом поле в виде числового кода указан тип используемого кодека.
Sequence Number (16 бит). Поле порядкового номера. Каждый источник начинает нумеровать пакеты с произвольного номера, увеличиваемого затем на единицу с каждым посланным пакетом данных RTP. Это позволяет обнаружить потерю пакетов и определить порядок пакетов с одинаковой отметкой о времени. Несколько последовательных пакетов могут иметь одну и ту же отметку о времени, если логически они порождены в один и тот же момент, как, например, пакеты, принадлежащие к одному и тому же видеокадру.
Timestamp (32 бита). Поле отметки о времени. Это поле содержит момент времени, в который первый байт данных полезной нагрузки был создан. Единицы, в которых время указывается в этом поле, зависят от типа полезной нагрузки. Значение определяется по локальным часам отправителя.
Synchronization Source (SSRC) Identifier (32 бита). Поле идентификатора источника синхронизации: генерируемое случайным образом число, уникальным образом идентифицирующее источник в течение сеанса и независимое от сетевого адреса.
Contributing source (CSRC) Identifier (32 бита). Список полей идентификаторов источника, "подмешанных" в основной поток, например, с помощью микшера в режиме конференцсвязи.
Описание протокола sdp
Протокол SDP описывает параметры мультимедиа сеанса связи и используется для объявления типа и параметров сессии, в приглашении к началу сеанса связи, и в других мультимедийных сеансах, при установке связи и согласовании параметров. SDP используется в таких протоколах сигнализации VoIP, как SIP, H.323 и других. Он применяется для передачи информации о настройке потока передачи мультимедиа данных от абонента А к абоненту Б.
Сообщения протокола SDP передаются как в запросах, так и в ответах SIP, таких, как INVITE, 200 OK и других, при этом информация SDP вкладывается в содержимое сообщения (Message Body) вслед за заголовком SIP.
SDP-заголовок содержит поля, назначение которых кодируется строчными буквами латинского алфавита.
В процессе установлении телефонного соединения с использованием протокола SIP участвующие стороны должны обменяться сообщениями SDP, включив их в содержимое запросов или ответов SIP. Например, вызывающая сторона может включить сообщение SDP в запрос INVITE, а вызываемая – в ответ 200 OK.
Если в списке кодеков указываются какие-либо нестандартные значения типов, то следом за полем «m» должны передаваться поля «а», указывающие, какой тип кодека и частота дискретизации соответствуют каждому из нестандартных значений.
Сторона, первой пославшая сообщение SDP, включает в него список всех поддерживаемых кодеков. Другая сторона, получив это сообщение, может передавать в ответ в поле «m» только подмножество этого списка, поддерживаемое обеими сторонами.
