Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Арсенюк (2008) - Комп'ютерні мережі. Частина 1.doc
Скачиваний:
35
Добавлен:
19.11.2019
Размер:
6.63 Mб
Скачать

Компресія даних

Компресія (стиснення) даних застосовується для скорочення часу передачі даних. Оскільки на компресію даних передавальна сторона витрачає додатковий час, до якого потрібно ще додати аналогічні витрати часу на декомпресію цих даних приймальною стороною, то вигоди від скорочення часу на передачу стиснених даних зазвичай бувають помітні лише для низькошвидкісних каналів. Цей поріг швидкості для сучасної апаратури складає близько 64 Кбит/с. Багато програмних і апаратних засобів КМ здатні виконувати динамічну компресію даних на відміну від статичної, коли дані попередньо стискаються (наприклад, за допомогою архіваторів), а вже потім надсилаються до мережі [1, 17].

На практиці може використовуватися ряд алгоритмів компресії, кожний з який застосується до визначеного типу даних. Деякі модеми надають можливість реалізації адаптивної компресію, при якій в залежності від даних, які передаються, вибирається певний алгоритм компресії. Розглянемо деякі із загальних алгоритмів компресії даних.

Десяткове упакування. Коли дані складаються тільки з чисел, значну економію можна одержати шляхом зменшення кількості використовуваних на цифру біт з 7 до 4, використовуючи просте двійкове кодування десяткових цифр замість коду ASCII. Перегляд таблиці ASCII показує, що старші три біти всіх кодів десяткових цифр містять комбінацію 011. Якщо усі дані в кадрі інформації складаються з десяткових цифр, то, помістивши у заголовок кадру відповідний керуючий символ, можна істотно скоротити довжину кадру.

Відносне кодування. Альтернативою десятковому упакуванню при передачі числових даних з невеликими відхиленнями між послідовними цифрами є передача тільки цих відхилень разом з відомим опорним значенням. Такий метод використовується, зокрема, у розглянутому вище методі цифрового кодування голосу ADPCM, що передає в кожному такті лише різницю між сусідніми вимірами голосу.

Символьне подавлення. Часто передані дані містять велику кількість повторюваних байтів. Наприклад, при передачі чорно-білого зображення чорні поверхні будуть породжувати велику кількість нульових значень, а максимально освітлені ділянки зображення  велику кількість байт, що складаються з усіх одиниць. Передавач сканує послідовність переданих байт і, якщо виявляє послідовність із трьох та більше однакових байт, заміняє її спеціальною трьохбайтовою послідовністю, в якій вказується значення байта, кількість його повторень, а спеціальний керуючий символ, який відзначає початок цієї послідовності.

Коди змінної довжини. У цьому методі кодування використовується той факт, що не всі символи в переданому кадрі зустрічаються з однаковою частотою. Тому в багатьох схемах кодування коди символів, що часто зустрічаються замінюють кодами меншої довжини, а коди, які зустрічаються рідко  кодами більшої довжини. Таке кодування називається також статистичним кодуванням. Оскільки символи мають різну довжину, при передачі кадру можлива лише біт-орієнтована передача.

При статистичному кодуванні коди вибираються так, щоб при аналізі послідовності біт можна було однозначно визначити відповідність визначеної порції біт тому чи іншому символу забороненої комбінації біт. Якщо дана послідовність біт є забороненою комбінацію, то до неї слід додати ще один біт і повторити аналіз.

Взагалі, нерівномірне кодування найефективніше, коли нерівномірність розподілу частот переданих символів досить значна, як при передачі довгих текстових рядків. При передачі двійкових даних, наприклад кодів програм, воно малоефективне, оскільки 8-бітові коди при цьому розподілені майже рівномірно.

Одним з найбільш розповсюджених алгоритмів, на основі яких будуються нерівномірні коди, є алгоритм Хафмана, який дозволяє будувати коди автоматично, на підставі відомих частот символів. Існують адаптивні модифікації методу Хафмана, які дозволяють будувати дерево кодів „на льоту”, по мірі надходження даних від джерела.

Багато моделей комунікаційного обладнання такі як модеми, мости, комутатори і маршрутизатори, підтримують протоколи динамічної компресії, що дозволяє скоротити обсяг інформації, що передається,  у 4, а іноді й у 8 разів. У таких випадках говорять, що протокол забезпечує коефіцієнт стиснення 1:4 або 1:8. Існують стандартні протоколи компресії, наприклад V.42bis, a також велика кількість нестандартних, фірмових протоколів. Реальний коефіцієнт компресії залежить від типу переданих даних, так, графічні і текстові дані зазвичай стискаються добре, а коди програм  гірше [1].