itmo_conspects

Лекция 3. Локальные сети на примере Ethernet

Для чего же нужен канальный уровень?

Каналы разделяются по:

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

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

Считается, что Ethernet был разработан в 1973 году Робертом Меткалфом в компании Xerox. Далее Ethernet был подробно описан в стандарте IEEE 802.3, а именно кодирование, формат кадров и прочее

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

Прием в CSMA/CD происходит так:

  1. Приемник ждет, пока не обнаружит сигнал на линии
  2. При обнаружении приемник устанавливает синхронизацию, читает данные с канала и ждет ограничителя (Data Trailer)
  3. Если ограничитель обнаружен и адрес приема совпадает с тем, что в заголовке, то данные переходят наверх по уровню в стеке модели

Передача устроена сложнее:

  1. Вводится параметр Interpacket gap (IPG) или Interframe gap (IFG) - минимальный интервал между передаваемыми пакетами. Для скорости 10 Мбит/с - это 9.6 мкс, для 100 Мбит/с - 0.96 мкс, для 1 Гбит/с - 96 нс и так далее
  2. Далее пакет собирается, узел ждет, пока не закончится передача другого узла в канале, если такова есть
  3. Ждем, пока не пройдет минимальный интервал IPG с момента последней передачи
  4. Передаем биты кадра. Если во время передачи бита не был обнаружен прием другого пакета, то передавать следующие биты, пока они не закончатся
  5. Если во время передачи был обнаружен прием, то есть произошла коллизия, то:

    • Всем узлам передается Jam-сигнал, чтобы все знали, что произошла коллизия
    • Далее вычисляется время ожидания до следующей отправки по формуле P = L * T, где T - количество времени для отправки 512 битов (для 10 Мбит/с - это 51.2 мкс), L - случайное число из диапазона от 0 до 2^N, где N - текущее число попыток, при этом L <= 1023
    • После ожидания отправка повторяется заново

    Если количество попыток превысило 16, то отправка считается неудачной

CSMA/CD

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


Для идентификации в локальной сети на канальном уровне у узла есть MAC-адрес, состоящий из 6 байт, то есть 6 октет, то есть 48 бит

Первые три байта являются идентификатором производителя (OUI, Organizationally Unique Identifier или MFG от Manufacturing) - , а последние, NIC (Network Interface Controller), идентифицирует сам сетевой контроллер

Идентификатор производителя выдается институтом IEEE (их можно посмотреть на standards-oui.ieee.org/oui/oui.txt), а идентификатор контроллера - уникальный для устройств производителя, отсюда каждый MAC-адрес глобально уникален. В этом случае седьмой бит MAC-адреса будет равен 0. Пример такого адреса - 54:f2:03:92:93:c9

Большинство драйверов сетевых карт могут изменить MAC-адрес, но тогда седьмой бит обязан быть равен 1, что означает, что устройство с таким MAC-адресом администрируется локально. Пример такого адреса - 1e:1d:69:7e:51:22

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

Если же восьмой бит равен 1, то передача считается мультивещательной, и ее примут те узлы, которые настроены принимать кадры на этот адрес, таким образом, можно передавать кадры определенной группе узлов. Пример такого адреса - 51:ed:cb:0b:83:ba

Адрес получателя FF:FF:FF:FF:FF:FF считается особым и означает, что кадр предназначен всем узлам в локальной сети

Современные устройства умеют рандомизировать MAC-адреса для большей безопасности

Разберем формат кадра Ethernet:

  1. MAC-адрес получателя
  2. MAC-адрес отправителя
  3. Ethertype - тип формата кадра как двухбитное число
  4. Полезная нагрузка размером от 42 байт до 1500 байт
  5. 4 байт контрольной суммы, найденные через алгоритм циклического избыточного кода (CRC, cyclic redundancy check)

Всего существует несколько типов формата:

Ethernet-заголовок

Как можно заметить, протокол Ethernet почти не создает нагрузку на пропускную способность: из 1518 байт под полезную нагрузку выделено 1500, то есть 98.8%


Физических стандартов Ethernet существует много:

Суффикс означает вариант реализации, например T - витая пара (от Twisted pair)

В качестве оборудования используют

Для повторения сигналов существуют два прибора: