Э. Таненбаум, Д. Уэзеролл - Компьютерные сети (1114668), страница 65
Текст из файла (страница 65)
Этоозначает, что в самих данных некоторые сигналы не появляются. Например, в линии4B/5B четыре бита данных сопоставляются с пятью сигнальными битами, для тогочтобы гарантировать удовлетворительную передачу битов. Таким образом, 16 из 32возможных сигналов не используются. Некоторые из зарезервированных сигналовможно применять для обозначения начальной и конечной границы кадров. Фактически для разграничения кадров можно применять «запрещенные сигналы».
Прелестьэтого метода в том, что использование зарезервированных сигналов делает поискначальной и конечной границы кадра чрезвычайно простым, отменяя необходимостьзаполнять данные дополнительными байтами или битами.Во многих протоколах канального уровня для повышения безопасности используются различные сочетания описанных методов. В протоколах Ethernet и 802.11кадр часто начинается с четко определенного шаблона, называемого преамбулой(preamble).
Этот шаблон может быть довольно длинным (для 802.11 обычно 72 бита),что упрощает адресату задачу приема пакета. Вслед за преамбулой в заголовке передается поле длины (счетчик битов). Он нужен для обнаружения конца кадра.3.1.3. Обработка ошибокРешив проблему маркировки начала и конца кадра, мы сталкиваемся с новой проблемой: как гарантировать доставку сетевому уровню принимающей машины всехкадров и при этом расположить их в правильном порядке.
Предположим, что уадресата есть возможность понять, содержит полученный кадр правильную илиошибочную информацию (подробнее о кодах, позволяющих распознать и исправитьошибки передачи, мы поговорим чуть далее). В линиях, где подтверждение передачине требуется, отправитель просто посылает кадры, не заботясь о том, дошли ли они до224 Глава 3. Канальный уровеньадресата. Но для ориентированного на соединение сервиса с подтверждениями этогонедостаточно.Обычно для гарантирования надежной доставки отправителю посылается информация о том, что происходит на другом конце линии. Протокол требует от получателяпосылать обратно специальные управляющие кадры, содержащие позитивные илинегативные сообщения о полученных кадрах.
Получив позитивное сообщение, отправитель узнает, что посланный им кадр успешно получен на том конце линии. Негативное сообщение, напротив, означает, что с кадром что-то случилось и его нужнопередать снова.Кроме того, посланный кадр может из-за неисправности оборудования или какойнибудь помехи (например, шума) пропасть полностью. В этом случае принимающаясторона его просто не получит и, соответственно, никак не прореагирует.
Аналогично,если кадр подтверждения теряется, то отправитель также не знает, как ему действовать дальше. Очевидно, что протокол, в котором отправитель отсылает кадр, а затемначинает ожидать подтверждения (положительного или отрицательного ответа),зависнет навсегда, если кадр потеряется из-за, например, сбоя оборудования иликоммуникационного канала.Чтобы избежать зависаний сети в случае полной потери кадров, используютсятаймеры канального уровня. После посылки кадра включается таймер, отсчитываяинтервал времени, достаточный для получения принимающим компьютером этогокадра, его обработки и посылки обратно подтверждения. В нормальной ситуации кадрправильно принимается, а подтверждение посылается назад и вручается отправителю,прежде чем истечет установленный интервал времени, и только после этого таймеротключается.Однако если либо кадр, либо подтверждение теряется по пути, установленныйинтервал времени истечет, и отправитель получит сообщение о возможной проблеме.Самым простым решением для отправителя будет послать кадр еще раз.
Однако приэтом возникает опасность получения одного и того же кадра несколько раз на канальном уровне принимающего компьютера и повторной передачи его сетевому уровню.Чтобы этого не случилось, необходимо последовательно пронумеровать отсылаемыекадры, так чтобы получатель мог отличить повторно переданные кадры от оригиналов.Вопрос управления таймерами и порядковыми номерами, гарантирующими, чтокаждый кадр доставлен сетевому уровню принимающего компьютера ровно один раз,не больше и не меньше, является очень важной частью задачи, решаемой канальнымуровнем (и более высокими уровнями). Ниже в этой главе мы подробно изучим методы этого управления на серии постепенно усложняющихся примеров.3.1.4. Управление потокомЕще один важный аспект разработки канального уровня (а также более высоких уровней) связан с вопросом о том, что делать с отправителем, который постоянно желаетпередавать кадры быстрее, чем получатель способен их получать.
Такая ситуация может возникнуть, если у передающей стороны оказывается более быстрый и мощныйкомпьютер, чем у принимающей. Представьте, например, смартфон, запрашивающийвеб-страницу с высокотехнологичного сервера. Мощнейшая машина развертывает3.2. Обнаружение и исправление ошибок 225пожарный шланг, наводит его на бедный телефон и бомбардирует его данными до техпор, пока тот не захлебнется. Даже при идеально работающей линии связи в определенный момент получатель просто не сможет продолжать обработку все прибывающихкадров и начнет их терять.Очевидно, что для предотвращения подобной ситуации следует что-то предпринять. В настоящее время применяются два подхода. При первом, называющемсяуправлением потоком с обратной связью (feedback-based flow control), получательотсылает отправителю информацию, разрешающую последнему продолжить передачуили, по крайней мере, сообщающую о том, как идут дела у получателя.
При второмподходе, управлении потоком с ограничением (rate-based flow control), в протоколвстраивается механизм, ограничивающий скорость, с которой передатчики могутпередавать данные. Обратная связь с получателем отсутствует.В этой главе мы рассмотрим только подход с обратной связью, в основном потому,что подход с ограничением используется только на транспортном уровне (подробнееоб этом — в главе 5). Управление потоком с обратной связью применяется на канальном уровне, но чаще — на более высоких уровнях.
При этом оборудование канальногоуровня работает достаточно быстро, чтобы потери информации не происходило. Например, про аппаратную реализацию этого уровня в виде карт NIC (Network InterfaceCard — сетевая интерфейсная карта) говорят, что она работает со скоростью передачиданных, то есть кадры обрабатываются с той же скоростью, с какой они прибывают.Канальный уровень не отвечает за переполнение, эти проблемы решаются на болеевысоких уровнях.Известны различные схемы контроля потока с обратной связью, но большинствоиз них использует один и тот же принцип.
Протокол содержит четко определенныеправила, определяющие, когда отправитель может посылать следующий кадр. Этиправила часто запрещают пересылку кадра до тех пор, пока получатель не даст разрешения, либо явно, либо неявно. Например, при установке соединения получательможет сказать: «Вы можете послать мне сейчас n кадров, но не посылайте следующиекадры, пока я не попрошу вас продолжать». В данной главе мы рассмотрим различныемеханизмы, основанные на этом принципе.3.2. Обнаружение и исправление ошибокКак было показано в главе 2, у каналов передачи данных большой диапазон характеристик.
В некоторых каналах, таких как оптическое волокно в телекоммуникационных сетях, вероятность ошибки крайне низка, поэтому потеря данных происходитисключительно редко. Но количество ошибок, например, в беспроводных сетях илистарых местных сетях в десятки раз больше. Здесь ошибки передачи вообще считаютсянормой. Для того чтобы полностью исключить их, потребуются слишком большиезатраты в терминах производительности.
Отсюда следует вывод: ошибки при передаче данных останутся важным фактором еще на долгие годы. Сейчас мы приступаемк изучению методов их обнаружения и устранения.Разработчики сетей создали две основные стратегии для борьбы с ошибками. Каждый метод основывается на добавлении к передаваемым данным некоторой избыточ-226 Глава 3. Канальный уровеньной информации. В одном случае этой информации должно быть достаточно, чтобыпринимающая сторона могла выявить, какие данные должны были прийти. В другомслучае избыточной информации должно быть достаточно только для того, чтобы получатель понял, что произошла ошибка (без указания ее типа), и запросил повторнуюпередачу.
Первая стратегия использует коды, называющиеся корректирующими иликодами с исправлением ошибок (error-correcting codes). Вторая — коды с обнаружением ошибок (error-detecting codes). Использование кода с исправлением ошибокчасто называют прямым исправлением ошибок (Forward Error Correction — FEC).Каждая стратегия занимает свою, так сказать, экологическую нишу. В высоконадежных каналах, таких как оптоволокно, дешевле использовать код с обнаружениемошибок и просто заново передавать случайные поврежденные блоки. Однако, скажем,беспроводные соединения, в которых может возникать множество ошибок, чаще используют коды с избыточностью, достаточной для того, чтобы приемник мог определить, какие данные должны были прийти.
Прямое исправление ошибок применяетсяв шумных каналах, так как вероятность ошибки при повторной передаче так же велика,как и при первой.Для того чтобы определить, какой метод лучше подойдет в конкретной ситуации,нужно понять, какой тип ошибок более вероятен. Ни код с исправлением ошибок, никод с обнаружением ошибок не позволят справиться со всеми возможными ошибками, поскольку лишние биты, передаваемые для повышения надежности, такжемогут быть повреждены в пути. Хорошо бы, если бы каналы передачи данных моглиотличать дополнительные биты от битов данных, но это невозможно. Для канала всебиты одинаковы. Это означает, что для того чтобы избежать необнаруженных ошибок,необходимо использовать достаточно надежные коды, чтобы успешно справляться совсеми обнаруженными.В одной модели считается, что причина ошибок — экстремально высокие значениятермального шума, которые изредка на короткие промежутки времени перекрываютсигнал, порождая изолированные однобитные ошибки.