Протокол V.42bis и скорость порта

При передачи каждого байта из компьютера в модем и обратно вместе с восемью битами данных передаются и ещё два бита — стартовый и стоповый. При использовании протокола V.42 модемы передают данные по блочно, естественно, убирая стартовый и стоповый биты, но внося при этом свои дополнительные байты, такие как идентификатор блока, контрольную сумму, стартовый и стоповый байты. Методом научного тыка было обнаружено, что для того, чтобы модемы передавали на полной скорости, в них нужно вливать данные скоростью минимум в 1.1 раза больше скорости модемного соединения. То есть, при скорости модемного соединения 9600 компьютер должен передавать данные в модем со скоростью 10560, для 14400 — 15840 и так далее. Поэтому, даже если Вы не будете использовать сжатие по протоколу V.42bis, все равно установите скорость порта больше, чем скорость модемного соединения.

Использование сжатия по протоколу V.42bis позволяет увеличить скорость прокачки по линии до четырёх раз. Естественно, наибольший эффект достигается при передаче текстов, например, HTML. Хуже обстоит дело с бинарными файлами и ещё хуже с уже сжатыми файлами. Если модем соединяется на скорости до 14400, то имеет смысл установить скорость порта 38400, при соединении от 14400 до 28800 — 57600. Ну, и наконец, для скоростей выше 28800, скорость порта нужно увеличить до 115200. Например, у меня при светлой луне и тихой погоде при соединении на скорости 49333 в мою сторону по протоколу V.90/V.42bis текстовые файлы качаются со скоростью до 115200.

Правда, стоит учитывать одно обстоятельство — для надёжной работы на скоростях выше 38400 последовательный порт должен иметь FIFO, то есть, FreeBSD должна опознавать его, как 16550A или как-то ещё, но ни в коем случае, как 8250 или 16450.

 

3 Рассмотрение других протоколов

 

3.1 Протокол MNP5

 

Протокол MNP 5 реализует комбинацию адаптивного кодирования с применением кода Хаффмена и группового кодирования. При этом хорошо поддающиеся сжатию данные уменьшают свой исходный объем примерно на 50% и, следовательно, реальная скорость их передачи возрастает вдвое по сравнению с номинальной скоростью передачи данных модемом.

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

Согласно данного метода система группового кодирования проверяет проходящий поток данных. Алгоритм остается пассивным до тех пор, пока в этом потоке не обнаружатся три одинаковых смежных символа. После этого алгоритм начинает счет и удаляет из потока данных до 250 одинаковых следующих друг за другом символов. Счетный байт посылается вслед за тремя исходными символами, и передача продолжается. На рис. 8.2 показан пример группового кодирования потока данных.

Способность метода группового кодирования сжимать длинные последовательности очевидна. Тем не менее, рис. 8.2 иллюстрирует также одну из слабостей данного алгоритма. Кодирование группы из трех символов, наоборот, расширяет поток данных.

На втором этапе сжатия данных протокол MNP5 использует адаптивное кодирование на основе метода Хаффмена, известное также как адаптивное частотное кодирование. Этот способ кодирования основан на предположении,

 


Рис. 8.2. Групповое кодирование по протоколу MNP5

 

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

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

В протоколе MNP5 определяются 256 лексем для всех возможных 8-разрядных величин (октетов). Лексема состоит из 3-разрядного префикса (заголовка) и суффикса (тела, или основы), который может включать от 1 до 8 разрядов. Как передатчик, так и приемник инициализируют свои символьно-лексемные таблицы в соответствии с табл. 8.9. Первая и последняя записи

 

Таблица 8.9. Карта символьно-лексемного кодирования в начале процедуры уплотнения данных

 

(строки) этой таблицы содержат наиболее и наименее часто встречающиеся октеты, соответственно.

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