- •Курсовая Работа
- •Разработка прикладного протокола передачи и приём звукового файла
- •Цель курсового проекта.
- •Задание на курсовое проектирование
- •Решение
- •Структура пакета
- •Буфер и таймеры
- •Алгоритм работы программы
- •Описание программы
- •Инициализация
- •Посылка одного блока данных
- •Функция приема блока
- •Функция воспроизведения блока
Санкт-Петербургский государственный университет телекоммуникаций
им. проф. М.А.Бонч-Бруевича
Курсовая Работа
По дисциплине
«Сети ЭВМ и телекоммуникации»
Разработка прикладного протокола передачи и приём звукового файла
Выполнил: Горшков Д.Н.
Взвод: СПВ-82
2011 г.
Цель курсового проекта.
Разработка протокола верхнего уровня согласно требованиям на курсовое проектирование.
Задание на курсовое проектирование
Разработать структуру протокола согласно функциям (см. табл.1):
Определить функции протокола и структуру пакета разрабатываемого протокола;
Описать поля заголовка разрабатываемого протокола, рассчитать необходимую длину полей заголовка;
Рассчитать необходимую длину буфера на приеме в зависимости от длины пакета и максимально допустимой задержки.
Разработать алгоритмы обработки данных на приеме и передаче и представить их блок-схемы.
Разработать программную реализацию протокола:
Описать разработанные функции, их назначение и структуру;
Описать подключаемые стандартные функции Windows;
Скомпилировать файл .exe, протестировать на реальной сети.
Вариант задания
А |
Б |
тип трафика |
значение поля дополнительной информации |
число посылок пакетов |
длина поля данных пакета, байт |
задержка воспроиз-ведения, пак. |
9 |
2 |
Stream |
символьное с именем файла |
1 |
192 |
14 |
табл.1
Решение
По условию задания необходимо организовать передачу, прием и воспроизведение звукового файл в реальной сети.
В качестве протокола транспортного уровня необходимо использовать UDP.
При продвижении пакетов данных по сети с высокой загруженностью они могут задерживаться в буферах сетевых узлов. Это часто приводит к тому, что доходят они со случайными сдвигами во времени; разброс этих значений носит название джиттера. Для трафика реального времени это представляет существенную проблему, и поэтому восстановление на приёме правильного положения данных пакета на временной оси нужно использовать специальные механизмы.
В курсовом проекте для реализации этих механизмов необходимо 2 условия:
поле данных в пакетах имеет фиксированный размер и содержит строго определённую длительность аудиоданных,
на приёме заранее известны оба параметра.
Выполнение первого условия требует использования голосового кодека с постоянной скоростью кодирования речевого сигнала.
В программе используется кодек, реализующий импульсно-кодовую модуляцию со следующими параметрами: частота дискритизации 48 кГц, точность отсчетов – 8 бит, число каналов – 1 (моно).
На принимающей стороне создаётся циклический буфер (джиттер-буфер), куда помещаются принимаемые аудиоданные. Через промежутки времени, равные длительности воспроизведения одной ячейки буфера, из него считывается новый блок данных и воспроизводится. Между записью блока и его отправкой на воспроизведение вносится задержка, величина которой должна обеспечивать подавление эффекта джиттера. В этом случае даже если пришедшие из сети пакеты записываются в буфер через случайные моменты времени, а воспроизводятся через равные.
Рис.1.2. Организация джиттер-буфера
Как уже отмечалось выше, для трафика реального времени в качестве протокола транспортного уровня применяется UDP. Из-за этого пакеты могут передаваться по сети от источника к получателю разными маршрутами. Это может привести к тому, что пакеты будут приходить не только со случайными сдвигами во времени, но и в неправильном порядке. Для обнаружения таких ситуаций в структуру пакета вводится поле с номером пакета. На передаче пакеты нумеруются по заданному модулю, а на приёме анализируется номер принятого пакета. Если приходит пакет с номером меньшим или равным номеру предыдущего пакета, то такой пакет отбрасывается, в противном случае - отправляется на воспроизведение.
Кроме того, в структуру пакета могут быть введены и другие дополнительные поля для расширения функциональности протокола или решения специфических задач. В данном варианте таким расширением является символьное имя файла, которое задается на передающей стороне.
