Модель OSI и TCP-IP для DevOps
↑ Этап 1 · Фундамент: Linux, Bash, сети
Зачем это на собесе
Универсальный язык диагностики сетевых проблем: «на каком уровне сломалось». Классический вопрос.
Модели
| Уровень OSI | Название | Протоколы, объекты | Уровень TCP/IP |
|---|---|---|---|
| 7 | Прикладной | HTTP, DNS, SSH, SMTP, gRPC | Прикладной |
| 6 | Представления | TLS (условно), кодировки, сжатие | (входит в прикладной) |
| 5 | Сеансовый | сессии, RPC | (входит в прикладной) |
| 4 | Транспортный | TCP, UDP, порты | Транспортный |
| 3 | Сетевой | IP, ICMP, маршрутизация | Интернет |
| 2 | Канальный | Ethernet, MAC, ARP, VLAN, коммутаторы | Канальный |
| 1 | Физический | кабель, Wi-Fi, сигнал | Канальный |
Единицы данных: сегмент (TCP)/датаграмма (UDP), пакет (IP), кадр (Ethernet). Инкапсуляция: данные приложения оборачиваются заголовками на каждом уровне при отправке и распаковываются при получении.
Канальный уровень
- MAC-адрес (48 бит) — адрес интерфейса в локальной сети;
- ARP: «кто имеет IP X?» → соответствие IP↔MAC (
ip neigh); - коммутатор (L2) пересылает кадры по MAC; VLAN разделяет широковещательные домены;
- MTU (обычно 1500), проблемы фрагментации и PMTUD (VPN/туннели дают меньшее MTU).
Сетевой уровень (IP)
- адресация и маршрутизация между сетями (маршрутизатор L3), TTL уменьшается на каждом хопе (защита от петель; основа
traceroute); - ICMP: ping, сообщения об ошибках (destination unreachable, time exceeded);
- IPv4 и IPv6.
Транспортный уровень
TCP: соединение, надёжность, порядок, контроль потока и перегрузки.
Установка (трёхстороннее рукопожатие): SYN → SYN-ACK → ACK
Закрытие: FIN → ACK, FIN → ACK (четырёхстороннее)- повторная передача потерянных сегментов, окна (flow control), алгоритмы перегрузки (CUBIC, BBR);
- состояния: LISTEN, SYN_SENT, ESTABLISHED, TIME_WAIT, CLOSE_WAIT (накопление CLOSE_WAIT — приложение не закрывает сокеты), FIN_WAIT;
- keep-alive, таймауты,
SO_REUSEADDR.
UDP: без соединения, без гарантий, минимальные накладные: DNS, видео, VoIP, QUIC (HTTP/3), игры, мониторинг.
Порты: 0–65535; общеизвестные 0–1023; эфемерные (клиентские) ~32768–60999. Сокет = IP + порт + протокол; соединение = пара сокетов.
Прикладной уровень
HTTP/1.1, HTTP/2, HTTP/3 (QUIC), DNS, TLS, SSH, SMTP, gRPC, WebSocket, MQTT.
Что происходит при запросе https://example.com
- DNS: имя → IP (кэши, резолвер, рекурсия).
- ARP/маршрутизация: до шлюза по MAC, далее маршрутизаторы по IP.
- TCP-рукопожатие (SYN, SYN-ACK, ACK).
- TLS-рукопожатие: версия, шифры, сертификат (проверка цепочки, SNI), ключи.
- HTTP-запрос по зашифрованному каналу, ответ сервера.
- Закрытие или keep-alive (повторное использование соединения).
Диагностика по уровням
| Симптом | Уровень | Инструменты |
|---|---|---|
| Интерфейс down, нет линка | 1–2 | ip link, ethtool |
| Нет ARP-ответа, дубль IP | 2 | ip neigh, arping |
| Нет маршрута, ping не идёт | 3 | ip route, ping, traceroute, mtr |
| Порт закрыт/фильтруется | 4 | ss -tulpn, nc -vz host port, nmap, iptables |
| Таймаут, потери | 3–4 | mtr, tcpdump, ss -ti |
| Ошибка TLS, сертификат | 6/7 | openssl s_client, curl -v |
| DNS не резолвит | 7 | dig, resolvectl |
| HTTP 5xx, медленные ответы | 7 | curl -w, логи, трейсинг |
Метод: снизу вверх (от физики к приложению) или делением пополам («работает ping → работает порт → работает TLS → работает HTTP»).
Вопросы с ответами
Чем TCP отличается от UDP?
TCP — с установлением соединения, гарантией доставки и порядка, контролем потока; UDP — без соединения и гарантий, с минимальной задержкой. TCP для надёжности (HTTP, SSH), UDP для скорости (DNS, видео, QUIC).
Что означает множество соединений в CLOSE_WAIT?
Удалённая сторона закрыла соединение, а локальное приложение не вызвало close: утечка сокетов в приложении.
На каком уровне работает TLS?
Между транспортным и прикладным (условно 5–6): шифрует данные приложения поверх TCP.