Хотя эта глава и посвящена детальному рассмотрению канального уровня и соответствующих протоколов, многие вопросы, обсуждаемые здесь, такие как контроль ошибок и контроль потока, относятся также к транспортным и другим протоколам. Обеспечение надежности — это общая цель, для достижения которой слаженно работать должны все уровни. На самом деле, во многих сетях эти функции являются прерогативой верхних уровней и вообще не относятся к канальному уровню, который выполняет лишь простейшие функции. С другой стороны, не так уж это важно, потому что принципы все равно остаются неизменными. Аргументом в пользу рассмотрения их именно в свете канального уровня является то, что здесь они предстают в наиболее простой форме и их легко показать в деталях.
3.1.1. Сервисы, предоставляемые сетевому уровню
Задача канального уровня заключается в предоставлении сервисов сетевому уровню. Основным сервисом является передача данных от сетевого уровня передающей машины сетевому уровню принимающей машины. На передающей машине работает некий процесс, который передает биты с сетевого уровня на канальный уровень для передачи их по назначению. Работа канального уровня заключается в передаче этих битов на принимающую машину, так чтобы они могли быть переданы сетевому уровню принимающей машины, как показано на рис. 3.2,
Канальный уровень может предоставлять различные сервисы. Их набор может быть разным в разных протоколах. Обычно возможны следующие варианты, которые мы рассмотрим далее по очереди.
1. Сервис без подтверждений, без установки соединения.
2. Сервис с подтверждениями, без установки соединения.
3. Сервис с подтверждениями, ориентированный на соединение.
Рис. 3.2. Виртуальное соединение (а); реальное соединение
Сервис без подтверждений и без установки соединения заключается в том, что передающая машина посылает независимые кадры принимающей машине, и принимающая машина не посылает подтверждений о приеме кадров. Хороший пример канального уровня, предоставляющего сервис такого класса, — Ethernet. Никакие соединения заранее не устанавливаются и не разрывается после передачи кадров. Если какой-либо кадр теряется из-за шума в линии, то на канальном уровне не предпринимается никаких попыток восстановить его. Данный класс сервисов приемлем при очень низком уровне ошибок. В этом случае вопросы, связанные с восстановлением потерянных при передаче данных, могут быть оставлены верхним уровням. Он также применяется в линиях связи реального времени, таких как передача речи, в которых лучше получить искаженные данные, чем получить их с большой задержкой.
Следующим шагом в сторону повышения надежности является сервис с подтверждениями, без установки соединения. При его использовании соединение также не устанавливается, но получение каждого кадра подтверждается. Таким образом, отправитель знает, дошел ли кадр до пункта назначения в целости или потерялся. Если в течение установленного интервала времени подтверждения не поступает, кадр посылается снова. Такой сервис полезен в случае использования каналов с большой вероятностью ошибок, например, в беспроводных системах. Среди сервисов такого класса можно назвать, например, 802.11 (WiFi).
Вероятно следует отметить, что предоставление подтверждений является скорее оптимизацией, чем требованием. Сетевой уровень всегда может послать пакет и ожидать подтверждения его доставки удаленной машине. Если за установленный период времени подтверждение не будет получено отправителем, сообщение может быть выслано еще раз. Проблема при использовании данной стратегии заключается в том, что она зачастую оказывается неэффективной. Кадры обычно имеют жесткое ограничение максимальной длины, связанное с аппаратными требованиями, а также существует определенная задержка доставки. На сетевом уровне эти параметры неизвестны. Сетевой уровень может разбивать сообщения, скажем, на 10 кадров. В среднем, два из них потеряются по дороге. Передача сообщения таким методом может занять очень много времени. Если подтверждать получение отдельных кадров, то ошибки можно будет исправлять напрямую и гораздо быстрее. В таких надежных каналах, как, например, оптоволоконный кабель, накладные расходы на подтверждения на канальном уровне только снизят пропускную способность канала, однако для беспроводной связи (ненадежной по своей природе) такие расходы окупятся и уменьшат время передачи длинных сообщений.