Механизмы сокетов, вызов удаленных процедур
Механизм сокетов (sokets) впервые появился в BSD Unix. Механизм сокетов представляет собой удобный и достаточно универсальный интерфейс обмена сообщениями, предназначенный для разработки сетевых распределенных приложений. Его универсальность обеспечивают следующие концепции:
- независимость от нижележащих сетевых протоколов и технологий. Для этого используется понятие коммутационный домен. Он обладает набором коммутационных свойств, определяющих способ именования сетевых узлов и ресурсов, характеристики сетевых соединений, способы синхронизации процессов и т.п.
- использование абстрактной конечной точки соединения, получивший название сокета. Сокет – это точка, через которую сообщения уходят в сеть или принимаются из сети. Сетевое соединение между двумя процессами осуществляется через пару сокетов. Каждый процесс пользуется своим сокетом, при этом сокеты могут находиться как на разных компьютерах, так и на одном.
- Сокет может иметь как высокоуровневое символьное имя (адрес), так и низкоуровневое, отражающее специфику адресации определенного коммутационного домена. Например, в домене Интернета низкоуровневое имя представлено парой ip-адрес, порт.
Для обмена сообщениями механизм сокетов предлагает следующие примитивы, реализованные как системные вызовы: создание сокета, связывание сокета с адресом, запрос на установление соединения с удаленным сокетом, ожидание запроса на установление соединения, принятие запроса на установление соединения и т.п.
Вызов удаленных процедур (RPC) – еще один удобный механизм, облегчающий взаимодействие операционных систем и приложений по сети. Он представляет собой надстройку над системой обмена сообщениями ос, поэтому позволяет более удобно и прозрачно организовать действия программ по сети.
Средства удаленного вызова процедур предназначены для облегчения организации распределенных вычислений. Когда вызываемая процедура действительно является удаленной, в библиотеку процедур вместо локальной реализации оригинального кода процедуры помещается другая версия процедуры, называемая клиентским стабом. На удаленный компьютер, который исполняет роль сервера процедур, помещается оригинальный код вызываемой процедуры, а также еще один стаб, называемый серверным стабом. Назначение этих стабов – организовать передачу параметров вызываемой процедуры так, чтобы код оригинальной процедуры, помещенный на сервер, был полностью сохранен. Иногда в подсистеме обмена сообщениями выделяется программный модуль, организующий связь стабов с примитивами передачи сообщений, называемый модулем RPC Runtime.
Мезанизм RPC оперирует двумя типами сообщений:
- сообщениями-вызовами, с помощью которых клиент спрашивает у сервера выполнение определенной удаленной процедуры и передает ее аргументы;
- сообщениями-ответами, с помощью которых сервер возвращает результат работы удаленной процедуры клиенту, например сообщением об ошибке.
С помощью этих сообщений реализуется протокол RPC, определяющий способ взаимодействия клиента с сервером. Протокол RPC предусматривает установление сеанса связи на период выполнения удаленной процедуры, то есть этот протокол может быть отнесен к сеансовому уровню модели OSI.
Реализации RPC обычно не связаны жестко с каким-либо из протоколов транспортного уровня, с помощью которых RPC-сообщения должны доставляться по сети от клиента к серверу и обратно. При использовании в сети стека протоков TCP/IP это может быть протокол TCP или UDP, в локальных сетях частично используется также протокол NetBEUI/NetBIOS или IPX/SPX.
Для устойчивой работы RPC-серверов и RPC-клиентов необходимо каким-то образом обрабатывать ситуации, связанные с потерями сообщений, которые происходят из-за ошибок сети или же по причине краха операционной системы и перезагрузки компьютера. Протокол RPC использует в таких случаях механизм тайм-аутов с повторной передачей сообщений. Для того, чтобы сервер мог повторно передать клиенту потерянный результат без необходимости передачи от клиента повторного вызова, в протокол RPC иногда добавляется специальное сообщение – подтверждение клиента, которое тот посылает при получении ответа от сервера.
Сетевая файловая система.
Сетевая файловая система – это сетевая служба, предоставляющая пользователям сети услуги по совместному использованию файлов, хранящихся на компьютерах сети. Как и любая сетевая служба, сетевая файловая система имеет клиент-серверную природу.
Сетевая файловая система (ФС) включает следующие элементы:
o Клиент сетевой файловой системы;
o Сервер сетевой файловой системы;
o Интерфейс сетевой файловой системы;
o Локальная файловая система;
o Интерфейс локальной файловой системой;
o Протокол клиент-сервер сетевой файловой системы.
Клиенты сетевой ФС – это программы, которые работают на многочисленных компьютерах, подключенных к сети. Эти программы обслуживают запросы приложений на доступ к файлам, хранящимся на удаленном компьютере. В качестве таких приложений часто выступают графические или символьные оболочки ос, такие как Проводник Windows или Unix shell. Клиент сетевой ФС передает по сети запросы другому программному компоненту – серверу сетевой ФС, работающему на удаленном компьютере.
Клиент и сервер взаимодействуют друг с другом через сеть по протоколу сетевой файловой системы. Если интерфейсы локальной и сетевой файловых систем совпадают, это протокол может быть достаточно простым – в его функции должна входить ретрансляция серверу запросов, принятых клиентом от приложений, с которыми тот затем будет обращаться к локальной ФС. Одним из механизмов, используемых для этой цели, может быть механизм RPC.
В среде операционной системы Unix наибольшее распространение получили две сетевые ФС и два протокола клиент-сервер – FTP и NFS. Они первоначально разрабатывались для доступа к локальной файловой системе s5/ufs, являющейся основой для многих ос системы Unix.
Задачей сетевой ФС является предоставление всем сетевым пользователям надежного, производительного и безопасного доступа к разделяемым файлам.
Производительность сетевой ФС характеризуется скоростью доступа к файлам и временем выполнения требуемых операций с ними. Это показатель тесно связан с числом пользователей, которые работают в системе: чем их больше, тем вероятнее возникновение больших задержек обслуживания из-за заторов в сети и перегрузки файлового сервера.
Для решения этой проблемы может выполняться кэширование файлов целиком или частично на стороне клиента. При этом необходимо учитывать то, что в сети может одновременно появиться большое количество копий одного и того же файла, которые независимо могут модифицироваться разными пользователями. При применении модели удаленного доступа для повышения производительности может быть использована также буферизация команд, задающих операции с файлом. Команды группируются и передаются для выполнения на сервер в виде одного пакета, тем самым снижается сетевой трафик, а значит, повышается производительность сети. Производительность также может быть повышена за счет репликации файлов.
Репликация – технология поддержания нескольких копий данных. Для каждого файла в сети поддерживается две копии, причем каждая копия хранится на отдельном компьютере. Такие копии файлов называются репликами. Репликация не только повышает отказоустойчивость, но и решает проблему перегрузки ФС, так как запросы к файлам распределяются между несколькими серверами и повышают производительность сетевой ФС. Репликация в некоторых аспектах похожа на кэширование – в том и другом случае создается несколько копий одного файла, при этом повышается скорость доступа к данным. Одним из отличий репликации от кэширования является то, что реплики хранятся на файловых серверах, а кэширование – на клиентах.
Во многих ФС с каждым разделяемым файлом связывается список управления доступом, обеспечивающий защиту данных от несанкционированного доступа по сети.
В ос семейства Windows NT существует два механизма защиты 0 на уровне разделяемых каталогов и на уровне локальных каталогов и файлов. Последний работает только в том случае, когда в качестве локальной файловой системы используется система NTFS, поддерживающая механизм ACL. Механизм защиты разделяемых каталогов нужен для того, чтобы защитить данные, хранящиеся в локальной файловой системе FAT, не имеющей механизмов защиты.
В современных ос контроль доступа ко всем типам разделяемых ресурсов – файлам, каталогам, принтерам, секциям памяти – осуществляется с единых позиций. Основную роль в решении этой задачи играет сетевая справочная служба.