← Назад к вопросам

Что такое модель OSI?

2.0 Middle🔥 131 комментариев
#Сети и протоколы

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое модель OSI?

OSI (Open Systems Interconnection) — это семиуровневая модель, разработанная ISO в 1980-х годах для стандартизации сетевого взаимодействия. Она описывает, как данные передаются через сеть, разделяя процесс на логические уровни абстракции. Каждый уровень отвечает за конкретные задачи и взаимодействует только с соседними уровнями.

7 Уровней OSI

7. Application Layer (Прикладной)

  • Взаимодействие пользователя с приложением
  • Протоколы: HTTP/HTTPS, FTP, SMTP, Telnet, DNS, SSH
  • Примеры: веб-браузер, почтовый клиент, файловый обмен
  • В C++: работа с сокетами через высокоуровневые библиотеки
// Пример: HTTP запрос
curl -X GET https://example.com/api

6. Presentation Layer (Представления)

  • Кодирование, шифрование, сжатие данных
  • Преобразование форматов (ASCII → Unicode, JSON → XML)
  • Протоколы: SSL/TLS (шифрование)
  • Примеры: компрессия, кодировка символов
// Шифрование данных перед отправкой
SSL/TLS кодирует HTTP -> HTTPS

5. Session Layer (Сеансовый)

  • Управление сеансами связи
  • Синхронизация, восстановление соединения
  • Протоколы: NFS (Network File System), SQL, RPC
  • Примеры: аутентификация, управление сеансом
// Пример: поддержание сеанса пользователя
SET up session -> Exchange data -> TEAR down

4. Transport Layer (Транспортный)

  • Доставка данных между процессами
  • Управление ошибками, потоком данных, переупорядочением
  • Протоколы: TCP, UDP, SCTP
  • TCP: надёжная, упорядоченная доставка (handshake, acknowledgment)
  • UDP: быстрая, ненадёжная доставка (онлайн игры, VoIP)
// Сокеты TCP (надёжно)
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

// Сокеты UDP (быстро)
socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

3. Network Layer (Сетевой)

  • Маршрутизация пакетов между компьютерами
  • IP адресация и логическая адресация
  • Протоколы: IP (IPv4, IPv6), ICMP (ping), IGP
  • Пакет = IP-заголовок + данные
IP пакет:
[IP Header] [TCP Header] [Data]
 Source IP: 192.168.1.1
 Dest IP: 8.8.8.8
 TTL: 64

2. Data Link Layer (Канальный)

  • Передача по физическому каналу (между соседними узлами)
  • MAC адресация (физические адреса)
  • Обнаружение ошибок, контроль потока
  • Протоколы: Ethernet, WiFi (802.11), PPP
  • Кадр = MAC-заголовок + IP пакет + контрольная сумма
Ethernet кадр:
[MAC dst] [MAC src] [Type] [IP пакет] [CRC]

1. Physical Layer (Физический)

  • Передача битов по кабелю/эфиру
  • Электрические сигналы, модуляция
  • Оборудование: витая пара, оптоволокно, коаксиальный кабель
  • Стандарты: RS-232, USB, Ethernet кабель
Биты: 010110101011
Электрические сигналы: 5V, 0V, 5V, 0V...

Примеры прохождения данных

Клиент отправляет HTTP запрос на сервер:

Прикладной уровень (7):
  "GET /index.html HTTP/1.1\r\n..."
       ↓ (封装ация)
Представления (6):
  [Кодирование в UTF-8]
       ↓
Сеансовый (5):
  [Установка сеанса, аутентификация]
       ↓
Транспортный (4):
  [TCP segment: src_port=12345, dst_port=80, seq=1000]
       ↓
Сетевой (3):
  [IP packet: src=192.168.1.100, dst=93.184.216.34]
       ↓
Канальный (2):
  [Ethernet: src_MAC=AA:BB:CC:DD:EE:FF, dst_MAC=router_MAC]
       ↓
Физический (1):
  [Электрические сигналы через кабель...]

TCP/IP vs OSI

В реальности используется TCP/IP модель (4-5 уровней), которая проще и более практична:

TCP/IP        OSI
Приложение ← 5-6-7 (Application, Presentation, Session)
Транспорт ← 4 (Transport)
Интернет ← 3 (Network)
Канал ← 2 (Data Link)
Физический ← 1 (Physical)

Для C++ разработчика

// Когда писать код для разных уровней:

// Уровень 7 (Application): Бизнес-логика
GET request → обработка запроса → отправка JSON

// Уровень 4 (Transport): Сокеты
std::cout << "Listening on port 8080" << std::endl;
socket.bind(8080);
socket.accept();

// Уровень 3 (Network): IP маршрутизация
// Чтение ip::address из заголовка пакета

// Уровень 1-2 (Link/Physical): Драйверы, редко нужны разработчику

Почему это важно?

  • Стандартизация: понимание уровней упрощает отладку
  • Разделение ответственности: каждый уровень независим
  • Трабуле-шутинг: проблема на уровне 3? → проверь IP маршрутизацию
  • Проектирование: выбор протоколов по требуемому уровню

ОSI модель — база для понимания того, как работают сети и как данные путешествуют от приложения до физического кабеля.

Что такое модель OSI? | PrepBro