1.3.6. Уровень представления

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

Хорошо спроектированная сеть позволяет использовать разнообразные компьютеры. К ней подключены компьютеры от персональных до мини и больших мэйнфреймов. Внутри каждой группы компьютеров существует еще большее разнообразие дисплеев и принтеров для них. Операционные системы, на которых они работают, также славятся несовместимостью между собой. Уровень представления должен объединять это разнообразие способом, позволяющим сделать вопросы несовместимости “прозрачными” для сети.

К сожалению, в Интернет отсутствует стандартный уровень представления, и его функции приходится выполнять сетевым приложениям. Разрабатывая программы для Интернет, необходимо придерживаться рекомендаций ISO/OSI, касающихся реализации функций уровня представления.

Реализация уровня приложения

Профессиональные программисты часто реализуют функции уровня приложения в виде процедур и библиотек функций, которые вызываются пользователем. Интерфейс прикладного программиста в среде Windows, называющийся Winsock API, существует как раз для того, чтобы выполнять функции уровня представления и сеансового уровня. Так или иначе, уровни, находящиеся ниже уровня представления, служат для выполнения сетевых операций. Уровень представления выполняет полезные, но не критические для сети функции.

Шифрование данных

Цель шифрования данных — их защита. Шифрование данных превращает вразумительное сообщение во что-то неосмысленное перед тем, как передать его по сети. Уровень представления на приемном конце, наоборот, дешифрует сообщения, превращая из абракадабры в осмысленные фразы или выражения. Шифрование на уровне представления гарантирует, что данные пройдут через нижележащие сетевые уровни в уже недоступном для посторонних виде.

Сжатие данных и увеличение пропускной способности

Уровень представления может заниматься сжатием данных. Так же, как и шифрование, сжатие приводит к преобразованию данных. Методика сжатия данных похожа на методику шифрования, однако они преследуют разные цели.

В то время как пользователь шифрует данные, чтобы скрыть их смысл, сжатие данных производится с целью уменьшить их в размере. Приложения, занимающиеся как шифрованием, так и сжатием, широко доступны в Интернет.

Сжимая данные в самом начале иерархии сетевой модели, уровень представления уменьшает их количество, необходимое для транспортировки сетью. Таким образом, сжатие данных приводит к существенному улучшению пропускной способности сети. Пропускная способность сети — это количество данных, способных пройти через сеть за заданный промежуток времени. Один из способов увеличить пропускную способность — использовать несколько сетевых соединений для одного транспортного (больше полос для движения данных). Другой способ увеличить пропускную способность — снизить количество данных, подлежащих транспортировке.

Разнообразные способы сжатия данных применяются при хранении данных на жестких дисках. Проблемы сжатия хранящихся на дисках данных свойственны в полной мере и сетевым компьютерам. Однако сжатие данных в сети важнее всего при передаче данных, так как пропускная способность коммуникационного канала — один из наиболее дорогих факторов. Предположим, что ваше приложение шлет один пакет данных вместо трех, передавая все тот же объем информации. Это значит, что за одно и то же время вы сможете передать в три раза больше информации, а значит, вместо того, чтобы заплатить за три, оплатите только один пакет данных. Итак, вы увеличили производительность сети в три раза. Сетевой трафик также уменьшился, так как, сжав данные в три раза, вы передаете только один пакет вместо трех. Меньше сообщений — меньше трафик. При этом уменьшается вероятность столкновений в сети. Ее снижение, в свою очередь, увеличивает производительность сети.

Отображение данных

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

¾ один и тот же код символа может отображаться по-разному;

¾ разное количество символов на строку;

¾ функция “эхо” (автоматическое отображение на экране введенного с клавиатуры символа);

¾ режим впечатывания символов (раздвижка или печать поверх строки);

¾ символы перевода строки (Line feed) и возврата каретки (Carriage return);

¾ символы табуляции (горизонтальной и вертикальной);

¾ обработка символа “Backspace”;

¾ обработка символа “Form Feed”;

¾ команды позиционирования курсора.

Различные типы компьютеров могут по-разному обрабатывать вышеуказанные параметры мониторов. Хорошо спроектированный уровень представления должен уметь сделать эти различия независимыми от самого сетевого приложения. Различные сети используют протоколы виртуального терминала, делающие проблемы совместимости принтеров и мониторов независимыми от сетевых приложений. Работая в такой сети, вы можете послать данные с разделителями CR и LF на виртуальный терминал, и он правильно отобразит ваши данные. Протоколы, решающие такие проблемы, размещаются на сетевом уровне представления. Уровень представления скрывает различия в работе принтеров, мониторов, структуре файлов компьютера, способные повлиять на правильное воспроизведение доставленной пользователю информации. В составе Интернет уровня представления, по крайней мере, официально не существует. Однако существует протокол Telnet, выполняющий функции виртуального терминала.