What is: модель OSI

Автор: | 03/10/2017

Захотелось немного потрогать raw sockets на С, заодно решил описать модель OSI – набросок поста давно лежал в черновиках.

Модель OSI

Open System Interconnection (OSI) – набор протоколов, описывающих процесс взаимодействия по сети двух распределённых систем, независимо от их архитектуры.

Модель OSI не является протоколом сама по себе, а описывает структуру для построения гибкой, отказоустойчивой и функционально совместимой сетевой архитектуры.

OSI состоит из семи отдельных, но связанных друг с другом уровней, где каждый уровень имеет представление и может взаимодействовать только с двумя близлежащими уровнями – “выше” и “ниже”, и где каждый описывает часть процесса получения и передачи данных по сети:

  • Прикладной уровень (или уровень приложения)
  • Представительский уровень
  • Сеансовый уровень
  • Транспортный уровень
  • Сетевой уровень
  • Канальный уровень

В свою очередь вся модель OSI может быть резделена на две основные категории:

  1. Верхний уровень, Host или Data layer, включает в себя протоколы и службы, необходимые для формирования данных и соединения и включает в себя четыре уровня:
    1. Уровень приложения (Application layer)
    2. Уровень представления (Presentation layer)
    3. Сеансовый уровень (Session layer)
    4. Транспортный уровень (Transport layer)
  2. Data Transport, или Media уровни – отвечают непосредственно за проверку целостности данных и доставку по сети и включают в себя:
    1. Сетевой (Network layer) уровень
    2. Канальный (Data link layer) уровень
    3. Физический (Physical layer) уровень

Описание уровней модели OSI

Начнём с самого нижнего уровня – физического.

1. Физический (Physical) уровень

  • описывает способы передачи данных через физические среды линий связи – сетевые карты, кабеля, радиоволны и т.д., содержит спецификации для коннекторов, кабелей, уровни сигнала
  • решает вопросы связанные с топологией сети, синхронизацией, избавлением от помех, скорости передачи данных
  • блок данных – биты

2. Канальный (Date Link) уровень

  • предназначен для передачи данных в LAN или WAN сетях между устройствами одной сети физического уровня
  • может исправлять ошибки, возникшие на физическом уровне
  • блок данных – фреймы (frame), или кадры (например – кадр Ethernet, включающий в себя MAC адреса отправителя и получателя)
  • включает в себя протоколы:

3. Сетевой (Network) уровень

  • предназначен для определения путей передачи данных, трасляцию логических адресов в физические, определение маршрутизации передачи данных  между двумя узлами физической сети
  • отвечает на запросы обслуживания между Канальным и Транспортным уровнями
  • блок данных – пакеты (например – пакет IP)
  • включает в себя протоколы:

4. Транспортный (Transport) уровень

  • обеспечивает передачу последовательностей данных от отправителя к получателю через одну или более сетей
  • управляет самим потоком данных, осуществляет контроль над ошибками
  • включает в себя протоколы, предоставляющих только основные транспортные функции (без подтверждения приёма данных принимающей стороной), такие как UDP, так и протоколы, которые полностью обеспечивают проверку подлинности и целостности переданных данных (TCP)
  • блоки данных – Segment (TCP) / Datagram (UDP)
  • включает в себя протоколы:

5. Сеансовый (Session) уровень

  • отвечает за установление, координацию и завершение соединений между приложениями
  • блоки данных – сеансовый уровень и уровни выше содержат непосредственно сами данные
  • включает в себя протоколы:

6. Уровень представления (Presentation layer)

  • обеспечивает преобразование протоколов и кодирование/декодирование данных
  • запросы приложений, полученные с прикладного уровня, на уровне представления преобразуются в формат для передачи по сети, а полученные из сети данные преобразуются в формат приложений
  • на этом уровне может осуществляться сжатие/распаковка или шифрование/дешифрование
  • пример протоколов:

7. Уровень приложения (Application layer)

  • верхний и последний (или наоборот – первый) уровень модели, обеспечивающий взаимодействие пользовательских приложений с сетью
  • обеспечивает удалённый доступ к файлам и базам данных, пересылку электронной почты и т.п.
  • формирует запросы к уровню представления
  • включает в себя протоколы:

Модель OSI в картинках

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

Все уровни OSI:

Инкапсуляция заголовков (L – layer, H – header):

 

Инкапсуляция заголовков и данных в 4-х нижних уровнях:

 

Поток данных между хостами в распределённой сети:

И примеры протоколов каждого уровня:

Ссылки по теме

Wiki – OSI model и Сетевая модель OSI

TCP 3-Way Handshake (SYN,SYN-ACK,ACK)

The OSI Model’s Seven Layers Defined and Functions Explained

OSI Seven Layers Model Explained with Examples

How Data Flows through the OSI Layers