Передача пакетов внутри компьютерных сетей осуществляется на различных уровнях иерархической модели OSI. В этой статье мы будем говорить о, пожалуй, самых сетевых (помимо транспортного) уровнях в этой модели: канальном (L2) и сетевом (L3). Мы рассмотрим, как осуществляется передача пакетов как внутри сетевых сегментов, так и при межсетевом взаимодействии. При этом, мы выделим различия и покажем ключевые моменты процесса перенаправления трафика в сетях.

Вспоминая иерархическую модель

Начинающим сетевикам мы расскажем напомним о том, что из себя представляет модель OSI и, затем перейдем к рассмотрению работы канального и сетевого уровней.

Модель OSI (Open Systems Interconnection) — это стандартизированная концепция, разработанная Международной организацией по стандартизации (ISO) для описания архитектуры сетевых коммуникаций. Она представляет собой семиуровневую иерархическую систему, каждый уровень которой решает определённые задачи взаимодействия устройств и приложений в сети.

Прикладной уровень отвечает за взаимодействие с конечным пользователем, обеспечивает доступ к сервисам и приложениям. На нем работают HTTP, FTP, SMTP, DNS и т.д.

Уровень представлений обеспечивает согласование форматов представления данных между системами, шифрование данных, сжатие и распаковку данных. Примеры протоколов: SSL/TLS, MIME, XDR.

На сеансовом уровне осуществляется управление созданием, поддержанием и закрытием сеансов связи между устройствами. Обеспечивается синхронизация передачи данных. Здесь работают: NetBIOS, RPC, SOCKS.

Транспортный уровень гарантирует доставку пакетов данных, устанавливает надёжность доставки сообщений. Контролирует поток данных и исправление ошибок. На нем работают протоколы: TCP, UDP.

И наконец, интересующие нас сегодня уровни. Сетевой уровень занимается маршрутизацией пакетов между различными сетями, определяет пути прохождения трафика. Здесь применяются: IP, ICMP, OSPF, BGP.

На канальном уровне организуется передача кадров между узлами одной физической сети, проверяется целостность передаваемых данных и осуществляется контроль ошибок. Примеры протоколов: Ethernet, PPP, HDLC.

Самый нижний, физический уровень опре��еляет физические характеристики сигналов и среды передачи данных (электрические сигналы, световые импульсы, радио волны). Отвечает за механическое соединение и управление линиями передачи. Здесь используются такие технологии, как Ethernet, Wi-Fi, Bluetooth, RS-232.

При этом важно понимать, что каждый из уровней добавляет свои данные к исходной полезной нагрузке.

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

Передача пакетов на канальном уровне

На канальном уровне основным сетевым устройством является коммутатор. Его задача заключается в определении физического порта назначения, на который нужно передать кадр Ethernet. Здесь к исходному пакету у нас добавляется заголовок следующего содержания:

Для коммутации наибольший интерес представляют поля с МАС адресами отправителя и получателя. Чтобы определить порт назначения, коммутатор использует таблицу MAC-адресов (CAM table), в которой хранятся соответствия физических портов и MAC-адресов конечных узлов.

Рассмотрим подробнее процесс пересылки сетевых кадров. Узел отправляет Ethernet-кадр другому узлу в той же физической сети. Кадр поступает на коммутатор, к которому подключен узел отправитель. Далее данный коммутатор ищет MAC-адрес получателя в таблице CAM. Если MAC адрес найден, кадр направляется непосредственно на соответствующий порт. Если нет — кадр рассылается широковещательно всем устройствам сегмента (флудинг). Получатель принимает кадр и обрабатывает его.

При таком подходе обеспечивается высокая скорость передачи кадров внутри одного сегмента сети, но что делать, если нам нужно отправить данные узлу в другом сегменте сети? Здесь нам на помощь приходит сетевой уровень.

Маршрутизация и пересылка трафика на сетевом уровне

Маршрутизация IP-трафика осуществляется на сетевом уровне (IP) и служит механизмом передачи пакетов между разнородными сетевыми сегментами, принадлежащими разным физическим сетям.

Основным устройством, осуществляющим маршрутизацию на третьем уровне, является маршрутизатор (router). Именно он определяет наилучший путь следования пакета от исходящего устройства к конечному получателю. На сетевом уровне пакет имеет следующий заголовок:

Здесь сразу оговоримся, что в рамках данной статьи мы будем говорить только об IP версии 4.

Механизм пересылки пакетов на сетевом уровне работает следующим образом:

  1. Отправитель формирует IP-пакет с заголовком, содержащим IP-адрес источника и получателя (аналогичном тому, что представлен на рисунке).

  2. Пакет передается ближайшему маршрутизатору, указанному как шлюз по умолчанию (default gateway).

  3. Маршрутизатор проверяет IP-адрес назначения, сверяя его с таблицей маршрутизации (routing table).

  4. Исходя из таблицы маршрутизации определяется следующий переход (next hop), и пакет отправляется следующему узлу маршрута.

  5. Повторяются пункты 3 и 4, пока пакет не достигнет узла-получателя либо не истечёт значение поля Time To Live (TTL). Содержимое поля TTL позволяет избежать закольцовок при пересылке трафика. Возможна ситуация, когда сетевое оборудование настроено неверно и пакет бесконечно пересылается от одного маршрутизатора к другому и обратно. Счетчик TTL позволяет избежать такого зацикливания.

Каждый отправляемый IP-пакет имеет поле TTL. Обычно начальное значение устанавливается равным значению по умолчанию операционной системы, например, Windows часто устанавливает TTL=128, Linux = 64, Unix/FreeBSD/MacOS = 64. Каждый маршрутизатор, через который проходит пакет, уменьшает значение поля TTL на единицу перед передачей пакета дальше. Если значение TTL становится равно нулю, маршрутизатор отбрасывает пакет и отправляет ICMP-сообщение типа TIME_EXCEEDED источнику пакета, уведомляя о том, что путь слишком длинен и пакет больше не передается.

Таблица маршрутизации

Таблицы маршрутизации играют ключевую роль в процессе маршрутизации IP-пакетов. Они содержат списки маршрутов, определяющих оптимальный путь к целевым сетям и хостам. Наиболее распространёнными способами формирования таблиц являю��ся статическая маршрутизация (ручное заполнение маршрутов) и динамическая маршрутизация (использование протоколов маршрутизации BGP, OSPF, EIGRP и др.).

При использовании статической маршрутизации администратор сам задаёт фиксированные маршруты для отправки пакетов в определённые направления. Эти маршруты хранятся в специальной таблице маршрутизатора и используются для принятия решений о направлении потоков данных. Вот пример статического маршрута:

192.168.1.0/24 via 10.0.0.1 dev eth0

Здесь указано, что пакеты, предназначенные для сети 192.168.1.0 с маской /24, отправляются через шлюз 10.0.0.1 интерфейсом eth0. Таким образом, для указания статического маршрута нам необходима подсеть, маска, а также адрес маршрутизатора, на который пересылать пакеты и интерфейс на данном маршрутизаторе, через который пересылать.

Статические маршруты просты в реализации, предсказуемы и не создают дополнительного трафика для обмена информацией о маршрутах. Основным недостатком статики является то, что в случае отказа канала связи или изменении сетевой топологии нам придется вручную менять маршруты.

Динамическая маршрутизация позволяет автоматически строить маршруты, но при этом ее сложнее настраивать и в сети появляется постоянный трафик, связанный с обменом маршрутной информацией между маршрутизаторами.

Address resolution protocol

Еще один важный момент, с которым необходимо разобраться в рамках обсуждения работы L2 и L3 это как узел отправитель узнает МАС адрес получателя? То есть у нас есть IP адрес получателя, но МАС адрес мы не знаем. Здесь нам на помощь приходит протокол ARP.

Процесс начинается тогда, когда узлу необходимо отправить пакет другому узлу в той же сети, но оно пока не знает MAC-адрес получателя. Сначала отправитель формирует ARP-запрос, содержащий известный ему IP-адрес цели и собственный MAC-адрес вместе с IP-адресом. Запрос рассылается всем устройствам в сегменте сети через broadcast-кадры (широковещательные кадры).

Who has IP-address? Tell my-MAC-address

Устройство, чей IP совпадает с указанным в запросе, отправляет обратно ARP-ответ, сообщая свой MAC-адрес.

My IP is this and my MAC address is that

Далее, получив ответ, отправитель сохраняет сопоставление IP → MAC в своем кэше ARP, чтобы избежать повторных запросов для последующих соединений с данным устройством.

В результате, каждое устройство хранит временную таблицу, называемую ARP-кэш, содержащую пары IP → MAC. Эта таблица периодически очищается, чтобы поддерживать актуальность сведений.

В случае, если получатель находится вне локального сегмента, ARP запрашивает MAC-адрес ближайшего маршрутизатора (шлюза), который далее доставляет пакет по маршруту.

Заключение

Знание особенностей и различий между форвардингом на уровнях L2 и L3 крайне важно для понимания общей структуры современной компьютерной сети. L2 передает кадры лишь в пределах одной сети, тогда как L3 способен направлять трафик через разные физические среды и технологии. Благодаря таблицам и протоколам маршрутизации, сеть становится более устойчивой к изменениям топологии и аварийным ситуациям.

Таким образом, важно понимать, что оптимальное распределение нагрузок, обеспечение отказоустойчивости и повышение эффективности сети зависят от грамотного выбора методов передачи трафика и соответствующих технологий.

Если хочется идти дальше, на курсе Network Engineer. Basic эту «теорию про L2/L3» доводят до рабочих навыков: CLI в Cisco IOS, VLAN и маршрутизация, IPv4/IPv6, статика и динамика, базовая безопасность. По итогам у вас будет не набор терминов, а понятная практика, на которую можно опереться в роли junior сетевого инженера.

Чтобы узнать больше о формате обучения и познакомиться с преподавателями, приходите на бесплатные демо-уроки:

  • 24 февраля 20:00. «IP-форвардинг в L2 и L3 сегментах». Записаться

  • 10 марта 20:00. «Использование /31 префикса в IP-сетях». Записаться

Еще больше бесплатных уроков от преподавателей курсов можно посмотреть в календаре мероприятий.