Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сети ЭВМ и телекоммуникации / Лекции / 17_Протоколы прикладного уровеня.doc
Скачиваний:
111
Добавлен:
09.06.2015
Размер:
646.66 Кб
Скачать

Протокол nfs

NFS предоставляет клиентам прозрачный доступ к файлам и файловой системе сервера. Этим он отличается от FTP который обеспечивает только передачу файлов. С помощью FTP осуществляется полное копирование файла. NFS осуществляет доступ только к тем частям файла, к которым обратился процесс, и основное достоинство NFS в том, что он делает этот доступ прозрачным. Это означает, что любое приложение клиента, которое может работать с локальным файлом, с таким же успехом может работать и с NFS файлом, без каких либо модификаций самой программы

NFS это приложение клиент-сервер, построенное с использованием вызовов удаленных процедур (Remote Procedure Calls, RPC), чем принципиально отличается от рассмотренных нами ранее протоколов. Обычно клиент устанавливает соединение с заранее известным портом и затем, в соответствии с особенностями протокола, посылает запрос на выполнение определенного действия. В случае вызова удаленных процедур клиент создает вызов процедуры и затем отправляет его на исполнение серверу.

Клиент использует NFS протокол монтирования, чтобы смонтировать файловую систему сервера, перед тем как получить доступ к NFS файлам. Обычно это происходит при загрузке клиента. В результате клиент получает описатель файла файловой системы сервера.

Монтирование директории bsdi:/usr как /nfs/bsdi/usr на хосте sun.

Рассмотрим процесс работы протокола подробнее:

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

2.     NFS-клиент посылает RPC-запросы на NFS-сервер через используемый транспортный протокол. Первые реализации NFS работали по UDP, но последующие реализации стали поддерживать возможность быть конфигурироваными на установление соединений по TCP.

3.      NFS-сервер принимает дейтаграммы с запросами NFS-клиента на свой порт 2049 (UDP или TCP в зависимости от конфигурации).

4.      При поступлении запроса от NFS-клиента, NFS-сервер транслирует его в запросы к   своей местной файловой системе, которая и осуществляет соответствующие действия на диске хоста сервера.

5.      Обработка запроса на сервере может занять значительное время, особенно если потребуется выполнить манипуляции в его файловой системе. Чтобы в период выполнения одного запроса не блокировать запросы от других NFS-клиентов, NFS-сервер должен обрабатывать их параллельно. Способ параллельной обработки зависит от возможностей конкретной операционной системы.

6.      В свою очередь, и NFS-клиент, обслуживающий свой пользовательский процесс, вынужден, выслав RPC-запрос, в течение достаточно длительного времени ждать завершения его обработки на сервере до получения RPC-ответа. Поэтому и на клиентском хосте необходимо так или иначе обеспечить параллельное обслу­живание многих использующих NFS пользовательских процессов, что также решается различными способами в зависимости от операционной системы.

Система NFS изначально создавалась для работы по протоколу UDP — эта возможность сохраняется и во всех последующих поколениях системы. Позднее появились версии NFS, позволяющие также работать и по TCP. Необходимость в этом появилась после того, как NFS стала использоваться за пределами локальных сетей.

Причина в том, что динамика работы в WAN отличается от работы в LAN, причем весьма существенно. Значения времени прохождения пакетов от клиента до сервера и обратно (RTT) в глобальных сетях нестабильны и могут сильно варьироваться, возрастает и вероятность возникновения перегрузок в сети. Эти присущие глобальным сетям особенности привели к разработке воплощенных в TCP методов адаптивного управления потоком данных, таких как алгоритмы медленного пуска (slow start) и предотвращения заторов (congestion avoidance). UDP же такими возможностями не обладает, поэтому работающие поверх UDP в глобальных сетях NFS-серверы и клиенты пришлось бы существенно усложнить, включив в их коды все необходимые алгоритмы, адаптирующие их к условиям WAN.

Проще оказалось поступить иначе — модифицировать клиентскую и серверную части NFS так, чтобы в своем обмене они могли использовать на транспортном уровне не UDP, a TCP.