Что характеризует канальный уровень
Канальный уровень
Канальный уровень (англ. Data Link layer ) — уровень сетевой модели OSI, предназначенный для передачи данных узлам, находящимся в том же сегменте локальной сети. Также может использоваться для обнаружения и если возможно исправления ошибок возникших на физическом уровне. Примерами протоколов работающих на канальном уровне являются Ethernet для локальных сетей (многоузловой), Point-to-Point Protocol (PPP), HDLC и ADCCP для подключений точка-точка (двухузловой).
Канальный уровень отвечает за доставку кадров между устройствами, подключенными к одному сетевому сегменту. Кадры канального уровня не пересекают границ сетевого сегмента. Межсетевая маршрутизация и глобальная адресация это функция более высокого уровня, что позволяет протоколам канального уровня сосредоточиться на локальной доставке и адресации.
Заголовок кадра содержит аппаратные адреса отправителя и получателя, что позволяет определить, какое устройство отправило кадр и какое устройство должно получить и обработать его. В отличие от иерархических и маршрутизируемых адресов, аппаратные адреса одноуровневые. Это означает, что никакая часть адреса не может указывать на принадлежность к какой либо логической или физической группе.
Когда устройства пытаются использовать среду одновременно, возникают коллизии кадров. Протоколы канального уровня выявляют такие случаи и обеспечивают механизмы для уменьшения их количества или же их предотвращения.
Многие протоколы канального уровня не имеют подтверждения о приёме кадра, некоторые протоколы даже не имеют контрольной суммы для проверки целостности кадра. В таких случаях, протоколы более высокого уровня должны обеспечивать управление потоком данных, контроль ошибок, подтверждение доставки и ретрансляции утерянных данных.
Спецификация IEEE 802 разделяет этот уровень на 2 подуровня — MAC (Media Access Control) регулирует доступ к разделяемой физической среде, LLC (Logical Link Control) обеспечивает обслуживание сетевого уровня.
На этом уровне работают коммутаторы, мосты.
Стандарты и протоколы передачи данных
В программировании доступ к этому уровеню предоставляет драйвер сетевой платы. [источник не указан 61 день] В операционных системах имеется программный интерфейс взаимодействия канального и сетевого уровней между собой, это не новый уровень, а просто реализация модели для конкретной ОС. Примеры таких интерфейсов: ODI, NDIS. [источник не указан 61 день] [значимость факта?]
📑 Канальный уровень модели OSI. Общие понятия.
Канальный уровень — уровень сетевой модели OSI, предназначенный для обмена данными между узлам находящимся в том же сегменте локальной сети, путем передачи специальных блоков данных, которые называются кадрами (frame). В процессе формирования кадров данные снабжаются служебной информацией (заголовком), необходимой для корректной доставки получателю, и, в соответствии с правилами доступа к среде передачи, отправляются на физический уровень. Таким образом канальный уровень обеспечивает создание, передачу и прием кадров данных.
Этот уровень обслуживает запросы сетевого уровня и использует сервис физического уровня для приема и передачи пакетов.
Кадры канального уровня не пересекают границ сетевого сегмента. Межсетевая маршрутизация и глобальная адресация это функция более высокого уровня, что позволяет протоколам канального уровня сосредоточится на локальной доставке и адресации.
В локальных сетях канальный уровень разделяется на два подуровня:
Процедура доступа к среде и является главной функцией МАС-уровня. В сетях Ethernet используется метод доступа к среде передачи данных, называемый методом коллективного доступа с опознаванием несущей и обнаружением коллизий (carrier sense multiple access with collision detection, CSMA/CD). Этот метод применяется исключительно в сетях с логической общей шиной (к которым относятся и радиосети, породившие этот метод).
Когда устройства пытаются использовать среду одновременно, возникают коллизии кадров. Протоколы канального уровня выявляют такие случаи и обеспечивают механизмы для уменьшения их количества или же их предотвращения.
Коллизия (англ. collision — ошибка наложения, столкновения) — в терминологии компьютерных и сетевых технологий, наложение двух и более кадров от станций, пытающихся передать кадр в один и тот же момент времени.
Все компьютеры такой сети имеют непосредственный доступ к общей шине, поэтому она может быть использована для передачи данных между любыми двумя узлами сети. Одновременно все компьютеры сети имеют возможность немедленно (с учетом задержки распространения сигнала по физической среде) получить данные, которые любой из компьютеров начал передавать в общую шину.
Чтобы получить возможность передавать кадр, станция должна убедиться, что разделяемая среда свободна. Это достигается прослушиванием несущей частоты (carrier-sense).
Если среда свободна, то узел имеет право начать передачу кадра. Все станции, подключенные к кабелю, могут распознать факт передачи кадра, и та станция, которая узнает собственный адрес в заголовках кадра, записывает его содержимое в свой внутренний буфер, обрабатывает полученные данные, передает их вверх по своему стеку, а затем посылает по кабелю кадр-ответ. Адрес станции источника содержится в исходном кадре, поэтому станция-получатель знает, кому нужно послать ответ. После окончания передачи кадра все узлы сети обязаны выдержать технологическую паузу. Эта пауза, называемая также межкадровым интервалом, нужна для приведения сетевых адаптеров в исходное состояние, а также для предотвращения монопольного захвата среды одной станцией. После окончания технологической паузы узлы имеют право начать передачу своего кадра, так как среда свободна.
При описанном подходе возможна ситуация, когда две станции одновременно пытаются передать кадр данных по общей среде. Механизм прослушивания среды и пауза между кадрами не гарантируют защиты от возникновения такой ситуации, когда две или более станции одновременно решают, что среда свободна, и начинают передавать свои кадры. Говорят, что при этом происходит коллизия (collision), так как содержимое обоих кадров сталкивается на общем кабеле и происходит искажение информации — методы кодирования, используемые в Ethernet, не позволяют выделять сигналы каждой станции из общего сигнала.
Коллизия — это нормальная ситуация в работе сетей Ethernet. Для возникновения коллизии не обязательно, чтобы несколько станций начали передачу абсолютно одновременно, такая ситуация маловероятна. Гораздо вероятней, что коллизия возникает из-за того, что один узел начинает передачу раньше другого, но до второго узла сигналы первого просто не успевают дойти к тому времени, когда второй узел решает начать передачу своего кадра. То есть коллизии — это следствие распределенного характера сети.
Заголовок кадра содержит аппаратные адреса отправителя и получателя, что позволяет определить, какое устройство отправило кадр и какое устройство должно получить и обработать его. В отличии от иерархических и маршрутизируемых адресов, аппаратные адреса одноуровневые. Это означает, что никакая часть адреса не может указывать на принадлежность к какой либо логической или физической группе.
Для успешной доставки одного адреса назначения явно недостаточно. Нужна дополнительная служебная информация — длина поля данных, тип сетевого протокола и др.
Формат кадра Ethernet
Канальный уровень обеспечивает корректность передачи каждого кадра, помещая специальную последовательность бит в начало и конец каждого кадра, чтобы отметить его, а также вычисляет контрольную сумму, суммируя все байты кадра определенным способом и добавляя контрольную сумму к кадру. Когда кадр приходит, получатель снова вычисляет контрольную сумму полученных данных и сравнивает результат с контрольной суммой из кадра. Если они совпадают, кадр считается правильным и принимается. Если же контрольные суммы не совпадают, то фиксируется ошибка.
Кадр приведенный выше является кадром MAС-подуровня, и в соответствии со стандартом 802.2 в его поле данных вкладывается кадр подуровня LLC с удаленными флагами начала и конца кадра. Данный подуровень обеспечивает единый, независимый от используемого метода доступа, интерфейс с верхним (сетевым) уровнем.
Служебный заголовок кадра LLC имеет три поля: точка входа в сервис назначения (Destination Service Access Point, DSAP), точка входа в сервис источника (Source Service Access Point, SSAP) и поле управления. Первые два поля могут использоваться для характеризации протоколов верхнего уровня, данные которых представлены в поле данных кадра LLC. Поле управления используется для реализации процедуры установления соединения на канальном уровне, но оно редко используется в протоколах локальных сетей. Результирующий кадр MAC/LLC изображен в левой части рисунка ниже:
| Preamble Преамбула | SFD | DA Адрес назначения | SA Адрес Источника | Type/Length Тип/Длина | DSAP | SSAP | Поле управления | Data Данные | FCS Контрольная сумма |
| 7 байт | 1 байт | 6 байт | 6 байт | 2 байта | 1 байт | 1 байт | 1 байт | 46-1497 байт | 4 байта |
В локальных сетях а дресация узлов назначения и узлов источника производится на основе МАС-адресов, которые «прошиты» в П ЗУ сетевых интерфейсов.
Старшие три байта представляют собой идентификатор производителя оборудования (Vendor codes или OUI — Organizational Unique Identifier), младшие — индивидуальный идентификатор устройства или номер интерфейса.
За уникальность последних несет ответственность производитель оборудования, их значение устанавливается на заводе и является уникальным для каждого выпущенного устройства.
С идентификаторами производителя дело обстоит сложнее. Существует специальная организация в составе IEEE, которая ведет список вендоров, выделяя каждому из них свой диапазон адресов.
Такой механизм существует для того, что бы физический адрес любого устройства был уникальным, и не возникло ситуации его случайного совпадения в одной локальной сети.
Нужно особо отметить, что на большинстве современных адаптеров можно программным путем установить любой адрес. А существуют еще и виртуальные (программные) интерфейсы, где адрес задается только программным путем. Это представляет определенную угрозу работоспособности локальной сети, и может быть причиной серьезных сбоев в работе сети.
Канальный уровень
Из Википедии — свободной энциклопедии
Канальный уровень (англ. Data Link layer ), также уровень передачи данных [1] — второй уровень сетевой модели OSI, предназначенный для передачи данных узлам, находящимся в том же сегменте локальной сети. Также может использоваться для обнаружения и, возможно, исправления ошибок, возникших на физическом уровне. Примерами протоколов, работающих на канальном уровне, являются: Ethernet для локальных сетей (многоузловой), Point-to-Point Protocol (PPP), HDLC и ADCCP для подключений точка-точка (двухузловой).
Функции межсетевой маршрутизации и глобальной адресации осуществляются на более высоких уровнях модели OSI, что позволяет протоколам канального уровня сосредоточиться на локальной доставке и адресации.
Заголовок кадра содержит аппаратные адреса отправителя и получателя, что позволяет определить, какое устройство отправило кадр и какое устройство должно получить и обработать его. В отличие от иерархических и маршрутизируемых адресов, аппаратные адреса одноуровневые. Это означает, что никакая часть адреса не может указывать на принадлежность к какой-либо логической или физической группе.
Когда устройства пытаются использовать среду одновременно, возникают коллизии кадров. Протоколы канального уровня выявляют такие случаи и обеспечивают механизмы для уменьшения их количества или же их предотвращения.
Многие протоколы канального уровня не имеют подтверждения о приёме кадра, некоторые протоколы даже не имеют контрольной суммы для проверки целостности кадра. В таких случаях протоколы более высокого уровня должны обеспечивать управление потоком данных, контроль ошибок, подтверждение доставки и ретрансляции утерянных данных.
На этом уровне работают коммутаторы, мосты.
В программировании доступ к этому уровню предоставляет драйвер сетевой платы. [ источник не указан 3335 дней ] В операционных системах имеется программный интерфейс взаимодействия канального и сетевого уровней между собой, это не новый уровень, а просто реализация модели для конкретной ОС. Примеры таких интерфейсов: ODI, NDIS. [ источник не указан 3335 дней ] [ значимость факта? ]
Длина пакета, формируемого протоколом канального уровня, ограничена сверху посредством MTU. MTU может быть изменено. Минимальная длина кадра прописывается в стандартах и не может быть изменена.
Канальный уровень в модели OSI — подробный разбор
Основная задача канального уровня — передача кадров (frame) по каналам связи. На этом уровне и определяется, где в потоке бит начало сообщения, где конец.
На канальном уровне проводится нахождение и корректировка ошибок для некоторых каналов с множественным доступом, где одну и ту же среду передачи данных используют несколько устройств.
Дополнительные задачи канального уровня:
Работа с кадрами
Физический уровень предназначен для передачи потока бит по КС. А на канальном уровне необходимо передавать не отдельные биты, а целые сообщения. Задача №1 для канального уровня, выделить сообщения из потока бит, которые приходят по среде передачи данных.
Формирование кадра
Например, есть два ноутбука Хост 1 и Хост 2. И на картинке ниже есть три уровня, сетевой, канальный и физический.
Канальный уровень получает информацию от сетевого и добавляет к нему заголовок и концевик. И именно это сообщение, выделенное красным, заголовок канального уровня, пакет с сетевого уровня и концевик канального уровня и является фреймом. Такое сообщение отправляется через физический уровень по среде передачи данных и поступает на канальный уровень принимающего уровня.
Принимающее устройство читает заголовок и концевик, извлекает пакет сетевого уровня и передает вышестоящему сетевому уровню для последующей обработки.
Методы выделения кадров
Чтобы определить, где в потоке бит начинаются и заканчиваются отдельные frame, были придуманы следующие методы:
Указатель количества байт
Наипростейший способ определить, где начинается и заканчивается кадр — добавлять длину этого кадра в начало кадра. Например, на картинке ниже показано 3 кадра выделенных разным цветом. В начале каждого кадра указано количество байт. Синим цветом — 6, желтым — 8, зеленым — 4.
Этот метод прост в реализации, но есть недостаток, искажение данных при передаче по сети. Например, при передаче первого кадра появилось искажение и вместо длины кадра шесть байт, получатель получил семь байт.
Получатель посчитает, что семь это длина кадра. Далее идет длина следующего кадра. Здесь она два байта, затем длина следующего кадра семь. Если у нас произошла хоть одна ошибка, то будет нарушена последовательность чтений. Следовательно такой метод на практике не годится к применению.
Вставка byte и bit
Чтобы определить начало и конец кадра, в начале и конце каждого кадра используют специальные последовательности байт или бит. Вставка байтов применялась в протоколах BSC компании IBM, в котором отправлялись обычные текстовые символы.
Перед передачей каждого фрейма добавлялись байты DLE STX (start of text), а после окончания передачи фрейма DLE ETX (end of text). Проблема может возникнуть в том, что в данных тоже может встретиться точно такая же последовательность.
Чтобы отличать последовательность, которая встречается в данных от управляющих символов используются Escape последовательности. В протоколе BSC это тоже последовательность символов DLE (data link escape). Если какая-то последовательность управляющих символов встречается в данных перед ними добавляются escape последовательности DLE, чтобы протокол понимал, что в реальности это данные, а не управляющие символы.
Вставка битов применяется в более современных протоколах, таких как HDLC и PPP. Здесь перед началом и концом каждого кадра добавляется последовательность бит состоящая из 01111110. Может возникнуть проблема, если в данных встречаются подряд идущие 6 или более единиц. Чтобы решить эту задачу в данные, после каждых пяти последовательно идущих 1 добавляется 0. Затем, как получатель прочитал 5 последовательно идущих 1 и встретил 0, то он, этот 0 игнорирует.
Средства физического уровня
Другой вид определения начала и конца кадра, это использование средств физического уровня и он применяется в технологии Ethernet. В первом варианте технологии ethernet использовалась преамбула — это последовательность данных, которая передается перед началом каждого кадра. Она состоит из 8 байт. Первые семь байт состоят из чередующихся 0 и 1: 10101010. Последний байт содержит чередующиеся 0 и 1, кроме двух последних бит в котором две единицы. И именно такая последовательность говорит, что начинается новый кадр.
В более старых версиях используется избыточное кодирование, позволяющее определить ошибки, но при этом не все символы являются значащими. В технологии Fast Ethernet применили эту особенность кода и используют символы, которые не применяются для представления данных в качестве сигналов о начале и конце кадра.
Перед отправкой каждого кадра передаются символы J (11000) и K (10001), а после окончания отправки кадра передается символ T (01101).
Обнаружение и исправление ошибок
Самый простой способ это обнаружить ошибку. Например, с помощью контрольной суммы или какого-либо другого алгоритма. Если у нас технология канального уровня использует обнаружение технических ошибок, то кадр в котором произошла ошибка, просто отбрасывается. Попыток восстановить данные не производится.
Более сложный механизм — это исправление ошибок. Чтобы иметь возможность исправить ошибку, нужно добавить к данным дополнительную информацию, с помощью которой мы сможем обнаружить ошибки и восстановить правильные данные. Для этого используются специальные коды исправляющие ошибки.
Другой вариант исправление ошибок при передаче данных — это повторная отправка тех кадров в которых произошла ошибка. Он используется совместно с обнаружением ошибок, когда отправитель передает данные получателю, получатель обнаруживает ошибку в данных, но вместо того чтобы исправить ошибку в передаваемых данных, отправитель передает эти данные еще раз.
Давайте рассмотрим, как реализуется повторная отправка сообщений. Предположим, что у нас есть отправитель и получатель и отправитель передал получателю некоторое сообщение. Получатель получил это сообщение проверил его на корректность убедился, что данные переданы правильно и после этого передает отправителю подтверждение о получении. Отправитель передает следующее сообщение предположим, что здесь произошла ошибка, получатель эту ошибку обнаружил или сообщение вообще не дошло до получателя, поэтому получатель не может передать подтверждение о получении этого сообщения.
Отправитель, после того как, отправил сообщение запустил таймер ожидания подтверждения. По истечению времени ожидания подтверждение не пришло, отправитель понял, что при передаче сообщения произошла проблема и нужно повторно передать то же самое сообщение.
В этот раз сообщение успешно дошло до получателя и он снова передает подтверждение. После этого отправитель может передавать следующий кадр.
Есть два варианта метода повторной отправки сообщения. Схему которую мы рассмотрели называется с остановкой и ожиданием. Отправитель передает фрейм и останавливается ожидая подтверждение. Следующий кадр передается только после того, как пришло подтверждение о получении предыдущего сообщения. Такой метод используются в технологии канального уровня Wi-Fi.
Другой вариант метода повторной отправки это скользящее окно. В этом случае отправитель передает ни одно сообщение, а сразу несколько сообщений и количество сообщений, которые можно передать не дожидаясь подтверждения называется размером окна. Здесь получатель передает подтверждение не для каждого отдельного сообщения, а для последнего полученного сообщения. Такой метод лучше работает на высокоскоростных каналах связи. Сейчас нет технологии канального уровня, которая использует этот метод, но он используется на транспортном уровне в протоколе TCP.
У нас есть несколько вариантов, что можно делать с ошибками. Можно их обнаруживать, исправлять с помощью кодов исправления ошибок, либо с помощью повторной доставки сообщений. Также мы можем исправлять и обнаруживать ошибки на канальном уровне, либо на вышестоящих уровнях.
Множественный доступ к каналам
Как это лучше делать? Практика показала, что на каналах где ошибки возникают редко, например, если данные передаются по проводам, то на канальном уровне лучше использовать простое обнаружение ошибок. А если ошибки в среде передачи данных происходят часто, например как это происходит в wifi? где используются электромагнитное излучение и много помех, то ошибки эффективнее обнаруживать и исправлять прямо на канальном уровне. Модель взаимодействия открытых систем разрабатывалась, когда на практике использовались только каналы связи “точка-точка” — это были последовательные линии связи, которые объединяли большие компьютеры.
Затем появились другие технологии канального уровня, на основе разделяемых каналов связи, когда к одной и той же среде передачи данных подключено несколько устройств. В таких каналах появились новые задачи, которые не были учтены в модели взаимодействия открытых систем, поэтому пришлось поменять эту модель и разделить канальный уровень на два подуровня.
Подуровни канального уровня
Подуровень №1 — управление логическим каналом (logical link control) LLC, а подуровень №2 — управление доступом к среде (media access control) MAC.
Подуровень LLC отвечает за передачу данных, формирование кадров, обработку ошибок и тому подобное. LLC общий уровень для различных технологий канального уровня.
Подуровень MAC используется, если технология канального уровня с разделяемым доступом. Если технология канального уровня используют соединение “точка-точка”, то подуровень MAC не нужен.
Во-первых если у нас есть несколько устройств, которые подключены к одному и тому же каналу связи, то при передаче данных мы должны явно указать, к какому устройству эти данные предназначены. Для этого используются адресация канального уровня, также необходимо обеспечить корректное, совместное использование разделяемой среды передачи данных.
Подуровень MAC особенный для разных технологий канального уровня, он зависит от того, какая среда передачи данных используется.
Услуги подуровня LLC
Мультиплексирование — передача данных через одну технологию канального уровня, нескольких типов протоколов вышестоящего уровня. Управление потоком, если в сети устройства, которые работают с разной скоростью, то более мощное устройство, может начать передавать данные очень быстро, так что более слабые устройства не успевают их принимать. В компьютерных сетях это называется “затопление” и некоторые технологии канального уровня обеспечивают защиту от затопления медленного получателя быстрым отправителем.
Множественный доступ к каналу связи
Предположим, есть какая-то общая среда передачи данных, к которой подключены несколько компьютеров и они начали передавать данные одновременно. Но так как среда передачи данных одна, то данные искажаются и не могут быть прочитаны из среды. Это называется коллизия. Подуровень MAC обеспечивает управление доступом, к разделяемой среде. В один и тот же момент времени, канал связи для передачи данных должен использовать только один отправитель. В противном случае произойдет коллизия и данные искажаются.
Методы управления доступом:
Раньше было очень много технологий канального уровня, каждая из которых обладала теми или иными преимуществами и недостатками. Однако сейчас в процессе развития остались только две популярные технологии это ethernet и вай-фай.
Мы рассмотрели канальный уровень, его основные задачи. Выяснили, что канальный уровень может обнаруживать и исправлять ошибки. Спасибо за прочтение статьи, надеемся она была для Вас полезной.
