65. Мультиплексирование нескольких потоков данных STS-1, называемых трибутарными, играет важную роль в SONET. Мультиплексор 3:1 мультиплексирует три входных трибутарных потока STS-1 в один выходной поток STS-3. Это происходит побайтно. То есть роль первых трех выходных байтов играют первые байты трибутарных потоков 1, 2 и 3 и т.д. Напишите программу, моделирующую такой мультиплексор 3:1. Программа должна включать пять процессов. Основной процесс создает четыре процесса: по одному для каждого из трех входных трибутарных потоков STS-1 и один для мультиплексора. Каждый из трибутарных процессов читает фрейм STS-1 из входного файла в виде последовательности из 810 байт и отправляет свои фреймы (побайтно) процессу-мультиплексору. Процесс-мультиплексор получает эти байты и выдает фрейм STS-3 (побайтно) для записи в стандартный поток вывода. Для обмена сообщениями между процессами используйте конвейеры.

66. Напишите программу, реализующую CDMA. Длина последовательности элементарных сигналов — 8, а число передающих станций — 4. Ваша программа должна состоять из трех наборов процессов: четырех процессов-передатчиков (t0, t1, t2 и t3), одного объединяющего процесса и четырех процессов-приемников (r0, r1, r2 и r3). Основная программа, играющая также роль объединяющего процесса, сначала считывает четыре последовательности элементарных сигналов (в биполярном формате) из стандартного потока ввода и последовательность из 4 бит (по одному на каждый процесс-передатчик) и порождает четыре пары процессов-передатчиков и процессов-приемников. Каждой паре процессов-передатчиков/приемников (t0,r0; t1,r1; t2,r2; t3,r3) назначается последовательность элементарных сигналов, а каждому процессу-передатчику соответствует 1 бит (первый бит — процессу t0, второй бит — t1 и т.д.). Далее каждый процесс-передатчик вычисляет сигнал для передачи (последовательность из 8 бит) и отправляет его объединяющему процессу. После получения сигналов от всех четырех процессов-передатчиков объединяющий процесс объединяет их и отправляет результат четырем процессам-приемникам. Каждый процесс-приемник вычисляет полученный бит и выводит его в стандартный поток вывода. Для обмена сообщениями между процессами используйте конвейеры.

Глава 3. Канальный уровень

В этой главе мы рассмотрим принципы построения второго уровня нашей модели — канального уровня (иногда его также называют уровнем передачи данных). Мы обсудим алгоритмы, обеспечивающие надежную и эффективную передачу целых блоков информации, фреймов (сравните с физическим уровнем, задачей которого является передача отдельных битов), между двумя смежными устройствами. Имеются в виду два компьютера, физически соединенные каналом связи, действующим по принципу провода (это может быть коаксиальный кабель, телефонная линия или беспроводной канал). Основное свойство такого канала заключается в том, что биты принимаются в том же порядке, в каком передаются.

На первый взгляд может показаться, что данная проблема настолько проста, что тут нечего и изучать, — устройство A просто посылает биты по каналу, а устройство B их оттуда извлекает. К сожалению, в каналах связи иногда случаются ошибки при передаче данных. Кроме того, скорость передачи ограниченна, а время распространения сигнала не равно нулю. Это оказывает серьезное влияние на эффективность передачи данных. Все эти факторы должны учитываться при использовании протоколов связи, которым и посвящена эта глава.

После знакомства с ключевыми вопросами устройства канального уровня мы обсудим его протоколы, изучив природу ошибок и методы их обнаружения и исправления. Затем мы рассмотрим ряд протоколов по мере нарастания их сложности. Каждый следующий протокол будет решать все больше задач этого уровня. Наконец, мы приведем несколько примеров протоколов передачи данных на канальном уровне.

3.1. Ключевые вопросы проектирования канального уровня

Канальный уровень использует определенные службы нижележащего физического уровня для отправки и получения битов по потенциально ненадежным коммуникационным каналам, которые могут терять данные. У него есть ряд специфических функций. К ним относятся:

1. Обеспечение строго очерченного служебного интерфейса для сетевого уровня (раздел 3.1.1).

2. Формирование отдельных фреймов из последовательностей байтов (раздел 3.1.2).

3. Обнаружение и исправление ошибок передачи (раздел 3.1.3).

4. Управление потоком данных, исключающее «затопление» медленных приемников быстрыми передатчиками (раздел 3.1.4).

Перейти на страницу:

Похожие книги