Э. Таненбаум, Д. Уэзеролл - Компьютерные сети (1114668), страница 63
Текст из файла (страница 63)
Следующие три байта — вторымбайтам потоков 1, 2 и 3 и т. д. Напишите программу, симулирующую работу мультиплексораВопросы 2153:1. В программе должно быть пять процессов. Главный создает четыре других процесса(для трех входных потоков и мультиплексора). Каждый процесс входного потока считываетв кадр STS-1 данные из файла в виде последовательности из 810 байт. Затем кадры побайтно отсылаются процессу мультиплексора. Мультиплексор принимает потоки и выводитрезультирующий кадр STS-3 (снова побайтно), записывая его на стандартное устройствовывода. Для взаимодействия между процессами используйте метод конвейеров (pipes).53.
Напишите программу для реализации CDMA. Предположите, что длина элементарнойпоследовательности равна 8 и число передающих станций 4. Ваша программа состоит изтрех наборов процессов: четыре процесса передатчика (t0, t1, t2 и t3), один соединяющийпроцесс и четыре процесса приемника (r0, r1, r2 и r3). Основная программа, которая такжедействует как соединяющий процесс, сначала читает четыре элементарные последовательности (биполярная запись) из стандартного ввода и последовательности из 4 бит (по 1 битна процесс передатчика, который будет передан) и порождает четыре пары процессовпередатчика и приемника.
Каждой паре процессов передатчика/приемника (t0, r0; t1, r1; t2,r2; t3, r3) соответствует одна элементарная последовательность, и каждому процессу передатчика назначают 1 бит (первый бит — t0, второй бит — t1 и т. д.). Затем каждый процесспередатчика вычисляет сигнал, который будет передан (последовательность из 8 битов),и посылает его в соединяющий процесс.
После получения сигналов от всех четырех процессов передатчика соединяющий процесс комбинирует сигналы и посылает объединенныйсигнал в четыре процесса приемника. Каждый процесс приемника вычисляет полученныйбит и печатает его на стандартное устройство вывода. Для взаимодействия между процессами используйте метод конвейеров (pipes).Глава 3Канальный уровеньВ этой главе мы рассмотрим принципы построения второго уровня нашей модели —канального уровня (иногда его называют также уровнем передачи данных). Мы обсудим алгоритмы, обеспечивающие надежную, эффективную пересылку целых блоковинформации, называемых кадрами (сравните с физическим уровнем, задачей которогоявляется передача отдельных битов), между двумя компьютерами.
Мы будем рассматривать две машины, физически связанные каналом связи, действующим подобнопроводу (например, коаксиальным кабелем, телефонной линией или беспроводнымканалом). Основное свойство канала, которое делает его подобным проводу, заключается в том, что биты принимаются точно в том же порядке, в каком передаются.На первый взгляд, можно подумать, что данная проблема настолько проста, чтои изучать тут нечего — машина A просто посылает биты в канал, а машина B их оттуда извлекает. К сожалению, в каналах связи иногда случаются ошибки при передачеданных.
Кроме того, скорость передачи данных ограничена, а время распространениясигнала отлично от нуля. Все эти ограничения оказывают серьезное влияние на эффективность передачи данных. Использующиеся для связи протоколы должны учитыватьвсе эти факторы. Данным протоколам и посвящена эта глава.После знакомства с ключевыми аспектами устройства канального уровня мы изучим его протоколы, рассмотрев природу ошибок и методы их обнаружения и исправления. Затем мы обсудим ряд протоколов, начиная с простых и далее рассматриваявсе более сложные протоколы.
Каждый следующий протокол будет решать все болеесложные проблемы канального уровня. Наконец, мы приведем несколько примеровпротоколов передачи данных на канальном уровне.3.1. Ключевые аспекты организацииканального уровняКанальный уровень использует определенные службы физического уровня для отправки и получения битов по коммуникационным каналам. У него есть ряд специфических функций.
К ним относятся:ÊÊ обеспечение строго очерченного служебного интерфейса для сетевого уровня;ÊÊ обработка ошибок передачи данных;ÊÊ управление потоком данных, исключающее затопление медленных приемниковбыстрыми передатчиками.3.1. Ключевые аспекты организации канального уровня 217Для этих целей канальный уровень берет пакеты, полученные с сетевого уровня,и вставляет их в специальные кадры (также часто называемые фреймами — frames)для передачи. В каждом кадре содержится заголовок, поле данных и концевик. Структура кадра показана на рис. 3.1.
Управление кадрами — это основа деятельностиканального уровня. В следующих разделах мы более подробно изучим обозначенныевыше вопросы.Рис. 3.1. Соотношение между пакетами и кадрамиХотя эта глава и посвящена детальному рассмотрению канального уровня и соответствующих протоколов, многие вопросы, обсуждаемые здесь, такие как контрольошибок и контроль потока, относятся также к транспортным и другим протоколам.Обеспечение надежности — это общая цель, для достижения которой слаженно работать должны все уровни.
На самом деле, во многих сетях эти функции являютсяпрерогативой верхних уровней и вообще не относятся к канальному уровню, которыйвыполняет лишь простейшие функции. С другой стороны, не так уж это важно, потомучто принципы все равно остаются неизменными. Аргументом в пользу рассмотренияих именно в свете канального уровня является то, что здесь они предстают в наиболеепростой форме и их легко показать в деталях.3.1.1. Сервисы, предоставляемыесетевому уровнюЗадача канального уровня заключается в предоставлении сервисов сетевому уровню.
Основным сервисом является передача данных от сетевого уровня передающеймашины сетевому уровню принимающей машины. На передающей машине работаетнекий процесс, который передает биты с сетевого уровня на канальный уровень дляпередачи их по назначению. Работа канального уровня заключается в передаче этихбитов на принимающую машину, так чтобы они могли быть переданы сетевому уровню принимающей машины, как показано на рис. 3.2, а.
В действительности данныепередаются по пути, показанному на рис. 3.2, б, однако проще представлять себе дваканальных уровня, связывающихся друг с другом при помощи протокола передачиданных. По этой причине на протяжении этой главы будет использоваться модель,изображенная на рис. 3.2, а.218 Глава 3. Канальный уровеньКанальный уровень может предоставлять различные сервисы. Их набор можетбыть разным в разных протоколах. Обычно возможны следующие варианты, которыемы рассмотрим далее по очереди.1. Сервис без подтверждений, без установки соединения.2. Сервис с подтверждениями, без установки соединения.3.
Сервис с подтверждениями, ориентированный на соединение.Рис. 3.2. Виртуальное соединение (a); реальное соединение (б)Сервис без подтверждений и без установки соединения заключается в том, чтопередающая машина посылает независимые кадры принимающей машине, и принимающая машина не посылает подтверждений о приеме кадров. Хороший примерканального уровня, предоставляющего сервис такого класса, — ���������������������Ethernet�������������. Никакие соединения заранее не устанавливаются и не разрывается после передачи кадров. Есликакой-либо кадр теряется из-за шума в линии, то на канальном уровне не предпринимается никаких попыток восстановить его. Данный класс сервисов приемлем приочень низком уровне ошибок.
В этом случае вопросы, связанные с восстановлениемпотерянных при передаче данных, могут быть оставлены верхним уровням. Он такжеприменяется в линиях связи реального времени, таких как передача речи, в которыхлучше получить искаженные данные, чем получить их с большой задержкой.Следующим шагом в сторону повышения надежности является сервис с подтверждениями, без установки соединения. При его использовании соединение такжене устанавливается, но получение каждого кадра подтверждается. Таким образом,отправитель знает, дошел ли кадр до пункта назначения в целости или потерялся.Если в течение установленного интервала времени подтверждения не поступает, кадрпосылается снова.
Такой сервис полезен в случае использования каналов с большой3.1. Ключевые аспекты организации канального уровня 219вероятностью ошибок, например, в беспроводных системах. Среди сервисов такогокласса можно назвать, например, 802.11 (WiFi).Вероятно следует отметить, что предоставление подтверждений является скорееоптимизацией, чем требованием.
Сетевой уровень всегда может послать пакет и ожидать подтверждения его доставки удаленной машине. Если за установленный периодвремени подтверждение не будет получено отправителем, сообщение может быть выслано еще раз. Проблема при использовании данной стратегии заключается в том, чтоона зачастую оказывается неэффективной. Кадры обычно имеют жесткое ограничениемаксимальной длины, связанное с аппаратными требованиями, а также существуетопределенная задержка доставки.
На сетевом уровне эти параметры неизвестны. Сетевой уровень может разбивать сообщения, скажем, на 10 кадров. В среднем, два изних потеряются по дороге. Передача сообщения таким методом может занять оченьмного времени. Если подтверждать получение отдельных кадров, то ошибки можнобудет исправлять напрямую и гораздо быстрее.
В таких надежных каналах, как, например, оптоволоконный кабель, накладные расходы на подтверждения на канальномуровне только снизят пропускную способность канала, однако для беспроводной связи(ненадежной по своей природе) такие расходы окупятся и уменьшат время передачидлинных сообщений.Наиболее сложным сервисом, который может предоставлять канальный уровень,является ориентированный на соединение сервис с подтверждениями.
При использовании данного метода источник и приемник, прежде чем передать друг другу данные, устанавливают соединение. Каждый посылаемый кадр нумеруется, а канальныйуровень гарантирует, что каждый посланный кадр действительно принят на другойстороне канала связи.