Э. Таненбаум - Компьютерные сети. (4-е издание) (DJVU) (1130092), страница 60
Текст из файла (страница 60)
При его использовании соединение также не устанавливается, но получение каждого кадра подтверждается. Таким образом, отправитель знает, дошел ли кадр до пункта назначения в целости. Если в течение установленного интервала времени подтверждения не поступает, кадр посылается снова. Такая служба полезна в случае использования каналов с большой вероятностью ошибок, например, в беспроводных системах.
Вероятно, следует отметить, что предоставление подтверждений является скорее оптимизацией, чем требованием. Сетевой уровень всегда может послать пакет и ожидать подтверждения его доставки. Если за установленный период времени подтверждение не будет получено отправителем, сообщение может быть выслано еще раз. Проблема при использовании данной стратегии заключается в том, что кадры обычно имеют жесткое ограничение максимальной длины, связанное с аппаратными требованиями. Пакеты сетевого уровня таких ограничений не имеют.
Таким образом, если среднее сообщение разбивается на 10 кадров и 20 Ж из них теряется по дороге, то передача сообщения таким методом может занять очень много времени, Если подтверждать получение отдельных кадров и в случае ошибки посылать их повторно, передача всего сообщения займет гораздо меньше времени. В таких надежных каналах, как, например, оптоволоконный кабель, накладные расходы на подтверждения на уровне передачи данных только снизят пропускную способность канала, однако для беспроводной связи такие расходы окупятся и уменьшат время передачи длинных сообщений. Наиболее сложным сервисом, который может предоставлять уровень передачи данных, является ориентированная на соединение служба с подтверждениями. При использовании данного метода источник и приемник, прежде чем передать друг другу данные, устанавливают соединение, Каждый посылаемый кадр нумеруется, а канальный уровень гарантирует, что каждый посланный кадр действительно принят на другой стороне канала связи.
Кроме того, гарантируется, что каждый кадр был принят всего один раз и что все кадры были получены в правильном порядке. В службе без установления соединения, напротив, возможно, что при потере подтверждения один и тот же кадр будет послан несколько Раз и, следовательно, несколько раз получен.
Ориентированный на соединение сеРвис предоставляет процессам сетевого уровня зквивалент надежного потока битов. 226 Глава 3. Уровень передачи данных При использовании ориентированного на соединение сервиса передача данных состоит из трех различных фаз. В первой фазе устанавливается соединение, при этом обе стороны инициализируют переменные и счетчики, необходимые для слежения за тем, какие кадры уже приняты, а какие — еще нет.
Во второй фазе передаются кадры данных. Наконец, в третьей фазе соединение разрывается и при этом освобождаются все переменные, буферы и прочие ресурсы, использовавшиеся во время соединения. Рассмотрим типичный пример: глобальная сеть, состоящая из маршрутизаторов, соединенных от узла к узлу выделенными телефонными линиями. Когда кадр прибывает на маршрутизатор, аппаратура проверяет его на наличие ошибок (с помощью метода, который мы изучим чуть позднее) и передает кадр программному обеспечению уровня передачи данных (которое может быть внедрено в микросхему сетевой карты), Программа уровня передачи данных проверяет, тот ли зто кадр, который ожидался, и если да, то передает пакет, хранящийся в поле полезной нагрузки кадра, программе маршрутизации.
Программа маршрутизации выбирает нужную выходящую линию и передает пакет обратно программе уровня передачи данных, который передает его дальше по сети. Прохождение сообщения через два маршрутизатора показано на рис. 3.3. Рис. 3.3. Протокол передачи данных Программы маршрутизации часто требуют правильного выполнения работы, то есть им нужно надежное соединение с упорядоченными пакетами на всех линиях, соединяющих маршрутизаторы. Такие программы обычно не любят, если приходится слишком часто беспокоиться о потерянных пакетах. Сделать ненадежные линии надежными или хотя бы довольно хорошими — задача уровня пеРедачи данных, показанного на рисунке пунктирным прямоугольником. Заметим, что хотя на рисунке показаны несколько копий программы уровня передачи данных, на самом деле все линии связи обслуживаются одной копией программы с различными таблицами и структурами данных для каждой линии.
Ключевые аспекты организации уровня передачи данных 227 Формирование кадра для предоставления сервиса сетевому уровню уровень передачи данных должен использовать сервисы, предоставляемые ему физическим уровнем. Физический уровень принимает необработанный ноток битов и пытается передать его по назначению. Этот поток не застрахован от ошибок. Количество принятых бит может быть меньше, равно или больше числа переданных бит; кроме того, значения принятых битов могут отличаться от значений переданных. Уровень передачи данных должен обнаружить ошибки и, если нужно, исправить их.
Обычно уровень передачи данных разбивает поток битов на отдельные кадры и считает для каждого кадра контрольную сумму. (Алгоритмы подсчета контрольных сумм будут обсуждаться далее в этой главе.) Когда кадр прибывает в пункт назначения, его контрольная сумма подсчитывается снова. Если опа отличается от содержащейся в кадре, то уровень передачи данных понимает, что при передаче кадра произошла ошибка, и принимает меры (например, игнорирует испорченный кадр и посылает передающей машине сообщение об ошибке). Разбиение потока битов на отдельные кадры представляет собой более сложную задачу, чем это может показаться на первый взгляд. Один иэ способов разбиения на кадры заключается во вставке временных интервалов между кадрами, подобно тому, как вставляются пробелы между словами в тексте. Однако сети редко предоставляют гарантии сохранения временных параметров при передаче данных, поэтому возможно, что эти интервалы при передаче исчезнут или, наоборот, будут добавлены новые интервалы.
Поскольку для отметки начала и конца кадра полагаться на временные параметры слишком рискованно, были разработаны другие методы. В данном разделе мы рассмотрим четыре метода маркировки границ кадров. Е Подсчет количества символов. 2. Использование сигнальных байтов с символьным заполнением. 3. Использование стартовых и стоповых битов с битовым заполнением.
4. Использование запрещенных сигналов физического уровня. Первый метод формирования кадров использует поле в заголовке для указания количества символов в кадре. Когда уровень передачи данных на принимающем компьютере видит зто поле, он узнает, сколько символов последует, и таким образом определяет, где находится конец кадра. Этот прием проиллюстрирован на рис. 3.4, а для четырех кадров размером 5, 5, 8 и 8 символов соответственно. Недостаток такой системы в том, что при передаче может быть искажен сам счетчик. Например, если размер второго кадра из числа 5 станет из-за ошибки в канале числом 7, как показано на рис, ЗА, б, то принимающая магштна потеряет синхронизацию н не сможет обнаружить начало следующего кадра.
Даже если контрольная сумма не совпадет (скорее всего) и принимающий компьютер поймет, что кадр принят неверно, то он все равно не сможет определить, где начало следующего кадра. Запрашивать повторную передачу кадра также бесполезно, Поскольку принимающий компьютер не знает, сколько символов нужно пропустить до начала повторной передачи. По этой причине метод подсчета символов теперь практически не применяется.
228 Глава 3, уровень передачи данных чик символов Один символ 'ч б 1 2 3 4 5 б 7 В 9 В О 1 2 3 4 5 б В 7 8 9 О 1 2 3 Кадр 3 8 символов Кедр 2 5 символов Кадр 4 8 символов Кадр 1 5 символов Ошибка 5 1 2 3 4 7 б 7 8 9 В О 1 2 3 4 5 6 9 7 8 9 О 1 2 3 Кадр 1 Кедр 2 теперь этот символ (Неправильный) воспринимается квк счетчик Рис. 3.4. Поток символов. без ошибок (а); с одной ошибкой (б) Концевик г(АО Поле данных Е(АО Заголовок Исходные символы После заполнения А Р(АΠ — ~ ЕЗС гьАО А ЕЗС В вЂ” В ЕЗС ЕЗС А ЕЗС г(АΠ — ~ А ЕЗС ЕЗС ЕЗС г(АО В А ЕЗС ЕЗС В вЂ” ~ А ЕЗС ЕЗС ЕЗС ЕЗС В Рис. 3,5. КадР, ограниченный флаговыми байтами (е); четыре примера байтовых последовательностей до и после символьного заполнения (б) Второй метод формирования кадров решает проблему восстановления синхронизации после сбоя при помощи маркировки начала и конца каждого кадра специальными байтами.