Карта, по которой будем разбирать любую сетевую проблему
Компьютерная сеть — узлы, соединённые каналами связи и договорившиеся о правилах обмена данными. Узел — любое устройство с сетевым интерфейсом: компьютер, телефон, принтер, камера, сервер. Канал — медный кабель, оптоволокно или радиоэфир. Правила обмена называются протоколами: они определяют формат сообщений, адреса и порядок действий.
| Вид | Масштаб | Пример |
|---|---|---|
| LAN — локальная | Помещение, здание | Сеть офиса или квартиры за одним роутером |
| WAN — глобальная | Города, страны | Сеть провайдера, связывающая филиалы; интернет |
| WLAN — беспроводная локальная | Помещение | Wi-Fi |
Интернет — не одна сеть, а десятки тысяч независимых сетей провайдеров, компаний и университетов, договорившихся передавать друг другу трафик. Каждая такая сеть со своей политикой маршрутизации называется автономной системой.
Устройства различаются тем, какой адрес они читают, чтобы решить, куда отправить данные.
| Устройство | Читает | Что делает |
|---|---|---|
| Сетевая карта | MAC-адрес | Подключает узел к каналу, принимает кадры, адресованные ему |
| Коммутатор (switch) | MAC-адрес | Соединяет узлы одной локальной сети, пересылает кадр только в нужный порт |
| Маршрутизатор (router) | IP-адрес | Соединяет разные сети и выбирает путь между ними |
| Точка доступа Wi-Fi | MAC-адрес | Подключает беспроводных клиентов к проводной сети |
| Межсетевой экран (firewall) | Адреса, порты, иногда содержимое | Пропускает или блокирует трафик по правилам |
Домашний «роутер» — это все устройства сразу в одной коробке: коммутатор на 4 порта, точка доступа, маршрутизатор в интернет, межсетевой экран, сервер DHCP и DNS-кэш. В офисах и центрах обработки данных эти роли разнесены по отдельным устройствам.
[ПК] [ПК] [принтер] [ноутбук]
\ | / ¦ Wi-Fi
[коммутатор]──────────────[точка доступа]
│
[маршрутизатор + межсетевой экран]
│
сеть провайдера ── интернет ── [сервер сайта]
Задачу передачи данных делят на уровни: каждый решает свою часть и пользуется услугами нижнего. При отправке данные проходят уровни сверху вниз, и каждый добавляет заголовок со своей служебной информацией — как письмо, которое кладут в конверт, конверт — в мешок, мешок — в вагон. Это инкапсуляция. Получатель снимает заголовки в обратном порядке.
Прикладной [ GET /index.html HTTP/1.1 ... ] данные
Транспортный [TCP: порт 52144 → 443][ данные ] сегмент
Сетевой [IP: 192.168.1.10 → 188.120.235.218][TCP][ данные ] пакет
Канальный [Ethernet: MAC → MAC][IP][TCP][ данные ][FCS] кадр
Физический 01001101 00101110 ... биты
Блок данных на каждом уровне называется по-своему: кадр — на канальном, пакет — на сетевом, сегмент (TCP) или датаграмма (UDP) — на транспортном. Каждый уровень читает только свой заголовок: коммутатору неважно, что внутри IP-пакета, а маршрутизатору — какой там HTTP-запрос.
Модель OSI делит сетевое взаимодействие на семь уровней. В чистом виде её протоколы почти не используются, но номера уровней стали общим языком: «проблема на втором уровне» значит «с коммутацией и MAC-адресами», «балансировщик седьмого уровня» — «понимает HTTP».
| № | Уровень OSI | Задача | Протоколы и примеры |
|---|---|---|---|
| 7 | Прикладной | Данные приложения | HTTP, DNS, SMTP, SSH |
| 6 | Представления | Кодирование, шифрование | TLS, кодировки, сжатие |
| 5 | Сеансовый | Управление сеансом | Восстановление сеансов, RPC |
| 4 | Транспортный | Доставка между программами, надёжность | TCP, UDP; порты |
| 3 | Сетевой | Адресация между сетями, маршрут | IP, ICMP; маршрутизатор |
| 2 | Канальный | Доставка в пределах одной сети | Ethernet, Wi-Fi, ARP; коммутатор, MAC |
| 1 | Физический | Передача битов по среде | Кабель, оптика, радио; разъёмы, уровни сигнала |
Интернет построен на стеке TCP/IP, в котором четыре уровня: верхние три уровня OSI объединены в прикладной, а канальный и физический — в уровень сетевого доступа.
| TCP/IP | Соответствует OSI | Что видно в Linux |
|---|---|---|
| Прикладной | 5–7 | curl, dig, ssh — программы и их протоколы |
| Транспортный | 4 | ss -tan — соединения и порты |
| Межсетевой | 3 | ip addr, ip route, ping |
| Сетевого доступа | 1–2 | ip link, ip neigh — интерфейсы и MAC-адреса |
Модель — это карта для диагностики. Неисправность всегда находится на конкретном уровне, и проверять уровни разумно снизу вверх: нет смысла разбираться с сертификатом сайта, если у компьютера нет IP-адреса. Этим порядком будет построен весь курс и модуль 08.
| Симптом | Уровень |
|---|---|
| Не горит индикатор порта, «кабель не подключён» | Физический |
| Компьютеры в одном коммутаторе не видят друг друга, адреса правильные | Канальный: VLAN, коммутатор |
| Локальная сеть работает, интернета нет | Сетевой: шлюз, маршрут, NAT |
ping 77.88.8.8 работает, ping ya.ru — нет | Прикладной: DNS |
| Сайт отвечает по IP, но браузер пишет об ошибке сертификата | Прикладной / представления: TLS |
Соберём уровни в одну историю. Пользователь в офисе вводит в браузере https://nevabit.ru/.
188.120.235.218 (модуль 06).GET / и ответ 200 OK со страницей (модуль 07).На всё это обычно уходит десятая доля секунды. Когда страница не открывается, этот список — готовый план проверки: на каком шаге всё оборвалось.
Команды, с которыми мы будем работать весь курс, уже есть в Debian или ставятся одним пакетом:
$ ip -br link # уровень 2: интерфейсы и MAC-адреса
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
ens18 UP bc:24:11:b2:13:af <BROADCAST,MULTICAST,UP,LOWER_UP>
$ ip -br addr # уровень 3: IP-адреса
lo UNKNOWN 127.0.0.1/8 ::1/128
ens18 UP 192.168.116.34/24 fe80::b641:8f47:5a50:a157/64
$ ss -tan | head -4 # уровень 4: соединения
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 200 127.0.0.1:5432 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
ESTAB 0 80 192.168.116.34:22 192.168.116.10:54159
Дополнительные утилиты курса: sudo apt install curl tcpdump traceroute mtr-tiny ipcalc dnsutils. На основной компьютер поставьте Wireshark (wireshark.org) — программу для просмотра захваченного трафика по уровням.