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

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

1.6 Junior🔥 122 комментариев
#API и сетевые протоколы

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

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

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

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

Модель OSI (Open Systems Interconnection) — это семиуровневая модель, которая описывает как данные передаются между компьютерами в сети. Это теоретическая модель, которая помогает понять, как работают сетевые протоколы и где возникают проблемы при передаче данных.

7 уровней модели OSI

  1. Physical (Физический) — кабели, разъёмы, электрические сигналы
  2. Data Link (Канальный) — MAC адреса, Ethernet, Wi-Fi
  3. Network (Сетевой) — IP адреса, маршрутизация, роутеры
  4. Transport (Транспортный) — TCP, UDP, порты, надёжность
  5. Session (Сеансовый) — управление соединениями, сеансами
  6. Presentation (Представления) — шифрование, сжатие, форматирование
  7. Application (Приложения) — HTTP, HTTPS, DNS, FTP, SMTP

Как это работает для Node.js разработчика

Как backend разработчик, ты в основном работаешь с верхними уровнями (Application и Transport):

Уровень 7 (Application)  ← Твой код (HTTP/REST API)
Уровень 6 (Presentation) ← JSON, XML, сжатие
Уровень 5 (Session)      ← WebSockets, поддержка соединения
Уровень 4 (Transport)    ← TCP/UDP (порты 3000, 5432)
Уровень 3 (Network)      ← IP маршрутизация (127.0.0.1)
Уровень 2 (Data Link)    ← Ethernet фреймы
Уровень 1 (Physical)     ← Кабели и электрические сигналы

Пример для Node.js разработчика

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

const http = require('http');

const req = http.request({
  hostname: 'api.example.com',
  port: 80,
  path: '/users/123',
  method: 'GET'
}, (res) => {
  console.log('Response:', res.statusCode);
});

req.end();

TCP vs UDP (Уровень 4 — Transport)

// TCP — надёжная передача (гарантирует доставку)
// Используется для HTTP, HTTPS, SSH
const server = require('net').createServer((socket) => {
  socket.write('Hello from TCP');
});
server.listen(3000);

// UDP — ненадёжная, но быстрая передача (может быть потеря)
// Используется для видео, онлайн игр, DNS
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
server.on('message', (msg, rinfo) => {
  console.log('UDP message:', msg);
});
server.bind(3000);

Где возникают проблемы

// Уровень 7 (Application) — HTTP ошибки
// 404 Not Found, 500 Internal Server Error
fetch('/api/users/999')
  .then(res => res.json()) // Может быть 404

// Уровень 4 (Transport) — Проблемы с портом
// Порт занят, соединение отказано
const server = require('http').createServer();
server.listen(3000); // Если 3000 занят — ошибка EADDRINUSE

// Уровень 3 (Network) — Проблемы с IP
// Хост недоступен, timeout
fetch('http://192.168.1.999:3000/api') // Timeout

HTTPS пример

const https = require('https');
const request = https.request({
  hostname: 'api.example.com',
  port: 443,  // Уровень 4: порт HTTPS
  path: '/users',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  }
});

// Уровень 6 (Presentation) — TLS шифрование
// Уровень 5 (Session) — управление сеансом SSL/TLS
// Уровень 4 (Transport) — TCP с портом 443
// Уровень 3 (Network) — IP маршрутизация

DNS запрос

const dns = require('dns');

dns.lookup('google.com', (err, address) => {
  console.log('IP:', address);
});

// Уровень 7 (Application) — DNS протокол
// Уровень 4 (Transport) — UDP порт 53
// Уровень 3 (Network) — IP адресация

Запомни

  • OSI — это абстракция для понимания сетей
  • TCP/IP модель (5 уровней) — реальная модель, используемая в интернете
  • Как разработчик ты работаешь в основном с Application (7) и Transport (4) уровнями
  • Знание OSI помогает отладить проблемы с сетевыми соединениями, портами и протоколами
  • Физический уровень — это кабель, не твоя забота
  • Транспортный уровень — это TCP/UDP, часто возникают проблемы с портами
Что такое модель OSI? | PrepBro