OSI L2: Канальний рівень (Data Link Layer)¶
Що таке канальний рівень?¶
Канальний рівень відповідає за локальну доставку фреймів між пристроями в одній мережі. Якщо L1 передає біти, то L2 організовує їх у фрейми та забезпечує адресацію через MAC-адреси.
┌─────────────────────────────────────────────────────────────────┐
│ L2 = Локальна доставка │
│ │
│ PC1 ──[Фрейм]──▶ Свіч ──[Фрейм]──▶ PC2 │
│ MAC: AA:AA аналізує MAC MAC: BB:BB │
│ і пересилає │
│ на потрібний порт │
└─────────────────────────────────────────────────────────────────┘
PDU на L2: Фрейм (Frame)¶
┌──────────────────────────────────────────────────────────────────┐
│ Ethernet Frame │
├──────────┬──────────┬──────────┬─────────────────────┬──────────┤
│ Preamble │Dest MAC │Src MAC │ Type/ │ Data │ FCS │
│ 8 bytes │ 6 bytes │ 6 bytes │ Length │ 46-1500 B │ 4 bytes │
│ │ │ │ 2 bytes│ │ │
└──────────┴──────────┴──────────┴────────┴────────────┴──────────┘
│ │ │ │ │ │
│ │ │ │ │ └─ Контрольна сума
│ │ │ │ └─ Payload (L3+)
│ │ │ └─ 0x0800=IPv4, 0x86DD=IPv6
│ │ └─ MAC відправника
│ └─ MAC отримувача
└─ Синхронізація
MAC-адреса¶
Структура MAC¶
MAC (Media Access Control) — унікальний ідентифікатор мережевого інтерфейсу.
AA : BB : CC : DD : EE : FF
└───┬───┘ └───────┬───────┘
│ │
OUI (24 біт) Device ID (24 біт)
Виробник обладн. Унікальний номер
Приклади OUI:
| OUI | Виробник |
|-----|----------|
| 00:50:56 | VMware |
| 08:00:27 | VirtualBox |
| DC:A6:32 | Raspberry Pi |
| B8:27:EB | Raspberry Pi |
| 44:38:39 | Cisco |
| E4:8D:8C | MikroTik |
Типи MAC-адрес¶
┌─────────────────────────────────────────────────────────────────┐
│ Unicast: AA:BB:CC:DD:EE:FF → Один конкретний пристрій │
│ (LSB першого байта = 0) │
│ │
│ Multicast: 01:00:5E:xx:xx:xx → Група пристроїв │
│ (LSB першого байта = 1) │
│ │
│ Broadcast: FF:FF:FF:FF:FF:FF → Всі пристрої в сегменті │
└─────────────────────────────────────────────────────────────────┘
Підрівні L2¶
IEEE розділяє L2 на два підрівні:
┌─────────────────────────────────────────────────────────────────┐
│ Data Link Layer │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ LLC (Logical Link Control) - IEEE 802.2 │ │
│ │ • Мультиплексування протоколів │ │
│ │ • Flow control │ │
│ │ • Error notification │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ MAC (Media Access Control) │ │
│ │ • Адресація (MAC addresses) │ │
│ │ • Доступ до середовища (CSMA/CD, CSMA/CA) │ │
│ │ • Frame delimiting │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Ethernet (IEEE 802.3)¶
Еволюція Ethernet¶
| Стандарт | Рік | Швидкість | Середовище |
|---|---|---|---|
| 10BASE5 | 1983 | 10 Mbps | Коаксіал |
| 10BASE-T | 1990 | 10 Mbps | UTP |
| 100BASE-TX | 1995 | 100 Mbps | Cat5 |
| 1000BASE-T | 1999 | 1 Gbps | Cat5e |
| 10GBASE-T | 2006 | 10 Gbps | Cat6a |
| 25GBASE-T | 2016 | 25 Gbps | Cat8 |
CSMA/CD (для Half-Duplex)¶
Carrier Sense Multiple Access with Collision Detection
1. Слухай (Carrier Sense)
Чи хтось передає? ─── Так → Чекай
└── Ні ↓
2. Передавай
Починай передачу ───────▶
3. Виявлення колізії
Інший теж передає? ─── Так → JAM сигнал
Випадкова затримка
Повтор
└── Ні → Успіх!
Сьогодні: Full-duplex з'єднання — колізії неможливі!
Обладнання L2¶
Switch (Комутатор)¶
┌─────────────────────────────────────────────────────────────────┐
│ SWITCH │
│ │
│ Port 1 Port 2 Port 3 Port 4 │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ MAC Address Table │ │
│ ├──────────────────────┬────────────────────────────────────┤ │
│ │ MAC Address │ Port │ │
│ ├──────────────────────┼────────────────────────────────────┤ │
│ │ AA:AA:AA:AA:AA:AA │ 1 │ │
│ │ BB:BB:BB:BB:BB:BB │ 2 │ │
│ │ CC:CC:CC:CC:CC:CC │ 3 │ │
│ │ DD:DD:DD:DD:DD:DD │ 4 │ │
│ └──────────────────────┴────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Як свіч вчиться MAC-адреси?¶
1. PC1 (MAC AA) відправляє фрейм на PC3 (MAC CC)
PC1 ────────▶ Switch
Src: AA │
Dst: CC │
▼
Записує: "AA на Port 1"
Dst CC невідомий → Flood на всі порти
2. PC3 відповідає PC1
PC3 ────────▶ Switch
Src: CC │
Dst: AA │
▼
Записує: "CC на Port 3"
Dst AA відомий → Forward на Port 1
Bridge vs Switch¶
| Характеристика | Bridge | Switch |
|---|---|---|
| Порти | 2-4 | 4-48+ |
| Обробка | Software | Hardware (ASIC) |
| Швидкість | Повільна | Wire-speed |
| Використання | Застаріле | Стандарт |
VLAN (IEEE 802.1Q)¶
Що таке VLAN?¶
VLAN (Virtual LAN) — логічне розділення мережі на ізольовані сегменти.
Фізичний свіч
┌───────────────────────────────────────────────────────────────┐
│ │
│ VLAN 10 (Офіс) │ VLAN 20 (Сервери) │
│ ┌─────┐ ┌─────┐ │ ┌─────┐ ┌─────┐ │
│ │ PC1 │ │ PC2 │ │ │ Srv1│ │ Srv2│ │
│ └──┬──┘ └──┬──┘ │ └──┬──┘ └──┬──┘ │
│ │ │ │ │ │ │
│ └────────┼───────────┼───────────┼────────┘ │
│ │ │ │ │
│ ┌──┴───────────┴───────────┴──┐ │
│ │ SWITCH │ │
│ └─────────────────────────────┘ │
│ │
│ PC1 і PC2 бачать одне одного │
│ Srv1 і Srv2 бачать одне одного │
│ Але VLAN 10 НЕ бачить VLAN 20! │
└───────────────────────────────────────────────────────────────┘
802.1Q Tag¶
Звичайний Ethernet фрейм:
┌──────────┬──────────┬──────────┬──────────────────┬──────────┐
│ Dst MAC │ Src MAC │ Type │ Data │ FCS │
│ 6 bytes │ 6 bytes │ 2 bytes │ │ 4 bytes │
└──────────┴──────────┴──────────┴──────────────────┴──────────┘
802.1Q Tagged фрейм:
┌──────────┬──────────┬──────────┬──────────┬──────────────────┬──────────┐
│ Dst MAC │ Src MAC │ 802.1Q │ Type │ Data │ FCS │
│ 6 bytes │ 6 bytes │ 4 bytes │ 2 bytes │ │ 4 bytes │
└──────────┴──────────┴────┬─────┴──────────┴──────────────────┴──────────┘
│
┌─────┴─────┐
│ TPID │TCI │
│0x8100│ │
└─────┬─────┘
│
┌────────────┴────────────┐
│ PCP │DEI│ VLAN ID │
│ 3b │1b │ 12 bits │
│ │ │ (0-4095) │
└─────────────────────────┘
Access vs Trunk порти¶
Access Port (один VLAN):
┌──────┐ ┌────────┐
│ PC │ ─── Untagged ────▶│ Switch │
└──────┘ VLAN 10 └────────┘
(тег додається
автоматично)
Trunk Port (багато VLAN):
┌────────┐ ┌────────┐
│Switch 1│ ═══ Tagged ════▶│Switch 2│
└────────┘ VLAN 10,20,30 └────────┘
(всі теги
передаються)
Приклад конфігурації¶
MikroTik RouterOS:
# Створення VLAN на інтерфейсі
/interface vlan
add name=vlan10 vlan-id=10 interface=ether1
add name=vlan20 vlan-id=20 interface=ether1
# Призначення IP
/ip address
add address=192.168.10.1/24 interface=vlan10
add address=192.168.20.1/24 interface=vlan20
Linux:
# Створення VLAN
ip link add link eth0 name eth0.10 type vlan id 10
ip link set eth0.10 up
ip addr add 192.168.10.1/24 dev eth0.10
# Або через nmcli
nmcli con add type vlan con-name vlan10 dev eth0 id 10
nmcli con modify vlan10 ipv4.addresses 192.168.10.1/24
STP (Spanning Tree Protocol)¶
Проблема: петлі в мережі¶
Switch A
╱ ╲
╱ ╲
╱ ╲
Switch B ─────── Switch C
│
└── Broadcast storm! Фрейми циркулюють
нескінченно!
Рішення: STP блокує надлишкові шляхи¶
Root Bridge
Switch A
╱ ╲
╱ ╲
╱ ╲
Switch B ╳ Switch C
(blocked port)
Результат: немає петель, є резервний шлях
Стани портів STP¶
┌─────────────────────────────────────────────────────────────────┐
│ Blocking → Listening → Learning → Forwarding │
│ (не вчить (слухає (вчить (працює │
│ MAC, BPDU) MAC) нормально) │
│ не forward) │
│ │
│ Перехід займає ~30-50 секунд (класичний STP) │
└─────────────────────────────────────────────────────────────────┘
Версії STP¶
| Протокол | Стандарт | Конвергенція | Особливості |
|---|---|---|---|
| STP | 802.1D | 30-50 сек | Оригінальний |
| RSTP | 802.1w | 1-2 сек | Швидкий |
| MSTP | 802.1s | 1-2 сек | Multiple instances |
| PVST+ | Cisco | 30-50 сек | Per-VLAN STP |
| Rapid PVST+ | Cisco | 1-2 сек | Per-VLAN RSTP |
ARP (Address Resolution Protocol)¶
Навіщо потрібен ARP?¶
L3 знає IP, але L2 потребує MAC для фрейма.
Задача: Відправити пакет на 192.168.1.20
Проблема: Яка MAC-адреса у 192.168.1.20?
Рішення: ARP запит
Як працює ARP¶
1. ARP Request (Broadcast)
┌─────────────────────────────────────────────────────────────────┐
│ PC1: "Хто має IP 192.168.1.20? Скажіть моєму MAC AA:AA..." │
│ │
│ PC1 ──────▶ Broadcast ──────▶ ВСІ пристрої │
│ (AA:AA) FF:FF:FF:FF:FF:FF │
└─────────────────────────────────────────────────────────────────┘
2. ARP Reply (Unicast)
┌─────────────────────────────────────────────────────────────────┐
│ PC2: "192.168.1.20 — це я! Мій MAC: BB:BB" │
│ │
│ PC2 ──────▶ Unicast ──────▶ PC1 │
│ (BB:BB) to AA:AA (AA:AA) │
└─────────────────────────────────────────────────────────────────┘
3. PC1 зберігає в ARP cache
┌─────────────────────────────────────────────────────────────────┐
│ ARP Cache на PC1: │
│ 192.168.1.20 → BB:BB:BB:BB:BB:BB │
└─────────────────────────────────────────────────────────────────┘
ARP команди¶
Linux:
# Переглянути ARP таблицю
ip neighbor show
# або
arp -a
# Додати статичний запис
ip neighbor add 192.168.1.100 lladdr AA:BB:CC:DD:EE:FF dev eth0
# Очистити кеш
ip neighbor flush all
MikroTik:
/ip arp print
/ip arp add address=192.168.1.100 mac-address=AA:BB:CC:DD:EE:FF interface=ether1
Wi-Fi (IEEE 802.11)¶
Відмінності від Ethernet¶
| Характеристика | Ethernet | Wi-Fi |
|---|---|---|
| Середовище | Кабель | Радіо |
| Колізії | CSMA/CD | CSMA/CA |
| Half/Full duplex | Full | Half |
| Адресація | 2 MAC | 3-4 MAC |
| Безпека | Фізична | Шифрування |
CSMA/CA (Collision Avoidance)¶
1. Слухай ефір
Зайнятий? ─── Так → Чекай + випадкова затримка
└── Ні ↓
2. Відправ RTS (Request to Send)
───────▶ AP
3. Отримай CTS (Clear to Send)
◀─────── AP
4. Передавай дані
═══════▶ AP
5. Отримай ACK
◀─────── AP
802.11 Фрейм (спрощено)¶
┌────────────┬────────┬────────┬────────┬────────┬──────────┬─────┐
│ Frame Ctrl │Duration│ Addr 1 │ Addr 2 │ Addr 3 │ Data │ FCS │
│ 2 bytes │2 bytes │6 bytes │6 bytes │6 bytes │ │4 b │
└────────────┴────────┴────────┴────────┴────────┴──────────┴─────┘
│ │ │
│ │ └── BSSID (AP MAC)
│ └── Source MAC
└── Destination MAC
PPP (Point-to-Point Protocol)¶
Використовується для прямих з'єднань (DSL, діалап, VPN).
┌─────────────────────────────────────────────────────────────────┐
│ PPP Frame │
├───────┬─────────┬──────────┬──────────┬──────────┬─────────────┤
│ Flag │ Address │ Control │ Protocol │ Data │ Checksum │
│ 7E │ FF │ 03 │ 2 bytes │ │ 2 bytes │
└───────┴─────────┴──────────┴──────────┴──────────┴─────────────┘
Особливості:
- Автентифікація (PAP, CHAP)
- Стиснення
- Multilink (об'єднання каналів)
Контроль помилок¶
CRC (Cyclic Redundancy Check)¶
Відправник: Отримувач:
┌──────────────────┐ ┌──────────────────┐
│ Дані: 1010110 │ │ Отримано: │
│ Обчислити CRC │ ───Передача───▶ │ Дані + CRC │
│ CRC: 1101 │ │ Перевірити CRC │
│ Відправити: │ │ CRC OK? → Accept │
│ 1010110 + 1101 │ │ CRC Fail? → Drop │
└──────────────────┘ └──────────────────┘
FCS (Frame Check Sequence)¶
Ethernet FCS (4 bytes):
┌──────────────────────────────────────────┬──────────┐
│ Frame Data │ FCS │
│ (обчислюється CRC-32) │ 4 bytes │
└──────────────────────────────────────────┴──────────┘
Діагностика L2¶
Linux команди¶
# MAC адреса інтерфейсу
ip link show eth0
# ARP таблиця
ip neighbor show
# Bridge (якщо є)
bridge fdb show
# Статистика фреймів
ip -s link show eth0
# VLAN інформація
cat /proc/net/vlan/eth0.10
# Моніторинг трафіку
tcpdump -i eth0 -e # показує MAC адреси
MikroTik команди¶
# MAC таблиця свіча
/interface bridge host print
# ARP таблиця
/ip arp print
# VLAN
/interface vlan print
# Статистика інтерфейсу
/interface ethernet print stats
Wireshark фільтри¶
eth.addr == AA:BB:CC:DD:EE:FF # Конкретний MAC
eth.dst == ff:ff:ff:ff:ff:ff # Broadcast
arp # ARP пакети
vlan.id == 10 # VLAN 10
stp # STP BPDU
Типові проблеми та рішення¶
| Проблема | Симптоми | Рішення |
|---|---|---|
| MAC flapping | Непостійне з'єднання | Перевірити петлі, STP |
| Broadcast storm | Мережа "лягла" | STP, Storm control |
| VLAN mismatch | Нема зв'язку | Перевірити VLAN ID |
| Native VLAN mismatch | Дивна поведінка | Узгодити native VLAN |
| STP loop | Broadcast storm | Увімкнути STP |
| Duplicate MAC | Конфлікти | Змінити MAC або знайти причину |
| ARP spoofing | Безпека | Static ARP, DHCP snooping |
Підсумок¶
Канальний рівень забезпечує:
- MAC-адресацію — унікальна ідентифікація пристроїв
- Фрейми — структуровані блоки даних
- Свічі — intelligent forwarding на основі MAC
- VLAN — логічна сегментація мережі
- STP — запобігання петлям
- ARP — зв'язок IP ↔ MAC
Див. також¶
- Модель OSI — огляд всіх рівнів
- Фізичний рівень — попередній рівень
- Мережевий рівень — наступний рівень
- MikroTik Firewall — практика
Шлях: networking/basics/osi-2-datalink.md