Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект СК СПС.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
6.19 Mб
Скачать

4.3.2 Протокол udp

В Интернете нашли применение два основных протокола транспортного уровня, один из которых ориентирован на соединение, другой — нет. Протокол TCP, ориентирован на соединение. В IP-телефонии специфика передаваемых данных не позволяет тратить время на установление соединения и подтверждение отправки данных. Поэтому приложения реального времени работают поверх протокола UDP (User Datagram Protocol - пользовательский дейтаграммный протокол), который позволяет приложениям отправлять инкапсулированные IP-дейтаграммы без установления соединений, он обеспечивает негарантированную доставку данных, т.е. не требует подтверждения их получения. UDP описан в RFC 768.

С помощью протокола UDP передаются сегменты, состоящие из 8-байтного заголовка, за которым следует поле полезной нагрузки.

Порт отправителя

Порт получателя

Длина UDP

Контрольная сумма UDP

Данные

Рис. 4.10. Заголовок протокола UDP

Два номера портов служат для идентификации конечных точек внутри отправляющей и принимающей машин. Когда прибывает пакет UDP, содержи­мое его поля полезной нагрузки передается процессу, связанному с портом на­значения. В сущности, весь смысл исполь­зования UDP вместо обычного IP заключается как раз в указании портов источ­ника и приемника. Без этих двух полей на транспортном уровне невозможно было бы определить действие, которое следует произвести с пакетом.

Поле Длина UDP содержит информацию о длине сегмента, включая заголовок и полезную нагрузку. Контрольная сумма UDP не является обязательной. В случаях, когда нужна высокая производительность, что как раз актуально при передаче речевой информации, она не подсчитывается (ее значение равно 0, в то время как настоящая нулевая контрольная сум­ма кодируется всеми единицами).

UDP не зани­мается контролем потока, контролем ошибок, повторной передачей после приема испорченного сегмента. Все это перекладывается на пользовательские процессы.

4.3.3 Протоколы rtp и rtcp

RTP (Real-Time Transport Protocol) - транспорт­ный протокол реального масштаба времени. Он описан в RFC 1889.

RTP принадлежит пользовательскому пространству и работает поверх UDP. Основной функцией RTP является уплотнение нескольких потоков реально­го масштаба времени в единый поток пакетов UDP. Поток UDP можно направ­лять либо по одному, либо сразу по нескольким адресам. Поскольку RTP ис­пользует обычный UDP, его пакеты не обрабатываются маршрутизаторами каким-либо особым образом. Он не имеет собственных механизмов, гарантирующих своевременную доставку пакетов или другие параметры качества услуг.

Протокол RTP предусматривает индикацию типа полезной нагрузки и порядкового номера пакета в потоке, а также применение временных меток. Отправитель помечает каждый RTP-пакет временной меткой, получатель извлекает ее и вычисляет суммарную задержку.

Каждый пакет, посылаемый с потоком RTP, имеет номер, на единицу превы­шающий номер своего предшественника. Такой способ нумерации позволяет получателю определить пропажу пакетов. Повторная передача пакета в данном случае не является хорошим решением, поскольку это займет много време­ни. Поэтому протокол RTP не осуществляет управление потоком, контроль ошибок, и в стан­дарте не предусмотрены никакие подтверждения и механизмы запроса повтор­ной передачи.

Отметки времени ставятся относительно момента начала передачи потока, поэтому важны только интервалы между отметками. Абсолютные значения, по сути дела, никакой роли не играют. Такой механизм позволяет приемнику буферизировать небольшое количество данных и проигрывать каждый отрезок спустя правильное число миллисекунд после на­чала потока независимо от того, когда на самом деле приходит пакет, содержащий данный отрезок. Кроме того за счет временных меток появляется возможность синхрони­зации между собой нескольких потоков. Например, в видеоконференции видеопоток и аудиопоток.

На рис. 4.11 представлен основной заголовок RTP-пакета:

Рис. 4.11 Основной заголовок RTP-пакета

Поля RPT-заголовка имеют следующие значения:

V (2 бита) - поле версии протокола.

Р (1 бит) - поле заполнения. Указывает на то, что размер пакета сделан кратным 4 байтам за счет байтов заполнения. При этом в последнем байте заполнения содержится общее число байтов заполнения.

Х (1 бит) - поле расширения заголовка. Служит для индикации того, что за основным заголовком следует дополнительный заголовок, используемый в экспериментальных расширениях протокола RTP.

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

М (1 бит) - поле маркера. Обычно используется для указания границ потока данных. При передаче речевой информации маркер указывает начало периода активности после периода молчания.

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

Порядковый номер пакета (Sequence Number, 16 битов). Каждый источник начинает нумеровать пакеты с произвольного номера, увеличиваемого затем на единицу с каждым переданным пакетом RTP.

Временной штамп (Timestamp, 32 бита) или отметка времени генерируется источником потока и служит для записи мо­мента создания первого слова пакета.

Идентификатор SSRC (Synchronization Source Identifier, 32 бита) - поле идентификатора источника синхронизации. Псевдослучайное число, которое уникальным образом идентифицирует источник в течение сеанса и не зависит от сетевого адреса.

Идентификатор CSRC (Contributing Source Identifier, 32 бита) - список полей идентификаторов источников, участвующих в создании RTP-пакета. Устройство смешивания информации (микшер) вставляет целый список SSRC идентификаторов источников, которые участвовали в построении данного RTP-пакета. Примером может служить речевая конференция, в которой передаются RTP-пакеты с речью всех участников - каждый со своим идентификатором SSRC. Они-то и образуют список идентификаторов CSRC. Вся конференция имеет общий идентификатор SSRC.

Доставка RTP-пакетов контролируется специальным протоколом RTCP (Real Time Control Protocol) - управляющий транспортный протокол реального времени.

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

RTCP также обеспечивает межпотоковую синхронизацию. Проблема состоит в том, что разные потоки могут использовать разные таймеры с разной степенью разрешения и разными скоростями дрейфа. RTCP помогает решить эти пробле­мы и синхронизировать потоки с разными параметрами. Протокол RTCP специфицирован в RFC-1889.