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

Метод lzw-сжатия данных

Собственно исходный Lempel/Ziv подход к сжатию данных был впервые обнародован в 1977г., а усовершенствованный (TerryWelch) вариант был опубликован в 1984г.

Данный алгоритм при сжатии (кодировании) динамически создаёт таблицу преобразования строк: определённым последовательностям символов (словам) ставятся в соответствие группы бит фиксированной длины (обычно 12-битные). Таблица инициализируется всеми 1-символьными строками (в случае 8-битных символов — это 256 записей). По мере кодирования, алгоритм просматривает текст символ за символом, и сохраняет каждую новую, уникальную 2-символьную строку в таблицу в виде пары код/символ, где код ссылается на соответствующий первый символ. После того как новая 2-символьная строка сохранена в таблице, на выход передаётся код первого символа. Когда на входе читается очередной символ, для него по таблице находится уже встречавшаяся строка максимальной длины, после чего в таблице сохраняется код этой строки со следующим символом на входе; на выход выдаётся код этой строки, а следующий символ используется в качестве начала следующей строки.

Алгоритму декодирования на входе требуется только закодированный текст, поскольку он может воссоздать соответствующую таблицу преобразования непосредственно по закодированному тексту.

Алгоритм

  1. Инициализация словаря всеми возможными односимвольными фразами. Инициализация входной фразы w первым символом сообщения.

  2. Считать очередной символ K из кодируемого сообщения.

  3. Если КОНЕЦ_СООБЩЕНИЯ, то выдать код для w, иначе

  4. Если фраза wK уже есть в словаре, присвоить входной фразе значение wK и перейти к Шагу 2, иначе выдать код w, добавить wK в словарь, присвоить входной фразе значение K и перейти к Шагу 2.

Конец

Сжатие заголовков tcp/ip-пакетов

 Способ сжатия заголовков TCP/IP-пакетов был предложен Van-Jacobson в RFC 1144и1332. Суть его состоит в следующем. В каждом TCP/IP-пакете IP- и TCP-заголовки составляют в сумме 40 байт, и половина из них в пределах одного TCP/IP-соединения меняется достаточно редко. При низкоскоростном соединении число одновременных TCP/IP-соединений невелико и обычно не превышает двух десятков. Поэтому для каждого TCP/IP-соединения можно выделить слот, который будет содержать всю информацию о состоянии соединения. Это позволяет заменить 20 неизменных байт одним байтом, равным номеру слота. При использовании такой схемы ещё 2 поля по 2 байта каждое становятся избыточными и их можно убрать без потери функциональности. Оставшиеся поля обычно меняются незначительно и для кодирования их изменения требуется меньше байт, чем для кодирования значений этих полей. Кроме того, эти поля обычно меняются не одновременно. Всё это в результате позволяет уменьшить размеры заголовка более половины пакетов до размеров от 3 до 16 байт. Единственное поле, передаваемое всегда в неизменном виде, — это 2 байта контрольной суммы, находящейся в заголовке TCP.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]