← Назад к вопросам

В чем разница между коммутатором и маршрутизатором?

1.0 Junior🔥 141 комментариев
#Сети и протоколы

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разница между коммутатором и маршрутизатором

Коммутатор (switch) и маршрутизатор (router) — это два разных сетевых устройства, работающие на разных уровнях модели OSI и выполняющие разные функции.

Уровни OSI

Для понимания различий нужно вспомнить модель OSI:

Уровень 7: Application (HTTP, FTP, DNS)
Уровень 6: Presentation
Уровень 5: Session
Уровень 4: Transport (TCP, UDP)
Уровень 3: Network (IP, маршрутизация) ← МАРШРУТИЗАТОР
Уровень 2: Data Link (MAC, коммутация) ← КОММУТАТОР
Уровень 1: Physical (кабели, сигналы)

Коммутатор (Switch) — уровень 2 (Data Link)

Коммутатор работает на уровне 2 (Data Link) и использует MAC адреса для коммутации (переключения) портов. Это устройство, которое соединяет компьютеры в локальной сети (LAN).

┌─────────────────────────────────┐
│        КОММУТАТОР (L2)          │
├──────────┬──────────┬───────────┤
│ Port 1   │ Port 2   │ Port 3    │
│ MAC: A   │ MAC: B   │ MAC: C    │
└──────────┴──────────┴───────────┘
    │          │          │
   PC1        PC2        PC3

Как работает коммутатор:

  1. Получает фрейм (frame) с MAC адресом источника и назначения
  2. Смотрит в MAC таблицу (MAC address table)
  3. Отправляет фрейм на нужный порт
  4. Если MAC адрес неизвестен, отправляет на все порты (flooding)
// Упрощённая логика коммутатора
struct SwitchPort {
    int port_number;
    unsigned char mac_address[6];
};

class Switch {
private:
    map<unsigned char[6], int> mac_table;  // MAC → PORT
    
public:
    void process_frame(Frame frame) {
        // 1. Выучиваем источник
        mac_table[frame.src_mac] = frame.incoming_port;
        
        // 2. Ищем пункт назначения
        if (mac_table.find(frame.dst_mac) != mac_table.end()) {
            int outgoing_port = mac_table[frame.dst_mac];
            send_to_port(frame, outgoing_port);
        } else {
            // Неизвестный MAC — отправляем на все порты
            flood_to_all_ports(frame);
        }
    }
};

Характеристики коммутатора:

  • Работает на Layer 2 (Data Link)
  • Использует MAC адреса (48-бит)
  • Создаёт одну сеть (broadcast domain)
  • Быстро (аппаратная коммутация)
  • Дёшево
  • Не изменяет IP адреса

Маршрутизатор (Router) — уровень 3 (Network)

Маршрутизатор работает на уровне 3 (Network) и использует IP адреса для маршрутизации (выбора пути) между разными сетями.

┌─────────────────────────────────┐
│       МАРШРУТИЗАТОР (L3)        │
├──────────┬──────────┬───────────┤
│ Port 1   │ Port 2   │ Port 3    │
│ 192.1.1.1│ 10.0.0.1 │ 172.16.1.1│
└──────────┴──────────┴───────────┘
    │          │          │
 Network A  Network B  Network C

Как работает маршрутизатор:

  1. Получает пакет (packet) с IP адресом источника и назначения
  2. Анализирует IP адрес назначения
  3. Ищет в таблице маршрутизации (routing table) — куда отправить
  4. Пересылает пакет на нужный порт (может изменить MAC адреса)
  5. Может изменять TTL (Time To Live)
// Упрощённая логика маршрутизатора
struct Route {
    uint32_t destination;   // IP сеть
    uint32_t netmask;       // Маска сети
    int next_hop_port;      // На какой порт отправить
    uint32_t next_hop_ip;   // IP следующего маршрутизатора
};

class Router {
private:
    vector<Route> routing_table;
    
public:
    void process_packet(Packet packet) {
        // 1. Анализируем IP адрес назначения
        uint32_t dst_ip = packet.dst_ip;
        
        // 2. Ищем маршрут
        for (const Route& route : routing_table) {
            if ((dst_ip & route.netmask) == route.destination) {
                // Нашли маршрут
                packet.dst_mac = get_mac_for_gateway(route.next_hop_ip);
                packet.src_mac = my_mac_on_port(route.next_hop_port);
                packet.ttl--;  // Уменьшаем TTL
                
                send_to_port(packet, route.next_hop_port);
                return;
            }
        }
        
        // Маршрут не найден — отправляем на default gateway
        send_to_default_gateway(packet);
    }
};

Характеристики маршрутизатора:

  • Работает на Layer 3 (Network)
  • Использует IP адреса (IPv4: 32-бит, IPv6: 128-бит)
  • Соединяет разные сети (разные broadcast domains)
  • Может быть медленнее коммутатора (анализ IP)
  • Может работать с протоколами маршрутизации (OSPF, BGP)
  • Изменяет MAC адреса при пересылке

Сравнительная таблица

ПараметрКоммутатор (L2)Маршрутизатор (L3)
Уровень OSILayer 2 (Data Link)Layer 3 (Network)
АдресацияMAC адресаIP адреса
ФункцияКоммутация портов в LANМаршрутизация между сетями
Broadcast domainОдна сетьРазные сети
СкоростьОчень быстроМедленнее (анализ IP)
ЦенаДешевлеДороже
КонфигурацияМинимальнаяТребует настройки маршрутов
ПрименениеЛокальная сеть (офис, дома)Соединение сетей (интернет)

Практический пример: корпоративная сеть

ИНТЕРНЕТ
   │
   └── МАРШРУТИЗАТОР (Router) ──┬── WAN: 203.0.113.1
       Таблица маршрутизации:    │
       192.168.1.0/24 → Port 1   │   LAN ports
       192.168.2.0/24 → Port 2   │
       0.0.0.0/0 → WAN           │
       │                         │
       ├─ КОММУТАТОР 1           │   КОММУТАТОР 2
       │  (Отдел IT)             │   (Отдел HR)
       │  192.168.1.x            │   192.168.2.x
       │  │                      │   │
       │  ├─ PC1 (192.168.1.10)  │   ├─ PC3 (192.168.2.10)
       │  └─ PC2 (192.168.1.11)  │   └─ PC4 (192.168.2.11)
       │                         │

Как происходит передача данных между разными сетями?

Сценарий: PC1 отправляет данные PC4

PC1: 192.168.1.10 → PC4: 192.168.2.11

// Шаг 1: PC1 формирует пакет
Ethernet Frame {
    dst_mac: коммутатора  // Потому что PC4 в другой сети
    src_mac: PC1_mac
    IP header {
        dst_ip: 192.168.2.11
        src_ip: 192.168.1.10
    }
}

// Шаг 2: Коммутатор 1 видит фрейм, смотрит в MAC таблицу
// Находит маршрутизатор и отправляет ему

// Шаг 3: Маршрутизатор анализирует IP адрес
// 192.168.2.11 находится в сети 192.168.2.0/24
// Таблица маршрутизации → отправить на Port 2

// Шаг 4: Маршрутизатор изменяет MAC адреса
Ethernet Frame {
    dst_mac: коммутатора_2  // ← ИЗМЕНЁН!
    src_mac: маршрутизатор_mac
    IP header {
        dst_ip: 192.168.2.11  // IP остаётся тем же
        src_ip: 192.168.1.10
    }
}

// Шаг 5: Коммутатор 2 видит фрейм
// Смотрит в MAC таблицу и отправляет PC4

Важные сетевые протоколы

Для коммутаторов:

  • VLAN (Virtual LAN) — виртуальные сети
  • STP (Spanning Tree Protocol) — предотвращение циклов
  • RSTP (Rapid STP) — быстрое восстановление

Для маршрутизаторов:

  • RIP (Routing Information Protocol) — простая маршрутизация
  • OSPF (Open Shortest Path First) — продвинутая маршрутизация
  • BGP (Border Gateway Protocol) — маршрутизация в интернете
  • NAT (Network Address Translation) — трансляция адресов

L3 Switch (гибридное устройство)

В современных сетях часто используются L3 switch — это коммутатор, который также может маршрутизировать:

class L3Switch : public Switch {
private:
    vector<Route> routing_table;  // Добавлена маршрутизация
    map<unsigned char[6], int> mac_table;  // MAC таблица
    
public:
    void process_frame(Frame frame) {
        // Сначала как обычный коммутатор (L2)
        if (is_mac_in_vlan(frame.dst_mac)) {
            Switch::process_frame(frame);
        }
        // Потом как маршрутизатор (L3)
        else {
            route_packet(frame);
        }
    }
};

Вывод: когда что использовать?

Используй коммутатор (Switch), если:

  • Нужно соединить устройства в одной локальной сети
  • Все устройства в одной подсети (192.168.1.x)
  • Нужна максимальная скорость
  • Простая сеть (офис, дома)

Используй маршрутизатор (Router), если:

  • Нужно соединить разные сети
  • Устройства в разных подсетях (192.168.1.x и 192.168.2.x)
  • Нужен доступ в интернет
  • Сложная корпоративная сеть

Используй L3 Switch, если:

  • Нужны обе функции (коммутация + маршрутизация)
  • Высокая производительность обе операции
  • Современные корпоративные сети

Практическое правило: Коммутатор работает с MAC адресами в локальной сети, маршрутизатор работает с IP адресами между разными сетями.