OSI L3: Мережевий рівень (Network Layer)

Що таке мережевий рівень?

Мережевий рівень відповідає за логічну адресацію (IP) та маршрутизацію — знаходження шляху від джерела до призначення через різні мережі.

┌─────────────────────────────────────────────────────────────────┐
│  L2 = Локальна доставка (один сегмент)                         │
│  L3 = Глобальна доставка (між мережами)                        │
│                                                                 │
│  PC1 ─────▶ Router A ─────▶ Router B ─────▶ Server             │
│  10.0.1.5    10.0.1.1       8.8.4.1         8.8.8.8            │
│              192.0.2.1      192.0.2.2                           │
│                                                                 │
│  Роутери знаходять шлях на основі IP-адрес                     │
└─────────────────────────────────────────────────────────────────┘

PDU на L3: Пакет (Packet)

┌─────────────────────────────────────────────────────────────────┐
│                        IP Packet                                │
├──────────────────────────────────┬──────────────────────────────┤
│         IP Header                │           Data               │
│         20-60 bytes              │        (L4 segment)          │
└──────────────────────────────────┴──────────────────────────────┘

IPv4 Header

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
┌───────────────┬───────────────┬───────────────────────────────┐
│Version│  IHL  │    DSCP   │ECN│          Total Length         │
├───────────────┴───────────────┼─────┬─────────────────────────┤
│         Identification        │Flags│    Fragment Offset      │
├───────────────┬───────────────┼─────┴─────────────────────────┤
│      TTL      │   Protocol    │         Header Checksum       │
├───────────────┴───────────────┴───────────────────────────────┤
│                       Source Address                          │
├───────────────────────────────────────────────────────────────┤
│                    Destination Address                        │
├───────────────────────────────────────────────────────────────┤
│                    Options (якщо IHL > 5)                     │
└───────────────────────────────────────────────────────────────┘

Важливі поля

Поле Розмір Опис
Version 4 біти 4 для IPv4, 6 для IPv6
TTL 8 біт Time To Live — кількість хопів
Protocol 8 біт 1=ICMP, 6=TCP, 17=UDP
Source IP 32 біти Адреса відправника
Destination IP 32 біти Адреса отримувача

TTL (Time To Live)

Пакет з TTL=3:

PC ──[TTL=3]──▶ R1 ──[TTL=2]──▶ R2 ──[TTL=1]──▶ R3 ──[TTL=0]──▶ DROP!
                 │                │                │
             TTL - 1          TTL - 1          TTL - 1
                                                   │
                                        ICMP "Time Exceeded"
                                        надсилається назад

Типові значення TTL:
- Linux: 64
- Windows: 128
- Cisco: 255


IP-адресація

IPv4 структура

    192    .    168    .    1      .    100
 ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
 │11000000│.│10101000│.│00000001│.│01100100│
 └────────┘ └────────┘ └────────┘ └────────┘
     8 біт      8 біт      8 біт      8 біт
                    = 32 біти

Класи адрес (історичний підхід)

┌────────┬─────────────────────────────┬────────────────┬──────────┐
│ Клас   │ Перший октет │ Діапазон    │ Маска за замовч│ Хостів   │
├────────┼──────────────┼─────────────┼────────────────┼──────────┤
│ A      │ 0xxxxxxx     │ 1-126       │ /8             │ 16M      │
│ B      │ 10xxxxxx     │ 128-191     │ /16            │ 65K      │
│ C      │ 110xxxxx     │ 192-223     │ /24            │ 254      │
│ D      │ 1110xxxx     │ 224-239     │ Multicast      │ —        │
│ E      │ 1111xxxx     │ 240-255     │ Reserved       │ —        │
└────────┴──────────────┴─────────────┴────────────────┴──────────┘

Сьогодні: Використовується CIDR (безкласова адресація)

Приватні адреси (RFC 1918)

┌─────────────────────────────────────────────────────────────────┐
│  10.0.0.0/8        │ 10.0.0.0 – 10.255.255.255   │ 16M адрес   │
│  172.16.0.0/12     │ 172.16.0.0 – 172.31.255.255 │ 1M адрес    │
│  192.168.0.0/16    │ 192.168.0.0 – 192.168.255.255│ 65K адрес  │
└─────────────────────────────────────────────────────────────────┘

Спеціальні адреси

Адреса Призначення
0.0.0.0/8 "This network"
127.0.0.0/8 Loopback (localhost)
169.254.0.0/16 Link-local (APIPA)
224.0.0.0/4 Multicast
255.255.255.255 Broadcast

Маршрутизація

Routing Table

Кожен роутер має таблицю маршрутів:

┌─────────────────────────────────────────────────────────────────┐
│                     Routing Table                               │
├───────────────────┬───────────────┬───────────────┬─────────────┤
│   Destination     │   Gateway     │   Interface   │   Metric    │
├───────────────────┼───────────────┼───────────────┼─────────────┤
│ 192.168.1.0/24    │ 0.0.0.0       │ eth0          │ 0           │
│ 192.168.2.0/24    │ 192.168.1.2   │ eth0          │ 10          │
│ 10.0.0.0/8        │ 192.168.1.3   │ eth0          │ 20          │
│ 0.0.0.0/0         │ 192.168.1.1   │ eth0          │ 100         │
└───────────────────┴───────────────┴───────────────┴─────────────┘
                          │
                          └── Default Gateway (маршрут за замовчуванням)

Логіка вибору маршруту

1. Longest Prefix Match (найбільш специфічний маршрут)

   Пакет до 192.168.1.50:

    192.168.1.0/24   Вибрано (більш специфічний)
    192.168.0.0/16
    0.0.0.0/0

2. Якщо однакова специфічність  менший Metric

Статична vs Динамічна маршрутизація

┌─────────────────────────────────────────────────────────────────┐
│  СТАТИЧНА                        │  ДИНАМІЧНА                  │
├──────────────────────────────────┼─────────────────────────────┤
│ Ручне налаштування               │ Автоматичне оновлення       │
│ Не змінюється                    │ Адаптується до змін         │
│ Підходить для малих мереж        │ Для складних топологій      │
│ Менше навантаження               │ Використовує ресурси        │
│                                  │                             │
│ Приклад:                         │ Протоколи:                  │
│ ip route add 10.0.0.0/8          │ - RIP (застарілий)          │
│   via 192.168.1.1                │ - OSPF (найпопулярніший)    │
│                                  │ - BGP (між провайдерами)    │
│                                  │ - EIGRP (Cisco)             │
└──────────────────────────────────┴─────────────────────────────┘

Приклад маршрутизації пакета

Пакет: 192.168.1.100  8.8.8.8

┌─────────────────────────────────────────────────────────────────┐
 Крок 1: PC перевіряє  чи 8.8.8.8 в локальній мережі?          
         192.168.1.100/24 — ні, 8.8.8.8 не в 192.168.1.0/24     
          Відправляємо на Default Gateway (192.168.1.1)        
                                                                 
 Крок 2: Router 1 дивиться routing table                        
         8.8.8.8  next-hop 203.0.113.1                         
                                                                 
 Крок 3: Router 2... і так далі до 8.8.8.8                      
└─────────────────────────────────────────────────────────────────┘

ICMP (Internet Control Message Protocol)

ICMP використовується для діагностики та повідомлень про помилки.

Типи ICMP повідомлень

Type Code Опис
0 0 Echo Reply (ping відповідь)
3 0 Destination Unreachable - Network
3 1 Destination Unreachable - Host
3 3 Destination Unreachable - Port
8 0 Echo Request (ping запит)
11 0 Time Exceeded (TTL = 0)

Ping

$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=12.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=11.8 ms
                                                                                └── RTT (Round Trip Time)
                                  └── TTL що залишився
        └── Розмір відповіді

Traceroute

Використовує TTL для виявлення шляху:

$ traceroute 8.8.8.8
 1  192.168.1.1    1.234 ms    # TTL=1, перший роутер
 2  10.0.0.1       5.678 ms    # TTL=2, другий роутер
 3  203.0.113.1   10.123 ms    # TTL=3, третій роутер
 4  8.8.8.8       12.345 ms    # Досягли мети

Як працює:
┌─────────────────────────────────────────────────────────────────┐
│ TTL=1: PC  R1 (TTL=0, ICMP Time Exceeded)                     │
│ TTL=2: PC  R1  R2 (TTL=0, ICMP Time Exceeded)                │
│ TTL=3: PC  R1  R2  R3 (TTL=0, ICMP Time Exceeded)           │
│ TTL=4: PC  R1  R2  R3  8.8.8.8 (ICMP Echo Reply)           │
└─────────────────────────────────────────────────────────────────┘

NAT (Network Address Translation)

Навіщо потрібен NAT?

Проблема: IPv4 адрес недостатньо (4.3 млрд)

Рішення: NAT дозволяє багатьом приватним IP
         використовувати одну публічну адресу

┌─────────────────────────────────────────────────────────────────┐
  Приватна мережа            Інтернет                          
  192.168.1.0/24                                               
                                                               
  PC1: 192.168.1.10 ─────┐                                     
  PC2: 192.168.1.20 ─────┼─┤ Router ├───▶ 203.0.113.1 ──▶ WWW   
  PC3: 192.168.1.30 ─────┘   (NAT)     (Публічна IP)           
                                                               
  Всі виходять в інтернет                                      
  через одну публічну IP                                       
└─────────────────────────────────────────────────────────────────┘

Типи NAT

SNAT (Source NAT) / Masquerade

Вихідний трафік:

Оригінальний пакет:           Після NAT:
┌─────────────────────┐       ┌─────────────────────┐
│ Src: 192.168.1.10   │  →→→  │ Src: 203.0.113.1    │
│ Dst: 8.8.8.8        │       │ Dst: 8.8.8.8        │
│ SrcPort: 54321      │       │ SrcPort: 12345      │
└─────────────────────┘       └─────────────────────┘

NAT таблиця:
┌─────────────────────┬─────────────────────┐
│ Internal            │ External            │
│ 192.168.1.10:54321  │ 203.0.113.1:12345  │
└─────────────────────┴─────────────────────┘

DNAT (Destination NAT) / Port Forwarding

Вхідний трафік (Port Forwarding):

Зовнішній запит:              Після DNAT:
┌─────────────────────┐       ┌─────────────────────┐
│ Src: 1.2.3.4        │  →→→  │ Src: 1.2.3.4        │
│ Dst: 203.0.113.1:80 │       │ Dst: 192.168.1.10:80│
└─────────────────────┘       └─────────────────────┘

Правило: Порт 80 на публічній → 192.168.1.10:80

NAT в Linux (iptables)

# SNAT / Masquerade
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# DNAT / Port Forward
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.10:80

# Увімкнути forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

NAT в MikroTik

# Masquerade
/ip firewall nat
add chain=srcnat out-interface=ether1 action=masquerade

# Port Forward
/ip firewall nat
add chain=dstnat protocol=tcp dst-port=80 action=dst-nat to-addresses=192.168.1.10

Фрагментація

Навіщо потрібна?

Різні мережі мають різний MTU (Maximum Transmission Unit).

MTU = 1500 bytes (Ethernet)     MTU = 1400 bytes (VPN)

Пакет 1500 bytes ──────▶ VPN tunnel ──────▶ ???
                              │
                    Занадто великий!
                              │
                              ▼
                    Фрагментація або Drop

Процес фрагментації

Оригінальний пакет (3000 bytes):
┌──────────────────────────────────────────────────────────────────┐
│ IP Header │                    Data (2980 bytes)                 │
└──────────────────────────────────────────────────────────────────┘

Після фрагментації (MTU=1500):
┌───────────────────────────────┐
│ IP Header │ Data (1480 bytes) │ Fragment 1 (offset=0, MF=1)
└───────────────────────────────┘
┌───────────────────────────────┐
│ IP Header │ Data (1480 bytes) │ Fragment 2 (offset=185, MF=1)
└───────────────────────────────┘
┌───────────────────────────────┐
│ IP Header │ Data (20 bytes)   │ Fragment 3 (offset=370, MF=0)
└───────────────────────────────┘

MF = More Fragments flag
offset = position / 8

Path MTU Discovery

# Знайти MTU шляху
ping -M do -s 1472 8.8.8.8
# -M do = don't fragment
# -s 1472 = розмір даних (1472 + 28 IP+ICMP = 1500)

# Якщо "Frag needed" — зменшити розмір

Обладнання L3

Router (Маршрутизатор)

┌─────────────────────────────────────────────────────────────────┐
│                           ROUTER                                │
│                                                                 │
│  ┌─────────┐    ┌─────────────────────────┐    ┌─────────┐      │
│  │ Port 1  │    │     Routing Engine      │    │ Port 2  │      │
│  │10.0.1.1 │    │  ┌─────────────────┐    │    │10.0.2.1 │      │
│  └────┬────┘    │  │  Routing Table  │    │    └────┬────┘      │
│       │         │  │  10.0.1.0/24→P1 │    │         │           │
│       │         │  │  10.0.2.0/24→P2 │    │         │           │
│       │         │  │  0.0.0.0/0→P2   │    │         │           │
│       │         │  └─────────────────┘    │         │           │
│       │         └─────────────────────────┘         │           │
│       │                    │                        │           │
│  LAN 10.0.1.0/24          CPU                  WAN/ISP          │
└───────┴───────────────────────────────────────────────┴─────────┘

L3 Switch

┌─────────────────────────────────────────────────────────────────┐
  L3 Switch = Switch + Router                                    
                                                                 
   Switching між портами (L2)  hardware, wire-speed           
   Routing між VLAN (L3)  hardware, fast                      
                                                                 
  Ідеально для:                                                  
   Inter-VLAN routing                                           
   Великих LAN                                                  
   Data centers                                                 
└─────────────────────────────────────────────────────────────────┘

Діагностика L3

Linux команди

# Переглянути IP адреси
ip addr show

# Routing table
ip route show

# Перевірити з'єднання
ping 8.8.8.8
ping -c 4 192.168.1.1

# Traceroute
traceroute 8.8.8.8
# або
mtr 8.8.8.8  # інтерактивний

# ARP таблиця (зв'язок L2-L3)
ip neighbor show

# NAT таблиця (якщо є)
conntrack -L

# Статистика IP
netstat -s | head -50

MikroTik команди

# IP адреси
/ip address print

# Routing table
/ip route print

# Ping
/ping 8.8.8.8

# Traceroute
/tool traceroute 8.8.8.8

# NAT таблиця
/ip firewall connection print

Wireshark фільтри

ip.addr == 192.168.1.1       # Трафік з/на IP
ip.src == 192.168.1.100      # Тільки джерело
ip.dst == 8.8.8.8            # Тільки призначення
icmp                          # ICMP пакети
ip.ttl < 10                   # Малий TTL

Типові проблеми та рішення

Проблема Симптоми Діагностика Рішення
Немає шлюзу Локально OK, інтернет не працює ip route Додати default route
Неправильна маска Частина хостів недоступна ip addr Виправити маску
NAT не працює Немає інтернету за NAT iptables -t nat -L Перевірити правила
MTU проблема Великі пакети не проходять ping -M do -s 1472 Зменшити MTU
TTL expired Пакети зникають traceroute Перевірити маршрути (петля?)
ICMP blocked Ping не працює Перевірити firewall Дозволити ICMP

IPv6 коротко

IPv4: 192.168.1.1              (32 біти)
IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334  (128 біт)

Переваги:
 Більше адрес (3.4×10³⁸)
 Вбудована безпека (IPsec)
 Спрощений header
 Немає NAT (в теорії)

Детальніше: див. статтю про IPv6

Підсумок

Мережевий рівень відповідає за:

  1. IP-адресацію — логічна ідентифікація пристроїв
  2. Маршрутизацію — знаходження шляху через мережі
  3. ICMP — діагностика та повідомлення про помилки
  4. NAT — трансляція приватних адрес в публічні
  5. Фрагментацію — адаптація до різних MTU

Див. також

Шлях: networking/basics/osi-3-network.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications