Связь двух компьютеров
А теперь предположим, что пользователь другого компьютера хотел бы распечатать текст. Сложность состоит в том, что к его компьютеру не подсоединен принтер, и требуется воспользоваться тем принтером, который связан с другим компьютером (рис.3.2).
Рис. 3.2. Взаимодействие двух компьютеров.
Программа, работающая на одном компьютере, не может получить непосредственный доступ к ресурсам другого компьютера — его дискам, файлам, принтеру. Она может только "попросить" об этом другую программу, выполняемую на том компьютере, которому принадлежат эти ресурсы. Эти "просьбы" выражаются в виде сообщений, передаваемых по каналам связи между компьютерами. Такая организация печати называется удаленной.
Предположим, что мы связали компьютеры по кабелю через COM-порты, которые, как известно, реализуют интерфейс RS-232C (такое соединение часто называют нуль-модемным). Связь между компьютерами осуществляется аналогично связи компьютера с ПУ. Только теперь контроллеры и драйверы портов действуют с двух сторон. Вместе они обеспечивают передачу по кабелю между компьютерами одного байта информации. (В "настоящих" локальных сетях подобные функции передачи данных в линию связи выполняются сетевыми адаптерами и их драйверами.)
Итак, механизм обмена байтами между двумя компьютерами определен. Теперь нужно договориться о правилах обмена сообщениями между приложениями А и В. Приложение В должно "уметь" расшифровать получаемую от приложения А информацию. Для этого программисты, разрабатывавшие приложения А и В, строго оговаривают форматы сообщений, которыми будут обмениваться приложения, и их семантику. Например, они могут договориться о том, что любое выполнение удаленной операции печати начинается с передачи сообщения, запрашивающего информацию о готовности приложения В; что в начале сообщения идет число, определяющее длину данных, предназначенных для печати; что признаком срочного завершения печати является определенная кодовая комбинация и т.п. Тем самым, как будет показано дальше, определяется протокол взаимодействия приложений.
Вернемся к последовательности действий, которые необходимо выполнить для распечатки текста на принтере "чужого" компьютера.
-
Приложение А формирует очередное сообщение (содержащее, например, строку, которую необходимо вывести на принтер) приложению В, помещает его в буфер оперативной памяти и обращается к ОС с запросом на передачу содержимого буфера на компьютер В.
-
ОС компьютера А обращается к драйверу COM-порта, который инициирует работу контроллера.
-
Действующие с обеих сторон пары драйверов и контроллеров COM-порта последовательно, байт за байтом, передают сообщение на компьютер В.
-
Драйвер компьютера В периодически выполняет проверку на наличие признака завершения приема, устанавливаемого контроллером при правильно выполненной передаче данных, и при его появлении считывает принятый байт из буфера контроллера в оперативную память, тем самым делая его доступным для программ компьютера В. В некоторых случаях драйвер вызывается асинхронно, по прерываниям от контроллера. Аналогично реализуется и передача байта в другую сторону — от компьютера B к компьютеру A.
-
Приложение В принимает сообщение, интерпретирует его, и в зависимости от того, что в нем содержится, формирует запрос к своей ОС на выполнение тех или иных действий с принтером. В нашем примере сообщение содержит указание на печать текста, поэтому ОС передает драйверу принтера запрос на печать строки.
-
Далее выполняются все действия 1-6, описывающие выполнение запроса приложения к ПУ в соответствии с рассмотренной ранее схемой "локальная ОС — драйвер ПУ — контроллер ПУ — устройство управления ПУ" (см. предыдущий раздел). В результате строка будет напечатана.
Мы рассмотрели последовательность работы системы при передаче только одного сообщения от приложения А к приложению В. Однако порядок взаимодействия этих двух приложений может предполагать неоднократный обмен сообщениями разного типа. Например, после успешной печати строки (в предыдущем примере) согласно правилам, приложение В должно послать сообщение-подтверждение. Это ответное сообщение приложение B помещает в буферную область оперативной памяти, а далее с помощью драйвера COM-порта передает его по каналу связи в компьютер А, где оно и попадает к приложению А.
Клиент, редиректор и сервер
Можно представить, что любая программа, которой потребуется печать на "чужом" принтере, должна включать в себя функции, подобные тем, которые выполняет приложение А. Но нагружать этими стандартными действиями каждое приложение — текстовые и графические редакторы, системы управления базами данных и другие приложения — не очень рационально (хотя существует большое количество программ, которые действительно самостоятельно решают все задачи по обмену данными между компьютерами, например Kermit — программа обмена файлами через COM-порты, реализованная для различных ОС, Norton Commander 3.0 с его функцией Link). Гораздо выгоднее создать специальный программный модуль, который (вместо приложения А) будет выполнять формирование сообщений-запросов к удаленной машине и прием результатов для всех приложений. Такой служебный модуль называется клиентом.
На стороне же компьютера В (на месте приложения В) должна работать другая специализированная программа — сервер, постоянно ожидающий прихода запросов на удаленный доступ к принтеру (или файлам, расположенным на диске) этого компьютера. Сервер, приняв запрос из сети, обращается к локальному ПУ, возможно, с участием локальной ОС.
Очень удобной и полезной функцией клиентской программы является способность отличить запрос к удаленному файлу от запроса к локальному файлу. Если клиентская программа умеет это делать, она сама распознает и перенаправляет (redirect) запрос к удаленной машине. Отсюда и название, часто используемое для клиентской части — редиректор. Иногда функции распознавания выделяются в особый программный модуль, в этом случае редиректором называют не всю клиентскую часть, а только этот модуль.
Программные клиент и сервер выполняют системные функции по обслуживанию запросов всех приложений компьютера А на удаленный доступ к файлам компьютера В. Чтобы приложения компьютера В могли пользоваться файлами компьютера А, описанную схему нужно симметрично дополнить клиентом для компьютера В и сервером для компьютера А. Схема взаимодействия клиента и сервера с приложениями и локальной операционной системой приведена на рис. 3.3.
Рис. 3.3. Взаимодействие программных компонентов при связи двух компьютеров.
Для того, чтобы компьютер мог работать в сети, его операционная система должна быть дополнена клиентским и/или серверным модулем, а также средствами передачи данных между компьютерами. В результате такого добавления операционная система компьютера становится сетевой ОС.
- Содержание
- Компьютерные сети и их архитектура
- Основные понятия сети
- Архитектура распределенных систем
- Классификация сетей по способам распределения данных
- Эволюция вычислительных систем
- Конвергенция локальных и глобальных сетей.
- Конвергенция компьютерных и телекоммуникационных сетей
- Компьютерные сети - частный случай распределенных вычислительных систем
- Топология физических связей
- Адресация в ip-сетях
- Типы адресов стека tcp/ip
- Классы ip-адресов
- Особые ip-адреса
- Использование масок в ip-адресации
- Порядок распределения ip-адресов
- Автоматизация процесса назначения ip-адресов
- Отображение ip-адресов на локальные адреса
- Отображение доменных имен на ip-адреса Организация доменов и доменных имен
- Система доменных имен dns
- Связь двух компьютеров
- Методы передачи данных и Оборудование сетей
- Понятие системы передачи данных
- Математические модели сигналов
- Спектральный анализ сигналов на линиях связи
- Аппаратура линий связи
- Стандарты кабелей
- Оборудование локальных сетей
- Модель osi
- Общая характеристика модели osi
- Физический уровень
- Канальный уровень
- Функции канального уровня
- Сетевой уровень
- Транспортный уровень
- Сеансовый уровень
- Представительный уровень
- Прикладной уровень
- Сетезависимые и сетенезависимые уровни
- Стандартизация сетей
- Понятие "открытая система"
- Модульность и стандартизация
- Стандартные стеки коммуникационных протоколов
- Стек osi
- Стек tcp/ip
- Стек ipx/spx
- Стек NetBios/smb
- Коммутация и мультиплексирование
- Обобщенная задача коммутации
- Определение информационных потоков
- Определение маршрутов
- Оповещение сети о выбранном маршруте
- Продвижение — распознавание потоков и коммутация на каждом транзитном узле
- Мультиплексирование и демультиплексирование
- Разделяемая среда передачи данных
- Разные подходы к выполнению коммутации
- Коммутация каналов
- Коммутация пакетов
- Достоинства коммутации пакетов
- Недостатки коммутации пакетов
- Коммутация сообщений
- Сравнение способов коммутации
- Постоянная и динамическая коммутация
- Пропускная способность сетей с коммутацией пакетов
- Ethernet как пример технологии коммутации пакетов
- Основные достоинства технологии Ethernet
- Дейтаграммная передача
- Виртуальные каналы в сетях с коммутацией пакетов
- Маршрутизация
- Маршрутизаторы
- Классификация маршрутизаторов по областям применения
- Основные технические характеристики маршрутизатора
- .Дополнительные функциональные возможности маршрутизаторов
- Принципы маршрутизации
- Протоколы маршрутизации
- Функции маршрутизатора
- Уровень интерфейсов
- . Уровень сетевого протокола
- Уровень протоколов маршрутизации