OSI Model
Сетевая модель OSI
Сетевая модель OSI (англ. open systems interconnection basic reference model) - концептуальная модель, которая обобщает и стандартизирует представление средств сетевого взаимодействия в телекоммуникационных и компьютерных системах, независимо от их внутреннего устройства и используемых технологий. Модель OSI была разработана в 1984 году Международной организацией стандартизации (ISO). Основной целью ее создания был поиск решения проблемы несовместимости устройств, использующих различные коммуникационные протоколы, путем перехода на единый, общий для всех систем стек протоколов.
Общая характеристика модели
OSI состоит из двух основных частей:
- абстрактная модель сетевого взаимодействия (семиуровневая модель)
- набор специализированных протоколов взаимодействия
Концепция семиуровневой модели была описана в работе Чарльза Бахмана. Данная модель подразделяет коммуникационную систему на уровни абстракции (англ. "abstraction layers"). В модели OSI средства взаимодействия делятся на семь уровней: прикладной, представления, сеансовый, транспортный, сетевой, канальный и физический. Каждый уровень:
- имеет дело с совершенно определенным аспектом взаимодействия сетевых устройств
- обслуживает уровень, находящийся непосредственно над ним, и обслуживается уровнем, находящимся под ним
Протоколы связи же решают две задачи: они обеспечивают взаимодействие между сущностями, находящимися на одном и том же уровне абстракции, но на разных хостах и абстрактно описывают функционал, который (N-1)-ый уровень предоставляет (N)-ому, где N - один из 7 уровней модели OSI. В рамках модели, любой протокол может взаимодействовать либо с протоколами своего уровня (горизонтальные взаимодействия), либо с протоколами уровня на единицу выше/ниже своего уровня (вертикальные взаимодействия).
Каждый из семи уровней характеризуется типом данных (PDU, сокращение от англ. protocol data units), которым данный уровень оперирует и функционалом, который он предоставляет слою, находящемуся выше него. Предполагается, что пользовательские приложения обращаются только к самому верхнему (прикладному) уровню, однако на практике это выполняется не далеко всегда.
Описание уровней модели OSI
Уровень | Функции | PDU | Примеры |
7. Прикладной | Некоторое высокоуровневое API | Данные | HTTP, FTP |
6. Представительский | Представление данных между сетевым сервисом и приложением | Данные | ASCII, EBCDIC, JPEG |
5. Сеансовый | Управление сеансами: продолжительный обмен информацией в виде множества передач между нодами | Данные | RPC, PAP |
4. Транспортный | Надёжная передача сегментов между двумя нодами в сети | Сегменты/Датаграммы | TCP, UDP |
3. Сетевой | Структуризация и управление множеством нод в сети | Пакеты | IPv4, IPv6 |
2. Канальный | Надёжная передача датафреймов между двумя нодами соединённых физическим уровнем | Фреймы | PPP, IEEE 802.2, Ethernet |
1. Физический | Передача и приём потока байтов через физическое устройство | Биты | USB, витая пара |
Прикладной уровень (Application layer)
Самый верхний уровень модели, предоставляет набор интерфейсов для взаимодействия пользовательских процессов с сетью. Единицу информации, которой оперируют три верхних уровня модели OSI, принято называть сообщение (англ. message).
Прикладной уровень выполняет следующие функции:
- Позволяет приложениям использовать сетевые службы (например удалённый доступ к файлам)
- Идентификация пользователей по их паролям, адресам, электронным подписям
- Предоставление приложениям информации об ошибках
- Определение достаточности имеющихся ресурсов
- Управление данными, которыми обмениваются прикладные процессы и синхронизация взаимодействия прикладных процессов
К числу наиболее распространенных протоколов верхних трех уровней относятся:
- FTP (File Transfer Protocol) протокол передачи файлов
- HTTP (HyperText Transfer Protocol)
- TELNET
- RDP (Remote Desktop Protocol)
Уровень представления (Presentation layer)
Уровень представления занимается представлением данных, передаваемых прикладными процессами в нужной форме. Данные, полученные от приложений с прикладного уровня, на уровне представления преобразуются в формат подходящий для передачи их по сети, а полученные по сети данные преобразуются в формат приложений. Также кроме форматов и представления данных, данный уровень занимается конвертацией структур данных, используемых различными приложениями. Другой функцией, выполняемой на уровне представлений, является шифрование данных, которое применяется в тех случаях, когда необходимо защитить передаваемую информацию от доступа несанкционированными получателями.
Как и прикладной уровень, уровень представления оперирует напрямую сообщениями. Уровень представления выполняет следующие основные функции:
- Генерация запросов на установление/завершение сеансов взаимодействия прикладных процессов
- Согласование представления данных между прикладными процессами
- Конвертация форм представления данных
- Шифрование данных
Примеры протоколов данного уровня:
- AFP — Apple Filing Protocol
- ICA — Independent Computing Architecture
- LPP — Lightweight Presentation Protocol
- NCP — NetWare Core Protocol
Сеансовый уровень (Session layer)
Сеансовый уровень контролирует структуру проведения сеансов связи между пользователями. Он занимается установкой, поддержанием и прерыванием сеансов, фиксирует, какая из сторон является активной в данный момент, осуществляет синхронизацию обмена информацией между пользователями, что также позволяет устанавливать контрольные точки.
На сеансовом уровне определяется, какой будет передача между двумя прикладными процессами:
- полудуплексной (процессы будут передавать и принимать данные по очереди)
- дуплексной (процессы будут передавать данные, и принимать их одновременно)
Как 2 уровня над ним, сеансовый уровень использует сообщения в качестве PDU.
Основные функции:
- Установление и завершение на сеансовом уровне соединения между взаимодействующими приложениями
- Синхронизация сеансовых соединений
- Установление в прикладном процессе меток, позволяющих после отказа либо ошибки восстановить его выполнение от ближайшей метки
- Прекращение сеанса без потери данных
- Передача особых сообщений о ходе проведения сеанса
Примеры протоколов сеансового уровня:
- ADSP (AppleTalk Data Stream)
- ASP (AppleTalk Session)
- RPC (Remote Procedure Call)
- PAP (Password Authentication Protocol)
Транспортный уровень (Transport layer)
Транспортный уровень предназначен для передачи надежной последовательностей данных произвольной длины через коммуникационную сеть от отправителя к получателю. Уровень надежности может варьироваться в зависимости от класса протокола транспортного уровня. Так например UDP гарантирует только целостность данных в рамках одной датаграммы и не исключает возможности потери/дублирования пакета или нарушения порядка получения данных; TCP обеспечивает передачу данных, исключающую потерю данных или нарушение порядка их поступления или дублирования, может перераспределять данные, разбивая большие порции данных на фрагменты и наоборот, склеивая фрагменты в один пакет.
Модель OSI определяет пять классов сервиса, предоставляемых транспортным уровнем. Эти виды сервиса отличаются качеством предоставляемых услуг: срочностью, возможностью восстановления прерванной связи, наличием средств мультиплексирования нескольких соединений между различными прикладными протоколами через общий транспортный протокол, а главное способностью к обнаружению и исправлению ошибок передачи, таких как искажение, потеря и дублирование пакетов. В функции транспортного уровня входят:
- Управление передачей по сети и обеспечение целостности блоков данных
- Обнаружение ошибок, частичная их ликвидация
- Восстановление передачи после отказов и неисправностей
- Разбиение данных на блоки определенного размера
- Предоставление приоритетов при передаче блоков (нормальная или срочная)
- Подтверждение передачи.
Транспортный уровень использует сегменты или датаграммы в качестве основного типа данных.
Примеры протоколов:
- TCP (Transmission Control Protocol)
- UDP (User Datagram Protocol)
- SCTP (Stream Control Transmission Protocol)
Сетевой уровень (Network layer)
Сетевой уровень предоставляет функционал для определения пути передачи пакетов данных между клиентами, подключенными к одной коммуникационной сети. На данном уровне решается проблема маршрутизации (выбора оптимального пути передачи данных), трансляцией логических адресов в физические, отслеживанием неполадок в сети.
В рамках сетевого надежность доставки сообщений не гарантируется; сетевой уровень может реализовывать соответствующий функционал, но не обязан это делать. Роль PDU исполняют пакеты (англ. packet).
Сетевой уровень выполняет функции:
- Обнаружение и исправление ошибок, возникающих при передаче через коммуникационную сеть
- Упорядочение последовательностей пакетов
- Маршрутизация и коммутация
- Сегментирование и объединение пакетов
Наиболее часто на сетевом уровне используются протоколы:
- IP/IPv4/IPv6 (Internet Protocol) сетевой протокол стека TCP/IP
- IPX (Internetwork Packet Exchange, протокол межсетевого обмена)
- AppleTalk
Канальный уровень (Data link layer)
Канальный уровень предназначен для передачи данных между двумя узлами, находящихся в одной локальной сети. Роль PDU исполняют фреймы (англ. frame). Фреймы канального уровня не пересекают границ локальной сети, что позволяет данному уровню сосредоточиться на локальной доставке (фактически межсетевой доставкой занимаются более высокие уровни).
Заголовок фрейма формируется из аппаратных адресов отправителя и получателя, что позволяет однозначно определить устройство, которое отправило данный фрейм и устройство, которому он предназначен. При этом никакая часть адреса не может быть использована, чтобы определить некую логическую/физическую группу к которой принадлежит устройство.
Канальный уровень состоит из двух подуровней: LLC и MAC.
Канальный уровень выполняет функции:
- LLC Multiplexing: Интерфейс между сетевым уровнем и MAC, чтобы несколько различных протоколов сетевого уровня могли сосуществовать.
- LLC Flow control: Механизм ограничении скорости передачи данных при медленном приёмнике
- LLC Error control: Определение (и иногда исправление) ошибок с помощью чексумм
- MAC Adressing mechanism: Адрессация на основе уникальных MAC-адресов
- MAC Channel access control mechanism: Предоставляет протокол множественного доступа
Наиболее часто на канальной уровне используются протоколы:
- PPP (Point-To-Point Protocol, протокол прямого соединения между двумя узлами)
- SLIP (Serial Line Internet Protocol, предшественник PPP, который всё ещё используется в микроконтроллерах)
- Ethernet II framing
Физический уровень (Physical layer)
Физический уровень описывает способы передачи потока бит через дата линк, соединяющий сетевые устройства. Поток байт может быть сгруппирован в слова и сконвертирован в физический сигнал, который посылается через некоторое устройство.
Здесь специфицируются такие низкоуровневые параметры как частота, амплитуда и модуляция.
Физический уровень выполняет функции:
- Побитовая доставка
- Физическое кодирование (способ представления данных в виде импульсов)
- LLC Error control: Определение (и иногда исправление) ошибок с помощью чексумм
- MAC Adressing mechanism: Адрессация на основе уникальных MAC-адресов
- MAC Channel access control mechanism: Предоставляет протокол множественного доступа
Наиболее часто на физическом уровне используются протоколы:
- Ethernet physical layer (семейство стандартов с оптическими или электрическими свойствами соединений между устройствами)
- USB
Инкапсуляция
Инкапсуляция (англ. encapsulation) -- метод проектирования протоколов в которой логически независимые функции сети не зависят от реализации нижележащих механизмов с помощью включения этих механизмов в более высокоуровневые объекты.
Физический уровень ответственен за физическую передачу данных. IP предоставляет глобальный способ адресации устройств. TCP добавляет возможность выбора приложения (порт).
Во время инкапсуляции каждый уровень собирает свой собственный PDU, добавляя некоторый заголовок с контрольной информацией к PDU с более высокого уровня.
Пример
Предположим мы отправляем веб-страницу клиенту:
- К содержимому страницы добавляются некоторые HTTP заголовки (тип результата, размер страницы итд)
- Далее добавляются TCP заголовки (номера портов, флаги, чексумма и прочее)
- IP добавляет свой заголовок (флаги, длина пакета, TTL)
- Канальный уровень добавляет заголовок (например MAC адреса получателя и отправителя)
- Наконец, фрейм приходит к получателю и он декапсулирует его в предыдущие PDU и обрабатывает на каждом уровне