Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Элементарные протоколы передачи данных. Прежде чем приступить к изучению протоколов, полезно явно высказать некоторые



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

Другим ключевым допущением будет то, что машина A хочет послать на машину B длинный поток данных, используя надежную, ориентированную на соединение службу. Позднее мы рассмотрим случай, при котором одновременно машина B также хочет послать данные на машину A. Предполагается что у машины A имеется бесконечный источник данных, готовых к отправке, и что ей никогда не требуется ждать готовности данных. Когда уровень передачи данных машины A запрашивает данные, сетевой уровень всегда готов их ему предоставить. (Это ограничение также будет потом отброшено.)

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

Получив пакет, уровень передачи данных формирует из пакета кадры, добавляя к пакету заголовок и завершитель пакета передачи данных (см. рис. 1.10). Таким образом, кадр состоит из внедренного пакета и управляющей информации. Затем кадр передается уровню передачи данных принимающей машины. Мы будем предполагать наличие соответствующих библиотечных процедур, например to_physical_layer для отправки кадра и from_physical_layer для получения кадра. Передающая аппаратура вычисляет и добавляет контрольную сумму, так что уровень передачи данных не должен беспокоиться об этом. Например, может использоваться алгоритм циклических кодов, обсуждавшийся в предыдущем разделе.

Вначале получатель ничего не должен делать. Он просто сидит без дела, ожидая, что что-то произойдет. В приводимых в данной главе примерах протоколов ожидание событий уровнем передачи данных обозначается вызовом процедуры wait_for_event(&event). Эта процедура возвращает управление, только когда что-то происходит (например, прибывает кадр). При этом переменная event сообщает, что именно случилось. Набор возможных событий различен в разных протоколах и поэтому будет описываться для каждого протокола отдельно. Следует заметить, что в действительности уровень передачи данных не находится в холостом цикле ожидания событий, как мы предположили, а получает прерывание, когда это событие происходит. При этом он приостанавливает свои текущие процессы и обрабатывает пришедший кадр. Тем не менее для простоты мы проигнорируем эти детали и предположим, что уровень передачи данных все свое время посвящает работе с одним каналом.

Когда приемная машина получает кадр, аппаратура вычисляет его контрольную сумму. Если контрольная сумма неверна (то есть в случае ошибки передачи), то уровень передачи данных получает соответствующую информацию (event = chsum_err). Если кадр прибывает в целости, уровень передачи данных также получает соответствующую информацию (event = frame_arrival), после чего он может получить этот кадр у физического уровня с помощью процедуры from_physical_layer. Получив неповрежденный кадр, уровень передачи данных проверяет управляющую информацию, находящуюся в заголовке кадра, и если все в порядке, часть этого кадра передается сетевому уровню. Заголовок кадра не передается сетевому уровню ни при каких обстоятельствах.

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


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 146; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.014 с.)
Главная | Случайная страница | Обратная связь