Перейти к содержанию

1. Базовая теория сетей


Модели OSI и TCP/IP, инкапсуляция, L2 (Ethernet/MAC/ARP), типы трафика, VLAN, MTU и базовое понимание STP.


Модели OSI и TCP/IP

Семь уровней OSI

Модель OSI (Open Systems Interconnection) описывает семь уровней, через которые проходят данные при передаче по сети. Понимание уровней помогает диагностировать проблемы (где «ломается» — на L2, L3 или L7) и выбирать инструменты (tcpdump для L2–L4, curl/http для L7).

Уровень Название Что происходит Примеры
7 Прикладной Данные приложения (HTTP, DNS, SSH) Запрос к API, веб-страница
6 Представления Кодирование/сжатие (часто объединяют с L7) TLS, сериализация
5 Сеансовый Управление сеансом Сессия, таймауты
4 Транспортный Доставка между приложениями (порты) TCP, UDP
3 Сетевой Маршрутизация, адресация (IP) IP-адреса, маршруты
2 Канальный Кадры в пределах сегмента (L2), MAC Ethernet, коммутатор
1 Физический Сигнал в среде (провод, радиоканал) Кабель, сетевая карта

На каждом уровне к данным добавляется своя «обёртка» (заголовок); при приёме обёртки снимаются по очереди — это инкапсуляция и деинкапсуляция.

Модель TCP/IP и соответствие OSI

Стек TCP/IP — практическая модель, используемая в интернете. Часто её сводят к четырём уровням:

  • Прикладной (L7 OSI) — HTTP, DNS, SSH, gRPC.
  • Транспортный (L4) — TCP (надёжная доставка, порты) и UDP (без установления соединения).
  • Сетевой (L3) — IP (адресация, маршрутизация).
  • Канальный (L2) + физический (L1) — Ethernet, Wi‑Fi, среда передачи.

Пакет при отправке: приложение → L4 (добавляется TCP/UDP заголовок) → L3 (добавляется IP заголовок) → L2 (добавляется Ethernet-кадр с MAC). На приёмной стороне заголовки снимаются снизу вверх.


Ethernet и уровень L2

MAC-адрес

MAC-адрес (Media Access Control) — уникальный 48-битный идентификатор сетевого интерфейса на уровне L2. Записывается как шесть октетов в hex, например 00:1a:2b:3c:4d:5e. Коммутатор доставляет кадр по MAC назначения в пределах одного L2-домена (VLAN).

ARP

ARP (Address Resolution Protocol) — протокол для определения MAC-адреса по известному IP в одной подсети. Узел шлёт ARP-запрос «кто имеет IP X?»; узел с этим IP отвечает своим MAC. Результат кэшируется (ARP-таблица). Команда просмотра кэша на Linux/macOS: arp -a или ip neigh.

Unicast, Broadcast, Multicast

  • Unicast — один отправитель, один получатель (один MAC назначения).
  • Broadcast — кадр всем в L2-сегменте (MAC назначения FF:FF:FF:FF:FF:FF). Пример: ARP-запрос «кто такой 192.168.1.1?».
  • Multicast — группе получателей (специальный диапазон MAC). Используется, например, для стриминга или группового обнаружения сервисов.

Понимание типов трафика помогает настраивать firewall (блокировать broadcast) и объяснять, почему ARP «виден всем» в сегменте.


VLAN (802.1Q)

VLAN (Virtual LAN) — логическое разделение одного физического L2-сегмента на несколько широковещательных доменов. Трафик одного VLAN не попадает в другой на L2; связь между VLAN возможна только через маршрутизатор (L3). Так изолируют отделы, окружения (dev/prod) или арендаторов на одной инфраструктуре.

Тег 802.1Q

Стандарт IEEE 802.1Q вводит в кадр Ethernet тег (4 байта) между полями «Source MAC» и «EtherType»:

  • TPID (Tag Protocol Identifier) — 0x8100, признак тегированного кадра.
  • PCP (Priority Code Point) — приоритет (0–7), для QoS.
  • DEI (Drop Eligible Indicator) — признак «можно отбросить при перегрузке».
  • VID (VLAN Identifier) — номер VLAN, 12 бит → диапазон 1–4094 (0 и 4095 зарезервированы).

Кадр с тегом называют tagged; кадр без тега — untagged. Один физический линк может нести кадры разных VLAN за счёт тегов.

Native VLAN

На trunk-порту один из VLAN обычно объявляется native (часто VLAN 1): кадры этого VLAN идут без тега. Оба конца trunk должны согласовывать, какой VLAN native; иначе возможна утечка трафика между VLAN или потеря связности.

Режимы портов коммутатора

Режим Назначение Теги на кадрах
Access Порт принадлежит одному VLAN. К порту подключают хост (ПК, сервер). Исходящие кадры — без тега (untagged). Входящие без тега считаются принадлежащими этому VLAN.
Trunk Порт переносит несколько VLAN между коммутаторами или к маршрутизатору/серверу. Кадры идут с тегом 802.1Q (tagged); один VLAN может быть native (untagged).

На access-порту коммутатор при отправке к хосту снимает тег; при приёме от хоста (где тега нет) относит трафик к единственному VLAN этого порта. На trunk теги сохраняются, чтобы соседний коммутатор или хост с поддержкой VLAN различал трафик.

VLAN на Linux (subinterface)

В Linux VLAN оформляется как подчинённый интерфейс (subinterface) поверх физического: один физический интерфейс — несколько логических, по одному на VLAN. Ядро добавляет/снимает тег 802.1Q; на подчинённом интерфейсе вешают IP и маршруты.

Создание и поднятие VLAN 10 на eth0:

# Создать интерфейс eth0.10 для VLAN 10
sudo ip link add link eth0 name eth0.10 type vlan id 10

# Назначить адрес и поднять
sudo ip addr add 192.168.10.2/24 dev eth0.10
sudo ip link set eth0.10 up

Проверка:

ip -d link show eth0.10
# в выводе: vlan protocol 802.1Q id 10

Чтобы порт сервера принимал тегированные кадры, на коммутаторе порт должен быть в режиме trunk с разрешённым соответствующим VLAN (и при необходимости правильным native VLAN). Один физический линк от сервера к коммутатору тогда может обслуживать несколько VLAN через разные eth0.<id>.

Зачем это DevOps

В датацентре серверу часто выделяют один физический линк и несколько VLAN (например, frontend, backend, management). На сервере поднимают eth0.10, eth0.20, eth0.30 с разными подсетями; приложения и маршруты привязывают к нужному интерфейсу. Контейнеры и виртуальные машины могут получать интерфейс в нужном VLAN через мост или veth. Ошибки «поднял VLAN, но трафика нет» обычно связаны с тем, что на коммутаторе порт не в trunk или нужный VLAN не разрешён на этом порту.


MTU и jumbo frames

MTU (Maximum Transmission Unit) — максимальный размер полезной нагрузки кадра на L2. Для Ethernet обычно 1500 байт. Если пакет IP больше MTU, он фрагментируется на L3 (фрагментация создаёт нагрузку и усложняет диагностику; предпочтительнее использовать Path MTU Discovery).

Jumbo frames — кадры с увеличенным MTU (например, 9000 байт). Используются в датацентрах для снижения накладных расходов. Важно: все узлы на пути (включая виртуальные коммутаторы и интерфейсы контейнеров) должны поддерживать один и тот же увеличенный MTU, иначе возможны потери или фрагментация.


STP (Spanning Tree Protocol) — на уровне понимания

STP (и его развитие RSTP, MSTP) предотвращает петли на L2: при наличии нескольких путей между коммутаторами часть портов переводится в состояние блокировки, так что логически получается дерево. Для DevOps достаточно понимать:

  • Петли на L2 приводят к лавине кадров и выходу сети из строя.
  • STP автоматически «выключает» избыточные пути; при падении активного пути другой может стать активным.
  • Настройки STP (приоритеты, порты) обычно делают сетевые инженеры; при проблемах с доступностью после изменений в топологии можно запросить проверку STP на коммутаторах.

Практика: базовые команды

Интерфейсы и соседи

# Список интерфейсов, состояние, MAC
ip link

# Краткий вывод адресов
ip -br addr

# ARP-таблица (кэш IP → MAC)
arp -a
# или
ip neigh show

Захват трафика (L2 и выше)

# Захват с отображением MAC (-e) на интерфейсе eth0
sudo tcpdump -e -i eth0

# Только ARP
sudo tcpdump -i eth0 arp

# Первые 100 байт каждого пакета
sudo tcpdump -i eth0 -c 10 -X

!!! tip "Практика"

Чтобы уверенно понимать, как ходят пакеты, полезно один раз «пройти» путь запроса: от приложения (L7) до кадра Ethernet (L2) и обратно — и соотнести это с уровнями OSI и командами (curl → сокет → ядро → IP → Ethernet → среда).

Паттерны и антипаттерны

Паттерн Описание
Диагностика по уровням Сначала проверить L2 (линк, ARP), затем L3 (ping, маршруты), затем L4/L7 (порты, приложение).
Знать MTU на пути При проблемах с большими пакетами или туннелями проверять MTU на всех интерфейсах (ip link, контейнеры, overlay).
Не смешивать VLAN без плана Трафик между VLAN идёт через L3; не ожидать «просто так» связности между разными VLAN на L2.
Антипаттерн Почему плохо Что делать
Игнорировать L2 при сбоях Проблема может быть на линке, STP или VLAN. Проверять ip link, линк на порту, при необходимости привлекать сетевых инженеров.
Включать jumbo frames выборочно Разный MTU на пути ведёт к фрагментации или черным дырам. Вводить jumbo frames только при согласованном MTU на всём пути.

Примеры из production

«Сервер не пингуется» при поднятом приложении

Часто причина на L2 или L3: отключён линк, неверный VLAN на порту, нет маршрута или ARP не резолвится. Последовательность: ip link (состояние интерфейса), ip addr, ip route, arp -a / ip neigh; с другого узла — tcpdump на интерфейсе при ping.

После смены порта или коммутатора пропала связность

Возможны смена VLAN на порту (access vs trunk, другой VLAN ID), блокировка порта STP или отключение линка. Нужна согласованность с сетевым администрированием: какой VLAN и какой режим порта ожидаются.

Контейнеры/overlay и MTU

В overlay-сетях (VXLAN и т.п.) заголовки увеличивают размер кадра. Если MTU физического интерфейса 1500, внутренний MTU для overlay часто уменьшают (например, 1450), иначе пакеты могут отбрасываться. Проверять MTU внутри пода/контейнера и на узлах.


Дополнительные материалы