Полный курс лекций 2009-го года (1130357), страница 4
Текст из файла (страница 4)
Ему вряд ли требуется стопроцентная гарантия доставки, особенно, еслиэто связано с увеличением стоимости. Все, что ему нужно - простой способ передать сообщение, которое сбольшой вероятностью будет принято, но без всяких гарантий. Ненадежный сервис (т.е. без уведомления)часто называют дейтаграммным (datagram), по аналогии с телеграммой без уведомления. Однако для техприложений, где необходима гарантия доставки даже небольшого сообщения, используется дейтаграммсервис с подтверждением, подобно телеграмме с уведомлением о получении.Другой разновидностью дейтаграммного сервиса является сервис «запрос-ответ».
Он типичен длявзаимодействия между клиентами и сервером. Ниже в таблице 1-11 приведены примеры сервисов.Таблица 1-11. Разные типы сервисаОриентированные на соединениеБез соединенияСервисПримерНадежный поток сообщенийПоследовательность страницНадежный поток байтовУдаленный вход в системуНенадежное соединениеОцифрованная речьНенадежная дейтаграммаНеважная электронная почтаПодтверждаемая дейтаграмма Заказная электронная почтаЗапрос-ответЗапрос базы данных1.6.6. Примитивы сервисаФормально сервис можно описать в терминах примитивных операций, или примитивов, с помощьюкоторых пользователь или какая-либо активность получает доступ к сервису. С помощью этих примитивовактивность на вышележащем уровне сообщает активности на нижележащем уровне, что необходимосделать, чтобы вышележащая активность получила нужную услугу (сервис).
В свою очередь,нижележащая активность может использовать эти примитивы, чтобы сообщить вышележащей активности одействии, выполненном равнозначной активностью. Примитивы можно разделить на четыре класса, какпоказано в таблице 1-12.Таблица 1-12. Примитивы сервисаПримитивЗначениеRequest (Запрос)Пользователь требует от сервиса каких-либо действий.Indication (Индикация)Пользователя информируют о каком-либо событии.Response (Ответ)Пользователь требует ответа на какое-либо событие.Confirm(Подтверждение)Получен ответ на сделанный ранее запрос.Для иллюстрации работы примитивов рассмотрим, как соединение устанавливается и разрывается.Сначала активность выполняет CONNECT.request, в результате чего в сеть выпускается пакет.
Получательполучает CONNECT.indication, указывающий на то, что с ним хотят установить соединение. В ответполучатель через примитив CONNECT.response сообщает, готов он установить соединение или отказываетв установлении соединения. В результате активность - инициатор установления соединения получаетответ через примитив CONNECT.confirm, чего следует ожидать.Большинство примитивов имеет параметры.
Параметры примитива CONNECT.request определяютадресата, соединение, желаемое качество сервиса и максимальный размер сообщения, допустимый дляданного соединения. Параметры примитива CONNECT.indication указывают, кто обратился, желаемоекачество обслуживания, предлагаемый размер сообщений. Если активность, к которой обратились, несогласна, например, с предлагаемым размером сообщений, то она предлагает свой размер через примитивresponse, который становится известным активности, добивающейся соединения, через примитив confirm.Подробности этих переговоров - существо протокола. Например, в случае конфликта при установлениимаксимального размера сообщения протокол может установить, что выбирается наименьший изпредложенных. Услуга может быть либо с подтверждением, либо без подтверждения.
При услуге сподтверждением действуют все четыре примитива - request, indication, response, confirm. При услуге безподтверждения используются только два примитива - request и indication.Услуга CONNECT обязательно должна быть с подтверждением. Услуга DATA_TRANSFER может бытькак с подтверждением, так и без, в зависимости от того, нужно отправителю уведомление или нет. Обавида услуг используются в сетях.Продемонстрируем концепцию услуг на следующем примере простых услуг с соединением соследующими 8-ю примитивами:1.CONNECT.request - запрос на установление соединения.2.CONNECT.indication - сигнал для удаленной активности.3.CONNECT.response - используется удаленной активностью для согласия/несогласия на соединение.4.CONNECT.confirm - cообщает активности, инициирующей соединение, принято оно или нет.5.DATA.request - запрос на передачу данных.6.DATA.indication - сигнал поступления данных.7.DISCONNECT.request - запрос на разрыв соединения.8.DISCONNECT.indication - сигнал равнозначной активности на запрос.Ниже, взяв в качестве примере телефонный разговор, показано как в терминах вышеприведенныхпримитивов можно описать телефонный разговор:1.CONNECT.request - Вы набираете номер друга.2.CONNECT.indication - Он слышит звонок.3.CONNECT.response - Он берет трубку.4.CONNECT.confirm - Вы слышите, что гудки прекратились.5.DATA.request - Вы предлагаете ему встретиться.6.DATA.indication - Он слышит Ваше приглашение.7.DATA.request - Он говорит, что согласен.8.DATA.indication - Вы слышите его ответ.9.DISCONNECT.request - Он кладет трубку.10.DISCONNECT.indication - Вы слышите, что он положил трубку и кладете трубку.1.6.7.
Взаимосвязь сервиса и протоколовСервис и протоколы - понятия разные, но их часто путают. Различие между ними настолько важно,что рассмотрим его еще раз. Сервис - это набор услуг, который уровень предоставляет уровню над ним.Сервис определяют в терминах примитивных операций, образующих интерфейс между уровнями.Инициируя выполнение определенной последовательности примитивных операций, вышележащий уровеньопределяет, какой сервис ему нужен. Но он ничего не говорит о том, как эти операции должны бытьреализованы.
Сервис относится к интерфейсу между уровнями. Нижележащий уровень являетсяпоставщиком сервиса, а вышележащий - его пользователем.Протокол - это набор правил, определяющих формат, назначение передаваемых фрагментов данных:фреймов, пакетов, сообщений, которыми обмениваются равнозначные активности на определенномуровне. Активности используют протоколы для реализации сервиса. Они могут изменить протокол, но несервис, видимый их пользователями. Отсюда ясно, что сервис и протокол не связаны между собой.1.7. Эталонные моделиДо сих пор мы рассматривали некоторые абстрактные понятия.
Теперь мы рассмотрим двеконкретные эталонные модели сетей: эталонную модель ISO OSI и эталонную модель TCP/IP.1.7.1. Эталонная модель OSIМодель OSI (Open Systems Interconnection - модель взаимодействия открытых систем (рисунок 113) была разработана Международной организацией по стандартизации (МОС - International StandardsOrganization (ISO)) - для определения международных стандартов компьютерных сетей. Эта модельописывает, как должна быть организована система, открытая для взаимодействия с другими системами.Рисунок 1-13.
Модель взаимодействия открытых систем (OSI)Модель МОС имеет семь уровней. Принципы выделения этих уровней таковы:1.Каждый уровень имеет определенное предназначение.2.Каждый уровень защищает нижележащий уровень от различий возможных реализаций.3.Предназначение каждого уровня выбиралось прежде всего так, чтобы для него можно было определитьмеждународный стандарт.4.Границы между уровнями выбирались с целью минимизировать поток информации через интерфейсы.5.Число уровней выбиралось достаточно большим, чтобы не объединять разные функции на одном уровне,но и достаточно малым, чтобы архитектура не была громоздкой.Теперь рассмотрим каждый уровень этой модели.
Отметим, что это - модель, а не архитектура сети.Она не определяет протоколы и сервисы каждого уровня, а лишь говорит, какие функции должны бытьреализованы на нем. Организация ISO выпустила также стандарты для каждого уровня, но они неявляются частью этой модели.1.7.1.1. Физический уровеньФизический уровень отвечает за передачу последовательности битов через канал связи.
Одной изосновных проблем, решаемых на этом уровне, является то, как гарантировать, что если на одном концеотправили 1, то на другом получили 1, а не 0. На этом уровне также решаются такие вопросы, как: какимнапряжением нужно представлять 1, а каким - 0; сколько микросекунд тратится на передачу одного бита;следует ли поддерживать передачу данных в обоих направлениях одновременно; как устанавливаетсяначальное соединение и как оно разрывается; каково количество контактов на физическом разъеме, длячего используется каждый контакт этого разъема.