Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сетевые средства операционных систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Ларина Т.Б. Сетевые средства операционных систем
41
Клиентская часть выполняет только интерфейсные функции
пользователя и запросы к серверу приложений. Промежуточный сервер полностью выполняет всю логику приложения и обработки данных. В этом случае промежуточный сервер называют сервером приложений. Наконец, внутренние операции работы с базой данных выполняет третье звено – сервер базы данных (рис.1-12).
Рис.1-12. Трехзвенная схема распределенного приложения
Централизованная реализация логики приложения на отдельном сервере приложений позволяет решить проблему нехватки вычислительной мощности клиентских компьютеров.
Серверы приложений, как правило, реализуются на мощной аппаратной платформе – многопроцессорные вычислительные системы или специализированные архитектуры. Операционная система такого сервера должна обеспечивать высокую производительность его работы. Если сервер приложений становится «узким местом» при большом количестве запросов, можно включить в схему несколько серверов приложений, распределив обработку запросов клиентов между ними.
Ларина Т.Б. Сетевые средства операционных систем
42
Взаимодействие сетевых приложений
Удаленные приложения взаимодействуют только через сообщения. Сообщение имеет однозначную структуру, которая должна быть понятна процессу-получателю: заголовок и собственно набор данных.
Заголовок, как правило, имеет фиксированную длину. Формат заголовка показан на рис.1-13.
Рис.1-13. Формат заголовка сообщения
Адреса процесса-отправителя и процесса-получателя однозначно адресуют сетевые приложения в сети. Помним, что полный адрес удаленного процесса определяется парой числовых значений: сетевой адрес компьютера и номер порта.
Для установления двусторонней связи между двумя процессами нужно указать пять параметров:
- тип транспортного протокола (UDP или TCP)
- IP-адрес отправителя и номер порта процесса-отправителя,
- IP-адрес процесса-получателя и номер его порта.
Номер сообщения является его идентификатором. Он используется для определения потерянных сообщений при сбоях в сети.
Поле типа данных - целочисленные или символьные - позволяет правильно интерпретировать данные на принимающей стороне.
Ларина Т.Б. Сетевые средства операционных систем
43
Поле длины данных позволяет принимающей стороне определить конец принимаемых данных.
Коммуникационные примитивы
В сетевых операционных системах поддерживается система передачи сообщений, которая основана на коммуникационных протоколах транспортного уровня стека протоколов.
Система передачи сообщений позволяет приложениям взаимодействовать с помощью простых процедур – «примитивов»: примитив для посылки сообщения Send (Отправить) и примитив для получения сообщения Receive (Получить).
Взаимодействие коммуникационных примитивов операционной системы с транспортными протоколами стека протоколов TCP/IP показано на рис.1-14.
Рис.1-14. Взаимодействие коммуникационных примитивов
Ларина Т.Б. Сетевые средства операционных систем
44
С точки зрения синхронизации удаленных процессов коммуникационные примитивы Send и Receive могут быть блокирующие (синхронные) и не блокирующие (асинхронные). При использовании блокирующих примитивов вызвавший примитив процесс останавливается до момента получения сообщения.
На рис.1-15 процесс-отправитель использовал блокирующий примитив Send и был приостановлен до момента получения им подтверждения от принимающего процесса. Процесс-получатель, выполнивший примитив Receive, приостанавливается до получения сообщения.
Рис.1-15. Синхронные (блокирующие) коммуникационные
примитивы
При использовании блокирующего примитива Send есть опасность, что в случае сбоя процесса-получателя (от него не поступит подтверждение приема), процесс-отправитель будет остановлен (заблокирован) навсегда.
Чтобы предотвратить такую ситуацию, в блокирующем примитиве Send используют механизм тайм-аута. При инициализации примитива Send запускается таймер на некоторый интервал времени, по истечении которого примитив Send будет завершен с признаком ошибки.
Если используются асинхронные примитивы Send и Receive, управление вызвавшему процессу операционная система возвращает
Ларина Т.Б. Сетевые средства операционных систем
45
сразу после того, как узнает адрес буфера в памяти, куда нужно поместить передаваемое или принимаемое сообщение.
Как процесс-получатель узнает о пришедшем в буфер сообщении?
Возможны два способа реализации:
1) процесс опрашивает состояние буфера с помощью еще
одного примитива операционной системы – Test (рис.1-16);
2) операционная система уведомляет процесс-получатель
программным прерыванием. Этот способ более сложный для реализации.
Рис.1-16. Асинхронные (не блокирующие) коммуникационные
примитивы
Ларина Т.Б. Сетевые средства операционных систем
46
Буферизация сообщений
Буферизацией сообщений называют хранение операционной системой отправленных/принятых сообщений для процессов в своих системных областях памяти.
Можно ли при взаимодействии приложений обойтись без буферизации, а сразу записывать принятое сообщение в область памяти прикладного процесса?
В случае синхронизации с помощью блокирующих примитивов буферизация в общем случае не нужна. Сообщение, принятое операционной системой, может быть немедленно записано в память процесса-получателя, так как процесс ожидает прихода сообщения и готов к нему.
При обмене сообщениями с помощью асинхронных примитивов буферизация просто необходима. Процесс-отправитель может посылать сообщения в любой момент времени, не дожидаясь подтверждения от процесса-получателя.
Получается, что буфер должен иметь неограниченный размер (что не реально), либо операционная система должна решать вопрос с его возможным переполнением и, следовательно, потерей сообщений.
Обычно, операционная система предоставляет процессам возможность самим выбрать размер буфера с помощью специального системного примитива, например, с названием Create Buffer. Приложение, прежде, чем воспользуется коммуникационными примитивами Send и Receive, обязано использовать примитив Create
Buffer.
Вопросы для самоконтроля
1. Каково основное условие совместной работы в сети разных
операционных систем?
2. Что входит в единую программную коммуникационную
систему сети?
3. Какую сеть называют одноранговой?
Ларина Т.Б. Сетевые средства операционных систем
47
4. Что такое «программный клиент» и «программный сервер»?
5. Функция «редиректора» в составе клиентской части сетевых
компонент ОС
6. Каковы основные принципы уровневого взаимодействия
компьютеров сети?
7. Уровни сетевого взаимодействия по модели OSI
8. На каком уровне модели OSI работают транспортные
протоколы?
9. В чем отличие транспортных протоколов TCP и UDP?
10. Что такое MAC-адрес и IP-адрес узла?
11. Понятие «горизонтальных» и «вертикальных» протоколов
12. Дайте характеристику форматам и классам IP-адресов
13. Что лежит в основе взаимодействия удаленных программ
(процессов)?
14. Дайте определение понятию «сокет»
15. Что такое доменная система имен? Каковы правила
образования доменного имени узла?
16. Каковы особенности распределенного приложения?
17. Каковы способы разделения приложения для распределенной
работы?
18. Что должен включать «заголовок» сетевого сообщения?
19. Назовите базовые коммуникационные процедуры
(примитивы) операционной системы и их назначение
20. В чем отличие «сетевой» операционной системы от
«распределенной» ОС?
Ларина Т.Б. Сетевые средства операционных систем
48
2. ПРОГРАММНЫЕ ИНТЕРФЕЙСЫ СЕТЕВОГО
ВЗАИМОДЕЙСТВИЯ
Основными программными интерфейсами в операционных системах для организации сетевого взаимодействия процессов через сообщения являются:
сокеты (sockets);
вызовы удаленных процедур - RPC (Remote Procedure
Calls).
сетевые поименованные каналы (pipes);
Наличие таких программных интерфейсов делает возможным обращение из приложений (процессов) к транспортному уровню коммуникационных протоколов, то есть создание сетевых приложений.
2.1 Механизм сокетов
2.1.1 Сокеты: понятия и характеристики
«Сокет» (socket) или «полный адрес удаленного процесса» ­понятие, используемое операционной системой для адресации удаленного процесса.
Полный адрес удаленного процесса для операционной системы определяется двумя значениями: сетевой адрес компьютера и номер порта (то есть, указатель на коммуникационный буфер памяти). Эта пара значений получила наименование «сокет».
Для каждого процесса, который собирается взаимодействовать с другим процессом через сеть, должен быть создан свой сокет.
Ларина Т.Б. Сетевые средства операционных систем
49
То есть, процесс должен идентифицировать сетевой адрес своего узла и получить от системы буфер в памяти для передачи/приема сообщений.
Механизм сокетов, как универсальный программный интерфейс обмена сообщениями, впервые был создан для операционной системы BSD Unix v.4.3. В настоящее время он реализован во всех операционных системах. Реализация механизмов сокетов в Microsoft Windows носит название WinSock (Windows sockets).
Программный интерфейс сокетов представляет собой набор системных вызовов и библиотечных функций в языках программирования для сетевого программирования.
Для создания и программного использования сокета необходимо определить его следующие характеристики:
1) Тип коммуникационного домена: UNIX-домен или
Интернет-домен.
Под типом домена подразумевается используемый набор протоколов внутри сети и способы адресации узлов. Стек протоколов
TCP/IP входит в понятие Интернет-домен.
2) Адрес сокета
Для Интернет-домена адрес сокета - это пара значений: IP­адрес узла и номер порта. Они однозначно определяют конкретный сетевой процесс в пределах всей глобальной сети Интернет.
3) Тип сокета: потоковый или дейтаграммный
Тип сокета определяет протокол транспортного уровня, который будет использоваться при передаче сообщений: UDP или
TCP.
Потоковые и дейтаграммные сокеты
Дейтаграммные сокеты (datagram) предусматривают передачу сообщений по транспортному протоколу UDP.
Протокол UDP является простейшим транспортным протоколом. Он используется, если задача гарантированной доставки
Ларина Т.Б. Сетевые средства операционных систем
50
сообщений не ставится или она решается на более высоком уровне. Готовность компьютера-приемника этим протоколом не проверяется.
Потоковые сокеты (stream) используют передачу сообщений по протоколу TCP.
Протокол TCP предусматривает предварительное установление логического соединения с компьютером-приемником. Передача данных начинается только после получения от компьютера-приемника подтверждения о соединении.
Порты
В программном смысле «порт» является абстрактным числовым идентификатором процесса. Однако он имеет вполне конкретное физическое воплощение.
Каждому процессу выделяется буфер в системной памяти, куда помещаются принимаемые или посылаемые данным процессом сообщения. Номер порта будет служить «указателем» на соответствующий коммуникационный буфер.
Порты имеют двухбайтные номера. Диапазон номеров портов - от 1 до 65535. Некоторые диапазоны номеров портов являются закрепленными.
Номера портов с 1 по 1023 закреплены за системными сетевыми службами, независимо от используемой операционной системы. Например, службе HТТР принадлежит порт 80, службе Telnet – порт 23, службе SMTP - порт 25, службе POP3 - порт 110, службе FTP -порт 21.
Номера портов с 1024 по 49151 корпорация Интернет по присвоению имен и номеров (ICANN) предназначает для широко применяемых сетевых программ. Эти номера портов нежелательно использовать для частных программ во избежание возможных конфликтов.
Номера портов с 49152 по 65535 предназначены для сетевых процессов обычных пользователей.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]