При передачи данных канального уровня решаются ряд проблем, свойственных только этому уровню:
- реализация сервиса для сетевого уровня;
- объединение битов, которые поступают из физического уровня, в кадры;
- обработка ошибок передачи;
- управление потоком кадров.
Основное задание канального уровня - обеспечить сервис сетевому уровню. Канальный уровень может обеспечивать разные классы сервиса. Три общих класса сервиса:
1. Сервис без сообщения и без соединения;
2. Сервис с сообщением и без соединения;
3. Сервис с сообщением и с соединением.
Сервис без сообщения и без соединения не допускает, что прием переданного кадра должен подтверждаться, что к началу передачи должно устанавливаться соединение, что после передачи должно разрываться. Если в результате препятствий на физическом уровне кадр будет затерян, то никаких попыток на канальном уровне его возобновить не будет. Этот класс сервиса используется там, где физический уровень обеспечивает высокую надежность при передаче. В этом случае возобновления при потери кадров можно положить на верхние уровни. Этот класс сервиса также применяется при передаче данных в реальном времени там, где лучше потерять часть данных, чем увеличить задержку в их доставке. Например, передача языка. Большинство ЛОМОВ используют этот класс сервиса на канальном уровне.
Следующий класс сервиса - сообщение без соединения. В этом классе получение каждого посланного кадра должно быть подтверждено. Если подтверждение не пришло в течение определенного времени, то кадр должен быть послан опять. Этот класс сервиса используется в ненадежной физической среде передачи, например, беспроволочной.
Наиболее сложный класс сервиса на канальном уровне - сервис с сообщением и соединением. Этот класс сервиса допускает, что к началу передачи между машинами устанавливается соединение, и данные передаются по этому соединению. Каждый переданный кадр нумеруется и канальный уровень гарантирует, что кадр будет обязательно получен и только один раз, а все кадры будут получены в надлежащей последовательности. При сервисе без соединения этого гарантировать нельзя потому, что потеря сообщения о получении кадра приведет к его пересылке так, что может появиться несколько идентичных кадров.
При сервисе с сообщением и соединением передача разбивается на три этапа. На первом этапе устанавливают соединение: на обеих машинах инициирующие счетчики, которые отслеживают какие кадры были приняты, а какие нет. На втором этапе передают один или несколько кадров. На третьем - соединения разрывают: переменные, счетчики, буферы и другие ресурсы, использованные для поддержки соединения, освобождаются.
Разбивка на кадры
Сервис, создаваемый канальным уровнем для сетевого, опирается на сервис, создаваемый физическим уровнем. На физическом уровне протекают потоки битов. Послано количество битов не обязательно равняется принятой, значение посланного бита так же не обязательно равняется принятому. Поэтому нужны специальные усилия на канальном уровне по выявлению и исправлению ошибок.
Типичный подход к решению этой проблемы - разбивка потока битов на кадры, подсчет контрольной суммы для каждого кадра при посылке данных. При принятии контрольная сумма вычисляется для каждого кадра заново и равняется из той, что сохраняться в кадре. Если они отличаются, то это признак ошибки передачи. Канальный уровень должен принять меры к исправлению ошибки, например, сбросить плохой кадр, послать сообщение об ошибке тому, кто послал этот кадр.
Выявление ошибок
Для решения проблемы попадания кадров на сетевой уровень по назначению и в надлежащей последовательности устанавливается обратная связь между отправителем и получателем в виде кадра подтверждения. Если кадр-подтверждение несет позитивную информацию, то считается, что переданные кадры прошли нормально, если там сообщение об ошибке, то переданные кадры нужно передать заново.
Однако, возможны случаи когда через ошибки в канале кадр исчезнет полностью. В этом случае получатель ни как не будет реагировать, а отправитель будет как угодно долго ожидать подтверждения. Для решения этой проблемы на канальном уровне вводят таймеры. Таймер это счетчик, который увеличивает или уменьшает свое значение на единицу автоматически, при получении тактирующего импульса. Это своего рода часы. Когда значение этого счетчика достигает предварительно определенного значения или нуля, возникает прерывание. Как только канальный уровень передает дежурный кадр на физический, то одновременно он устанавливает таймер на определенное время. Этого времени должно хватать на то, чтобы получатель получил кадр, а отправитель получил подтверждение.
Если отправитель не получит подтверждения раньше, чем минет время, установленное на таймере, то он будет считать, что кадр затерян и повторит его еще раз.
Однако, если кадр подтверждения был затерян, то весьма возможно, что тот же кадр получатель получит дважды. Как быть? Для решения этой проблемы каждому кадру присваивают порядковый номер. С помощью этого номера получатель может обнаружить дубли.
Следовательно, таймеры и нумерация кадров - вот основные средства на канальном уровне, которые обеспечивают доставку каждого кадра к сетевому уровню в точке назначения в единственном экземпляре.
Специфика локальных сетей также нашла свое отражение в делении канального уровня на два подуровня, которые часто называют также уровнями. Канальный уровень (Data Link Layer) делится в локальных сетях на два подуровня:
- логической передачи данных (Logical Link Control, LLC);
- управление доступом к среде (Media Access Control, MAC).
Уровень MAC появился через существование в локальных сетях среды передачи данные. Именно этот уровень обеспечивает корректное общее использование общей среды, предоставляя ее в соответствии с определенным алгоритмом в распоряжение той или другой станции сети. После того как доступ к среде получен, ею может пользоваться больше высокий уровень - уровень LLC, который организует передачу логических единиц данных, кадров информации, с разным уровнем качества транспортных услуг. В современных локальных сетях получили распространение несколько протоколов уровня MAC, что реализуют разные алгоритмы доступа к среде. Эти протоколы полностью определяют специфику таких технологий, как Ethernet, Fast Ethernet, Gigabit Ethernet, Token Ring, FDDI, l00VG-AnyLAN.
Уровень LLC отвечает за передачу кадров данных между узлами с разной степенью надежности, а также реализует функции интерфейса с прилегающим к нему сетевым уровнем. Именно через уровень LLC сетевой протокол спрашивает у канального уровня нужную ему транспортную операцию с нужным качеством. На уровне LLC существует несколько режимов работы, которые отличаются наличием или отсутствием на этом уровне процедур возобновления кадров в случае их потери или перекручивания, то есть транспортных услуг, которые отличаются качеством, этого уровня.
Протоколы уровней MAC и LLC взаимно независимы - каждый протокол уровня MAC может применяться с любым протоколом уровня LLC, и наоборот.