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

Чем роутер отличается от коммутатора?

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

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

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

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

Основное отличие на концептуальном уровне

Фундаментальное различие заключается в уровне сетевой модели OSI, на котором они работают, что определяет их логику принятия решений и область ответственности.

Коммутатор (Switch) работает преимущественно на канальном уровне (L2), оперируя MAC-адресами. Его основная задача — эффективная передача фреймов (кадров) между устройствами в пределах одной локальной сети (LAN). Коммутатор изучает, какой MAC-адрес доступен на каком его физическом порту, и строит таблицу коммутации. Когда кадр прибывает на порт, коммутатор смотрит на MAC-адрес назначения и, если он знает соответствующий порт, отправляет кадр только туда. Это создает изолированные домены коллизий и повышает общую пропускную способность сети.

# Упрощенная логика коммутатора (псевдокод)
if destination_mac in mac_address_table:
    forward_frame_to_port(mac_address_table[destination_mac])
else:
    flood_frame_to_all_ports_except_source() # Устройство ответит, и коммутатор выучит его MAC

Роутер (Маршрутизатор, Router) работает на сетевом уровне (L3), оперируя IP-адресами. Его ключевая задача — связывать разные логические сети (подсети), определяя оптимальный путь (маршрут) для пакетов между ними. Роутер принимает решение на основе таблицы маршрутизации, где указаны сети назначения и интерфейсы или адреса следующего прыжка (next-hop) для их достижения.

# Упрощенная логика роутера (псевдокод)
def route_packet(packet):
    destination_network = get_network_prefix(packet.destination_ip)

    if destination_network in routing_table:
        next_hop = routing_table[destination_network]
        # Меняет L2-заголовок (MAC-адреса) и отправляет пакет на next_hop
        send_packet_to_next_hop(packet, next_hop)
    else:
        send_icmp_destination_unreachable() # Или использует маршрут по умолчанию (default route)

Сравнительная таблица ключевых характеристик

КритерийКоммутатор (L2)Роутер (L3)
Рабочий уровень OSIКанальный (L2), иногда с функциями сетевого (L3-коммутатор)Сетевой (L3) и выше
Оперируемые адресаMAC-адреса (физические)IP-адреса (логические)
Единица данныхКадр (Frame)Пакет (Packet)
Таблица принятия решенийТаблица MAC-адресов (CAM-таблица)Таблица маршрутизации
Основная функцияСегментация LAN, повышение производительностиСоединение разных сетей, определение маршрутов
Широковещательный доменПо умолчанию передает широковещательные кадры (ARP, DHCP)Разделяет широковещательные домены. Останавливает широковещательный трафик на интерфейсе.
Домен коллизийРазделяет домены коллизий (каждый порт — отдельный домен)Разделяет домены коллизий по умолчанию
Управление сетевым трафикомОграничено (VLAN, ACL на L2)Расширенное (межсетевое ACL, QoS, Stateful Firewall, NAT)
ПротоколыSTP, 802.1Q (VLAN)RIP, OSPF, BGP, EIGRP

Практические последствия для сетевой архитектуры DevOps

С точки зрения DevOps и построения инфраструктуры эти различия критически важны:

  • Сегментация сети: Для изоляции окружений (prod, stage, dev) или сервисов используют VLAN на коммутаторах (L2-сегментация) и разные подсети на роутерах/гейтвеях (L3-сегментация). L3-сегментация обеспечивает более строгую и управляемую изоляцию.
  • Широковещательный шторм: Коммутатор передает широковещательный трафик по всей VLAN, что может привести к широковещательному шторму и параличу сети. Роутер является барьером для такого трафика, повышая стабильность.
  • Определение проблемы: Если сервер в одной подсети не "видит" сервер в другой — проблема, как правило, на уровне маршрутизации (L3, роутеры, файерволы, таблицы маршрутизации на самих серверах). Если не видят друг друга серверы в одной подсети — проблема на L2 (VLAN, настройки порта коммутатора, MAC-таблица, STP).
  • Современные гибриды: В облачных средах (AWS VPC, GCP VNET) и ЦОДах широко используются L3-коммутаторы. Это устройства, объединяющие функции:
    *   **Скорость коммутации на аппаратном уровне (ASIC)** для трафика внутри подсети (как L2-коммутатор).
    *   **Логика маршрутизации на аппаратном уровне** для трафика между подсетями (как роутер).
    *   Это позволяет строить высокопроизводительные, плоские (leaf-spine) сети с низкой задержкой.

Пример сценария в инфраструктуре

Представим типичную стойку в дата-центре:

  1. Все серверы в стойке подключены к топологическому (ToR) коммутатору.
  2. Серверам назначены IP-адреса из подсети 10.10.1.0/24. Их шлюзом по умолчанию указан виртуальный адрес (SVI) коммутатора, например, 10.10.1.1, если коммутатор работает в режиме L3.
  3. Когда веб-сервер (10.10.1.10) общается с сервером приложений (10.10.1.20) — коммутатор напрямую пересылает кадры между их портами, сверяясь со своей MAC-таблицей.
  4. Когда тому же веб-серверу нужно обратиться к базе данных в другой стойке в подсети 10.10.2.0/24, он отправляет пакет на свой шлюз (10.10.1.1).
  5. Коммутатор (в роли L3-роутера) принимает пакет, смотрит в таблицу маршрутизации, находит маршрут до сети 10.10.2.0/24 через магистральный коммутатор (спайн), меняет L2-заголовок и отправляет пакет дальше.

Вывод: Коммутатор — это интеллектуальный "мост" внутри одной сети, оптимизирующий локальный обмен данными. Роутер — это "шлюз" и "навигатор" между различными сетями, обеспечивающий связь на глобальном уровне и реализующий политики безопасности и управления трафиком. В современной инфраструктуре граница между ними часто размывается, но понимание принципиальных отличий остаётся краеугольным камнем для диагностики проблем и проектирования надежных сетей.

Чем роутер отличается от коммутатора? | PrepBro