Главная его задача – удостовериться, что канал свободен и ничто не станет угрожать надежности передачи и целостности пакетов. В идеале протоколы канального уровня в паре с сетевым оборудованием должны проверить, является ли канал свободным для передачи данных, не имеется ли коллизий и т. п.
Такую проверку необходимо проводить каждый раз, поскольку локальная сеть редко состоит всего из двух компьютеров, хотя даже в этом случае канал может быть занят. Обнаружив, что канал свободен, данные, которые необходимо передать другому компьютеру, делятся на более мелкие части – кадры. Каждый такой кадр снабжается контрольной суммой и отсылается. Приняв этот кадр, получатель проверяет контрольные суммы и, если они совпадают, принимает его и отправляет подтверждение о доставке. В противном случае кадр игнорируется, фиксируется ошибка, которая отправляется получателю, и кадр передается заново. Так, кадр за кадром, происходит передача всего объема данных.
Канальный уровень также описывает алгоритмы работы в конкретной физической среде, например при использовании витой пары или оптоволокна. Сюда же включаются и правила прокладки кабеля.
Как и в случае с физическим уровнем, канальный также имеет различия для проводных и беспроводных сетей. Связано это со спецификой сетевого оборудования. Так, беспроводное оборудование на данный момент работает только в полудуплексном режиме, а это означает, что одновременно может вестись только прием или только передача. Этот факт резко снижает эффективность обнаружения коллизий и, соответственно, скорость передачи данных в беспроводных сетях.
Поскольку модель ISO/OSI жестко регламентирует действия каждого уровня, то разработчикам пришлось немного модернизировать протоколы канального уровня для работы в беспроводных сетях. В частности, в случае беспроводной передачи данных используются протоколы CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) или DCF (Distributed Coordination Function).
Протокол CSMA/CA характеризуется тем, что избегает коллизий при передаче данных, используя явное подтверждение доставки, которое говорит о том, что пакет доставлен и он не поврежден.
Работает это следующим образом. Когда один компьютер собирается передать данные другому, то всем станциям сети посылается короткое сообщение (ready to send, RTS), содержащее в себе информацию о получателе и времени, необходимом для передачи данных. Получив такой пакет, все компьютеры прекращают передачу данных на указанное время. Получатель отсылает отправителю сообщение о готовности приема данных (clear to send, CTS). Получив его, компьютер-отправитель высылает первую порцию данных и ждет подтверждения доставки пакета. После подтверждения доставки передача данных продолжается. Если же подтверждение не пришло, компьютер-отправитель повторно передает конкретный пакет.
Это