Захотелось немного потрогать raw sockets на С, заодно решил описать модель OSI – набросок поста давно лежал в черновиках.
Содержание
Модель OSI
Open System Interconnection (OSI) – набор протоколов, описывающих процесс взаимодействия по сети двух распределённых систем, независимо от их архитектуры.
Модель OSI не является протоколом сама по себе, а описывает структуру для построения гибкой, отказоустойчивой и функционально совместимой сетевой архитектуры.
OSI состоит из семи отдельных, но связанных друг с другом уровней, где каждый уровень имеет представление и может взаимодействовать только с двумя близлежащими уровнями – “выше” и “ниже”, и где каждый описывает часть процесса получения и передачи данных по сети:
- Прикладной уровень (или уровень приложения)
- Представительский уровень
- Сеансовый уровень
- Транспортный уровень
- Сетевой уровень
- Канальный уровень
В свою очередь вся модель OSI может быть резделена на две основные категории:
- Верхний уровень, Host или Data layer, включает в себя протоколы и службы, необходимые для формирования данных и соединения и включает в себя четыре уровня:
- Уровень приложения (Application layer)
- Уровень представления (Presentation layer)
- Сеансовый уровень (Session layer)
- Транспортный уровень (Transport layer)
- Data Transport, или Media уровни – отвечают непосредственно за проверку целостности данных и доставку по сети и включают в себя:
- Сетевой (Network layer) уровень
- Канальный (Data link layer) уровень
- Физический (Physical layer) уровень
Описание уровней модели OSI
Начнём с самого нижнего уровня – физического.
1. Физический (Physical) уровень
- описывает способы передачи данных через физические среды линий связи – сетевые карты, кабеля, радиоволны и т.д., содержит спецификации для коннекторов, кабелей, уровни сигнала
- решает вопросы связанные с топологией сети, синхронизацией, избавлением от помех, скорости передачи данных
- блок данных – биты
2. Канальный (Date Link) уровень
- предназначен для передачи данных в LAN или WAN сетях между устройствами одной сети физического уровня
- может исправлять ошибки, возникшие на физическом уровне
- блок данных – фреймы (frame), или кадры (например – кадр Ethernet, включающий в себя MAC адреса отправителя и получателя)
- включает в себя протоколы:
- Ethernet
- PPP (Point-to-Point Protocol)
- IEEE 802.11 (Wireless LAN)
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