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

Підсумок

Канальний рівень забезпечує:

  1. MAC-адресацію — унікальна ідентифікація пристроїв
  2. Фрейми — структуровані блоки даних
  3. Свічі — intelligent forwarding на основі MAC
  4. VLAN — логічна сегментація мережі
  5. STP — запобігання петлям
  6. ARP — зв'язок IP ↔ MAC

Див. також

Шлях: networking/basics/osi-2-datalink.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications