Разработчики делят сеть на уровни с целью получить набор хорошо определенных, функциональных модулей. Пять основополагающих принципов, применяющихся при разработке сетевых уровней и соответствующих моделей взаимодействия открытых систем:
1 Новый сетевой уровень вводится, если программное обеспечение требует нового уровня абстракции.
2 Каждый уровень должен выполнять строго определенную функцию.
3 Набор функций, выполняемых сетевым уровнем, приводится в соответствие с общепринятыми международными стандартами.
4 Границы уровня выбираются таким образом, чтобы сделать поток данных через них минимальным.
5 Количество сетевых уровней выбирается достаточно большим, чтобы не заставлять разработчиков приложений размещать различные функции на одном и том же уровне. Наоборот, слишком большое количество уровней приводит к необъятности сетевой архитектуры.
Каждый уровень пользуется различными единицами измерения количества данных. Уровни приложения (прикладной уровень), представления, сеансовый, транспортный используют термин “сообщение” в качестве единицы измерения. Сетевой уровень трактует данные как “пакеты”, а уровень соединения — как “кадр”. Физический уровень имеет дело с битами — последовательностью нулей и единиц.
Модель ISO/OSI не является стандартом — она просто рекомендация для разработчиков. Интернет состоит из сетей, которые легче всего описывать в терминах модели ISO/OSI.
Физический уровень
Физический уровень состоит из физических элементов, служащих непосредственно для передачи информации по сетевым каналам связи. Поэтому линии связи — кабели, соединяющие компьютеры, — относятся к физическому уровню. К нему же относятся и методы электрического преобразования сигналов. Различные сетевые технологии, такие, как Ethernet, ARCNET, или token ring, относятся к физическому уровню, как задающие параметры преобразования сигналов для передачи по сети.
Уровень соединения
Задача уровня соединения — передать данные от физического уровня к сетевому и наоборот. Сетевая карта в вашем компьютере — пример реализации уровня соединения. Как правило, уровень соединения следит за сохранностью данных, передаваемых физическим уровнем.
Сетевой уровень
Сетевой уровень определяет путь следования данных по сети, позволяя им найти получателя. Это значит, что он должен заведовать вопросами возможного столкновения данных и скоростью передачи по сети. Вопросы контроля целостности данных тоже находятся в его компетенции.
Транспортный уровень
Так же, как сетевой уровень доставляет пакеты по сети, транспортный уровень доставляет (транспортирует) данные между самими компьютерами. Как только сетевой уровень доставит данные компьютеру-получателю, в работу вступает транспортный протокол, доставляя данные к прикладному процессу.
Рис. 1.7. Доставка данных сетевым и транспортным уровнями
Сеансовый уровень
Сеансовый уровень в качестве пользовательского сетевого интерфейса решает такие задачи по обработке соединений между процессами и приложениями на различных компьютерах, как обработка имен, паролей и прав доступа.
Во многих сетях перед тем, как получить доступ к приложению, вы должны войти в систему, то есть ввести свое имя (идентификатор пользователя) и пароль. Каждый раз вы начинаете сеанс. Во многих случаях в сеть можно “войти” несколько раз, открыв несколько сеансов одновременно. Каждый раз, открывая новый сеанс, ваш компьютер договаривается с удаленным о возможности соединения до того, как само соединение состоится.
Уровень представления
Уровень представления объединяет в себе некоторые общие функции, которые сеть неоднократно использует при сетевых соединениях. Уровень представления образует интерфейс сети к устройствам компьютера, таким, как принтеры, мониторы, форматы файлов. Короче говоря, уровень представления определяет, как сеть выглядит с точки зрения программного обеспечения и аппаратуры сетевого компьютера.
Уровень приложения
На этом уровне сконцентрированы функции, относящиеся к общесетевым приложениям. Эти функции особенно важны для сетевых разработчиков. Прикладные программы вроде электронной почты или распределенной базы данных — образец использования функций уровня приложения.
Программы, разрабатываемые вами и функционирующие в среде Интернет, являются частью сетевого уровня приложения. Таковыми являются все приложения, написанные для конечных пользователей.