Комментарии (2)
🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое модель OSI?
Модель OSI (Open Systems Interconnection) — это семиуровневая модель, которая описывает как данные передаются между компьютерами в сети. Это теоретическая модель, которая помогает понять, как работают сетевые протоколы и где возникают проблемы при передаче данных.
7 уровней модели OSI
- Physical (Физический) — кабели, разъёмы, электрические сигналы
- Data Link (Канальный) — MAC адреса, Ethernet, Wi-Fi
- Network (Сетевой) — IP адреса, маршрутизация, роутеры
- Transport (Транспортный) — TCP, UDP, порты, надёжность
- Session (Сеансовый) — управление соединениями, сеансами
- Presentation (Представления) — шифрование, сжатие, форматирование
- 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, часто возникают проблемы с портами