Top.Mail.Ru

Технология Ethernet. Обзор, описание, формат кадра.

Приветствую всех снова на нашем сайте! Вынужденная пауза в выходе новых статей подошла к концу и, собственно, этой статьей мы положим начало активному периоду наполнения сайта новым контентом. С выбором темы для статьи было в этот раз все максимально просто - в далекие-далекие времена была обещана статья про работу с Ethernet, наконец-то настало время исполнить обещанное. Но начнем мы для начала с общего обзора и описания технологии и некоторых нюансов, связанных с работой. А уже в следующих статьях будет практическое использование.

Семейство технологий Ethernet.

Как в самом начале не привести максимально "стандартное" и распространенное определение, вот оно: Ethernet - это семейство технологий пакетной передачи данных между устройствами для компьютерных и промышленных сетей. А теперь уже перейдем непосредственно к сути.

В сетевой модели OSI (про нее скоро тоже будет статья, а здесь появится ссылка на нее) Ethernet отвечает за 2 самых низких уровня - физический и канальный. Собственно, физический уровень определяет метод, который используется для непосредственной передачи двоичных данных. Канальный же, в свою очередь, обеспечивает упаковку полученных с физического уровня данных в структурированные кадры, а также контролирует их целостность и безошибочность.

Интерфейс Ethernet, сетевая модель OSI

Модификации Ethernet.

Классификация модификаций Ethernet в основном заключается в различиях двух факторов - используемого типа кабеля, а также возможной скорости передачи данных. Различают:

Варианты соединения Скорость
Ethernet Коаксиальный кабель, оптика, витая пара 10 Мб/с
Fast Ethernet Оптика, витая пара 100 Мб/с
Gigabit Ethernet Оптика, витая пара 1 Гб/с
10G Ethernet Оптика, витая пара 10 Гб/с

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

  • на порядки более высокую помехозащищенность, благодаря использованию дифференциального сигнала, что мы уже отмечали ранее, при обсуждении RS-485.
  • повышенная надежность сети, в основном, за счет появления возможности использовать соединение по топологии "звезда". То есть при обрыве связи между любыми двумя узлами сети это не влияет на незатронутые этим обрывом остальные узлы.
  • возможность использовать Full Duplex передачу данных. В двух словах об этом, наглядная табличка:
Тип Описание
Simplex (симплексная передача) Передача данных только в одном направлении
Half Duplex (полудуплексная передача) Передача возможна в двух направлениях, но не одновременно
Full Duplex (полнодуплексная передача) Возможна одновременная передача в двух направлениях

Внутри указанных четырех модификаций (Ethernet, Fast Ethernet, Gigabit Ethernet, 10G Ethernet) присутствует дополнительное "внутреннее" разделение. Например, возьмем 10 Мбит/с Ethernet. Этот тип включает в себя:

Ethernet (10 Мб/с)
10Base-2
10Base-5
10Base-T
10Base-F
10Base-FL

При этом различная физическая реализация подключения (разные кабели) приводят к возможности использования разных топологий сети. Для 10Base-5 максимально топорно:

Модификация Ethernet 10Base-5

А вот 10Base-T уже может использовать полнодуплексную передачу данных:

Модификация Ethernet 10Base-T

Здесь, как видите присутствует устройство под названием сетевой концентратор. Поэтому небольшое лирическое отступление на эту тему.

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

  • Сетевой концентратор (хаб) работает на 1-м (физическом) уровне модели OSI и ретранслирует сигнал с одного входящего порта, на несколько исходящих. На этом его функционал заканчивается.
  • Сетевой коммутатор (свитч) работает на 2-м (канальном уровне). Здесь также происходит передача данных от одного устройства нескольким, но при этом коммутатор анализирует кадры на предмет MAC-адреса получателя и передает пакет только тому узлу, которому он адресован(!). Адресацию и структуру кадров подробно разберем чуть ниже.
  • Маршрутизатор же и вовсе работает на 3-м уровне (сетевом) модели OSI.

Возвращаемся к схеме для стандарта 10Base-T. Поскольку для передачи и приема используются физически разные линии, то нет и препятствий для одновременного протекания данных процессов. Принцип же формирования данных остается неизменным практически для всех модификаций Ethernet, к обсуждению чего мы и переходим.

Кадр Ethernet.

Вся передаваемая информация поделена на пакеты/кадры, имеющие следующий формат:

Формат кадра Ethernet

Рассмотрим блоки подробнее:

  • MAC-адрес устройства, которому предназначен данный кадр.
  • MAC-адрес отправителя.
  • EtherType - двухбайтное поле, которое служит для указания типа протокола для данных, передаваемых в этом кадре. Для наглядности, некоторые возможные значения:
    • 0x0800 - IPv4
    • 0x86DD - IPv6
    • 0x0842 - Wake-on-LAN
    • 0x809B - AppleTalk
  • Далее следуют непосредственно передаваемые данные.
  • И завершает все это поле контрольной суммы CRC, для контроля целостности и отсутствия ошибок в кадре.

На данной схеме не указаны два поля, относящиеся к физическому уровню, а именно преамбула (preamble) и признак начала кадра (SFD - start frame delimiter). Преамбула представляет из себя семь последовательных байт с чередующимся единицами и нулями (10101010), а SFD - один байт, имеющий фиксированное значение 10101011.

Все поля, кроме поля данных, являются служебными.

Методика анализа контрольной суммы абсолютно стандартна: отправитель рассчитывает контрольную сумму на основе остальных данных кадра и добавляет рассчитанное значение к этому же отправляемому кадру. Получатель также рассчитывает контрольную сумму на основе принятых данных и сравнивает ее с принятой (которую рассчитывал отправитель). Несовпадение рассчитанного и принятого значений CRC - явный сигнал к тому, что данные повреждены и некорректны.

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

Кроме этого, возможна еще одна неприятная ситуация, так называемая коллизия - когда несколько узлов начинают передавать данные одновременно. Для предотвращения этого в Ethernet используется технология CSMA/CD - Carrier Sense Multiple Access with Collision Detection — множественный доступ с прослушиванием несущей и обнаружением коллизий. Эта тема тоже довольно-таки интересная, в связи с чем, принято волевое решение посвятить ей отдельную статью ) Поэтому здесь и сейчас на этом не останавливаемся.

В первых по очередности двух полях кадра Ethernet содержатся MAC-адреса узлов сети - передатчика и приемника. Изначально при разработке первых версий технологии было предусмотрено, что любая сетевая карта должна иметь свой уникальный идентификатор. Роль этого идентификатора и играет MAC-адрес, состоящий из 6 байт.

При работе он позволяет идентифицировать все устройства в сети и определить, какому именно из них предназначен тот или иной кадр данных. Распределением MAC-адресов занимается регулирующий комитет IEEE Registration Authority, именно сюда производитель сетевого устройства должен обращаться для выделения ему некоего диапазона адресов, которые он сможет использовать для своей продукции.

И на этой ноте заканчиваем вводную теоретическую часть по Ethernet, в дальнейшем приступим к практическому использованию в своих устройствах. До скорого 🤝

Подписаться
Уведомить о
guest

7 комментариев
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии
Павел
Павел
2 лет назад

Ждем новые статьи)))

Виктор
Виктор
2 лет назад

спасибо. по Ethernet надо больше статей:) UDP, TCP и прочие протоколы будут очень интересны

К....
К....
2 лет назад

Наконец то я дождался! Ждём продолжения. И особенно реализации на STM32 🙂

Александр
Александр
1 год назад

В структуре ethernet кадра забыли преамбулу

7
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x