tanenbaum_seti_all.pages (525408), страница 59
Текст из файла (страница 59)
Для этих целей канальный уровень берет пакеты, полученные с сетевого уровня, и вставляет их в специальные кадры д.ш передачи. В каждом кадре содсржится заголовок, поле данных и концевик, Структура кадра показана на рис. 3.1. Управление кадрами — это основа деятельности уровня передачи данных. В следующих разделах мы более подробно изучим обозначенные выше вопросы. Отправитель Получатель Рис. Злк Взаимодействие между пакетами и кадрами Хотя эта глава и посвящена детальному рассмотреншо уровня передачи данных и соответствующих протоколов, многие вопросы, обсутклаемыс здесь, такие как контроль ошибок и контроль потока, относятся также к транспортным и другим протоколам.
На самом деле, во многих сстях эти функции являются прерогативой верхних уровней и вообще не относятся к уровню передачи данных. С другой стороны, ие так уж это важно, потому что основные принципы все равно остаются неизменными. Аргументом в пользу рассмотрения их именно в свете уровня передачи данных является то, что здесь опи предстают в наиболее простой форме и их легко показать в деталях. 224 Глава В.
Уровень передачи данных Сервисы, предоставляемые сетевому уровню 3алача уровня передачи данных заключается в предоставлении сервисов сетевому уровщо. Основн>т<х< сервисом является нсрслача данных от сетевого уровня переда>ошей машины сетевому уровню принимающей маншны. На передающей машине работает некая сущность, нлн пропссс, который передаст биты с сетевого уровня на уровень передачи ланнь<х для нсрслачн их но назначения>. 1'аб<л а уровня нсрсдачн ланных заключается в передаче этих битов на приннмаю<цую машину так, чтобы онн могли быть нсрсланы сстевому уровщо нринпма>ощсй машщн >, как показано на рнс, 3.2, и.
В действ>ттсльностн данные передаются по пути, показанному на рнс, 3.2, б, однако проще представлять ссбс два уровня псрслачн ланных, связыва<ошнхся друг с другом нри помощи протокола передачи данных, 11о этой прнщще на протяжении агой главы будет использоваться модель, изображенная на рнс. 3.2, а. Хост 1 Хост 2 Хост 1 Хост 2 ед х Б х< х В <т о. ~ с> с Рнс. 3.2.
Виртуальное соединение )а); реальное соединение [б) уровень передачи данных может предоставлять различные сервисы. Их набор может быть разным в разных системах. Обычно возможны следующие варианты. 1. Сервис без нодп>сржлсний, без установки соединения. 2. Сервис с подтверждениями, без установки соединения. 3. Сервис с подтверждениями, ориентированная па соединение. рассмотрим зти варианты по очереди.
Сервис без ш>лтвсрждсний и без установки соелинения заключается в том, что передающая машина посылает независимые калры принимающей машине, ключевые аспекты организации уровня передачи данных 225 а принимающая машина не посылает подтверждений о приеме кадров. Никакие соединения заранее не устанавливаются и не разрываются после передачи кадров, Если какой-либо кадр теряется из-за шума в линии, то на уровне передачи данных не предпринимается никаких попыток восстановить его. Данный класс сервисов приемлем при очень низком уровне ошибок.
В этом случае вопросы, связанные с восстановлением потерянных при передаче данных, могут быть оставлены верхним уровням. Он такжс применяется в линиях связи реального времени, таких как передача речи, в которых лучше получить искажспныс данные, чем получить их с большой задержкой. Сервис без подтверждений и без установки соединения используется в уровне передачи данных в большинстве локальных сетей. Следующим шагом в сторону повышения надежности является сервис с подтверждениями, без установки соединения. При сго использовании соединение также не устанавливается, но получение каждого кадра полтверждается.
Таким образом, отправитель знает, дошел ли кадр до пункта назначения в целости. Если в течение установленного интервала времени подтверждения не поступает, кадр посылается снова. Такая служба полезна в случае использования каналов с большой вероятностью ошибок, например, в беспроводных системах. Вероятно, следует отметить, что предоставлснис подтверждений является скорее оптимизацией, чем требованием. Сетевой уровень всегда может послать пакет и ожила~в подтвержления его доставки.
Если за установлснньш период времени подтверждение не будет получсно отправителем, сообщеннс может быть выслано еще раз. Проблема при использовании данной стратегии заключается в том, что кадры обы шо имеют жесткое ограничение максимальной длины, связанное с аппаратными требованиями.
Пакеты сетевого уровня таких ограничений нс имеют. Таким образом, если среднее сообщспие разбивается на 10 кадров и 20 Ж из них теряется по дороге, то передача сообщения таким методом может занять очень много времени. Если подтверждать получение отдельных кадров и в случае ошибки посылать их повторно, передача всего сообщения займет гораздо меньше времени.
В таких надежных каналах, как, например, оптоволоконный кабель, накладные расходы на подтверждения на уровне передачи данных только снизят пропускную способность канала, однако для беспроводной связи такие расходы окупятся и уменьшат время передачи ллипных сообшений. Наиболее сложным сервисом, который может предоставлять уровень передачи данных, является ориентированная на соединение служба с подтверждениями.
При использовании данного метола источник и приемник, прежде чем передать друг другу данные, устанавливают соединение. Каждый посылаемый кадр нумеруется, а канальный уровень гарантирует, что каждьш посланный кадр лсйствительно принят на другой стороне канала связи. Кроме того, гарантируется, что каждый кадр был принят всего один раз и что все кадры были получены в правильном порядке. В службе без установления соединения, напротив, возможно, что при потере подтверждения один и тот же калр будет послан несколько раз и, следовательно, несколько Раз получен. Ориентированный па соединение сервис предоставляет процессам сетевого уровня эквивалент надежного потока битов. 22В Глава 3.
Уровень передачи данных При использовании ориентированного на соединение сервиса передача данных состоит из трех различных фаз. В первой фазе устанавливается соединение, при этом обе стороны инициализируют переменные и счетчики, необходимые для слежения за тем, какие кадры уже приняты, а какие — еще нет, Во второй фазе передаются кадры данных. Наконец, в третьей Фазе соединение разрывается и при этом освобождаются все переменные, буферы и прочие ресурсы, использовавшиеся во время соединения.
Рассмотрим типичный пример: глобальная сеть, состоящая из маршрутизаторов, соединенных от узла к узлу выделенными телефонными линиями, Когда кадр прибывает на маршрутизатор, аппаратура проверяет его на наличие ошибок (с помощью метода, который мы изучим чуть позднее) и передает кадр программному обеспечению уровня передачи данных (которое может быть внедрено в микросхему сетевой карты). Программа уровня передачи данных проверяет, тот ли это кадр, который ожидался, и если да, то передает пакет, хранящийся в поле полезной нагрузки кадра, программе маршрутизации. Программа маршрутизации выбирает нужную выходящую линию и псрсдает пакет обрапю программе уровня передачи данных, который передает его дальше по сети.
Прохождение сообщения через два маршрутизатора показано на рис. 3.3. Рис. 3.3. Протокол передачи данных Программы маршрутизации часто требуют правильного выполнения работы, то есть им нужно надежное соединение с упорядоченными пакетами на всех линиях, соединяющих маршрутизаторы, Такие программы обычно не лк)бят, если приходится слишком часто беспокоиться о потерянных пакетах. Сделать ненадежные линии надежными или хотя бы довольно хорошими — задача уровня передачи данных, показанного на рисунке пунктирным прямоугольником. Заметим, что хотя на рисунке показаны несколько копий программы уровня передачи данных, на самом деле все линии связи обслуживаются одной копией программы с различными таблицами и структурами данных для каждой линии.
ключевые аспекты организации уровня пвредачи данных 227 Формирование кадра для предоставления сервиса сетевому уровню уровень передачи данных должен использовать сервисы, предоставляемые ему физическим уровнем. Физический уровень принимает необработанный поток битов и пытастся передать его по назначению. Этот поток пе застрахован от ошибок. Количество принятых бит может быть меньше, равно нли больше числа переданн гвх бит; кроме того, значения принятых битов могут отличаться от значений переда>шых.
Уровснь передачи данных должен обнаружить ошибки и, если нужно, исправить их. Обычно уровень передачи данных разбивает поток битов на отдельные кадры и считает для каждого кадра контрольную сумму. (Алгоритмы подсчета контрольных сумм будут обсуждаться далее в этой главе.) Когда кадр прибывает в пункт назначения, его контрольная сумма подсчитывается снова. Если она отличается от содержащейся в кадре, то уровень псредачи данных понимает, что при передаче кадра произошла ошибка, и принимает меры (например, игнорирует испорченный кадр и посыласт передающей машине сообщение об опшбкс).
Разбиение потока битов па отдельные кадры представляет собой более сложную задачу, чем это может показаться на первый взгляд. Один из способов разбиения па кадры заключается во вставке временных интервалов между кадрами, подобно тому, как вставляются пробелы между словами в тексте. Однако сети редко предоставляют гарантии сохранения временных параметров при псредаче данных, поэтому возможно, что эти интсрвалы при перслачс исчезнут или, наоборот, булут добавлены новые интервалы.
Поскольку для отметки начала и конца калра полагаться на временные параметры слишком рискованно, были разработаны другие методы. В данном разделе мы рассмотрим четыре метода маркировки границ калров. Е Подсчет количества символов. 2. Использование сигнальных байтов с символьным заполнением, 3. Использование стартовых и стоповых битов с битовым заполнением. 4. Использование запрещенных сигналов физического уровня. Первый метод формирования кадров использует поле в заголовке для указания количества символов и кадре, Когла уровеш передачи данных на пршщмающем компьютсре видит это поле, он узнает, сколько символов послслует, и таким образом определяет, где находится конец кадра.