Понятия файлового протокола Apple
Модель доступа к файлу
Этот раздел представляет модель доступа к файлу, используемую AFP для включения совместного доступа к файлам, и обсуждает компоненты программного обеспечения AFP.

Программа, работающая в локальном компьютере, запрашивает и управляет файлами при помощи собственных команд файловой системы того компьютера. Эти команды управляют файлами на диске или другом ресурсе памяти, физически подключенном к локальному компьютеру. Через AFP программа может использовать те же собственные команды файловой системы для управления файлами на совместно используемом ресурсе, находящемся на удаленном компьютере (например, файловый сервер).
Программа, работающая на локальном компьютере, отправляет команду в собственную файловую систему. Структура данных в локальной памяти указывает, управляет ли объемом собственная файловая система или некоторой внешней файловой системой. Собственная файловая система обнаруживает, находится ли требуемый файл локально или удаленно путем рассмотрения этой структуры данных. Если структура данных указывает внешнюю файловую систему, собственная файловая система направляет команду к переводчику AFP.
Переводчик, поскольку его имя подразумевает, переводит собственные команды в команды AFP и отправляет их через в файловый сервер, управляющий удаленным ресурсом. Переводчик AFP не определяется в спецификации AFP; это до программиста приложений для разработки его.
Программа, работающая на локальном компьютере, возможно, также должна отправить команды AFP, для которых никакая эквивалентная команда не существует в собственной файловой системе. В этом случае команда AFP отправляется непосредственно в желаемую внешнюю файловую систему, как показано на рисунке 1-1. Например, аутентификацию пользователя, возможно, придется обработать через интерфейс, записанный с этой целью.
AFP поддерживает компьютеры с помощью Mac OS и персональных компьютеров с помощью MS-DOS. AFP может быть расширен для поддержки дополнительных типов компьютеров. Любая реализация AFP должна принять во внимание возможности собственной файловой системы подключенного к сети компьютера и моделировать ее функциональность в общей среде. Другими словами, совместно используемая файловая система должна копировать характеристики файловой системы локального компьютера. Моделирование функциональности собственной файловой системы каждого локального компьютера становится все более и более сложным, поскольку различные типы компьютера совместно используют тот же файловый сервер. Поскольку каждый тип компьютера имеет различные характеристики в способе, которым он управляет файлами, совместно используемая файловая система должна обладать объединенными возможностями всех компьютеров в той же сети.
Три системных компонента составляют AFP:
структура файловой системы, составленная из ресурсов (таких как файловые серверы, объемы, каталоги, файлы и ветвления), которые адресуемы через сеть. Эти ресурсы вызывают системой файла AFP видимыми объектами. AFP указывает отношение между этими объектами. Например, один каталог может быть родителем другого. Для описаний системы файла AFP видимые объекты посмотрите Структуру файловой системы далее в этой главе.
Команды AFP, которые являются командами использование локального компьютера для управления структурой файловой системы AFP. Как отмечалось ранее, переводчик отправляет команды файловой системы в файловый сервер в форме команд AFP, или приложение, работающее на локальном компьютере, может сделать команды AFP непосредственно. Каждая команда AFP описана подробно в разделе «Tasks» этого документа.
алгоритмы связались с командами, указывающими действия, выполняемые командами AFP.
Несмотря на то, что эта глава различает локальные компьютеры и файловые серверы, AFP может поддерживать эти две функции в том же узле. Однако AFP не решает проблемы параллелизма, которые могут возникнуть, когда компьютер является и клиентом AFP и сервером AFP. Программное обеспечение на таких объединенных узлах должно быть тщательно разработано для предотвращения потенциальных конфликтов.
AFP не обеспечивает команды, поддерживающие администрирование файлового сервера. Административные функции, такие как регистрирующиеся пользователи и изменяющиеся пароли, должны быть обработаны отдельным программным обеспечением администрирования сети. Дополнительное программное обеспечение должно также быть предоставлено, чтобы добавить, демонтировать, и найти серверы в сети.
Структура файловой системы
В этом разделе описываются структуру файловой системы AFP и параметры, связанные с ее системой файла AFP видимые объекты. Эти объекты включают файловый сервер, его объемы, каталоги («папки» в терминологии Mac OS), файлы. и ветвления файла. Этот раздел также описывает древовидную структуру, названную каталогом объема, который является описанием отношений между каталогами и файлами.
Путем отправки команд AFP может клиент AFP
получите информацию о файловом сервере и других частях структуры файловой системы
измените информацию, полученную из файлового сервера
создайте и удалите файлы и каталоги
получите и храните информацию в отдельных файлах
Следующие разделы описывают систему файла AFP структуры файловой системы видимые объекты.
Файловый сервер
Файловый сервер является компьютером по крайней мере с одним диском большой емкости, позволяющим другим компьютерам в сети делиться информацией, сохраненной в нем. AFP не налагает предела на число совместно используемых дисков. Каждый диск, присоединенный к файловому серверу обычно, содержит один объем, несмотря на то, что диск может быть подразделен на многократные объемы. Каждый объем появляется как отдельный объект клиенту AFP.
Файловый сервер имеет уникальное имя и другие параметры идентификации. Эти параметры идентифицируют тип машины сервера и число присоединенных объемов, а также методы аутентификации пользователей версий AFP (UAMs), который поддерживает сервер. Некоторыми более общими параметрами файлового сервера AFP является перечисленная Таблица 1-1. Для полного списка посмотрите FPGetSrvrInfo.
Параметр | Описание |
|---|---|
UTF8ServerName | Строка UTF-8, содержащая имя сервера. |
MachineType | Строка в формате Паскаля до 16 символов, описывающем аппаратное и программное обеспечение файлового сервера, но не имеющем никакого значения для AFP. |
AFPVersions | Поддерживаемые версии AFP — одна или более строк до 16 символов каждый. Для получения дополнительной информации посмотрите Ссылку файлового протокола Apple. |
UAMs | Одна или более строк до 16 символов каждый. Для получения дополнительной информации посмотрите Таблицу 1-5. |
VolumeIconAndMask | Осуждаемый. Дополнительное значение 256 байтов, использующееся для настройки появления объемов сервера на Рабочем столе Mac OS. Это состоит из 32 32 разрядного (128-байтового) битового массива значка, сопровождаемого 32 32 разрядной (128-байтовой) маской значка. Маска обычно состоит из схемы значка, заполненной черным цветом (биты, установленные). Для получения дополнительной информации о значках, обратитесь к Внутреннему OS X. |
ServerSignature | 16-байтовое значение, однозначно определяющее сервер, раньше препятствовало тому, чтобы клиент AFP вошел в систему того же сервера дважды. |
Объемы
Файловый сервер может сделать один или несколько объемов видимыми клиентам AFP. Каждому объему связали параметры с ним, как перечислено в Битовом массиве Объема. Для обеспечения безопасности на уровне громкости сервер может поддержать дополнительный параметр пароля для любого объема.
FPGetVolParms команда предоставляет дополнительную информацию об объеме. Volume Bitmap перечисляет информацию, которую это может возвратить.
Типы объема
Объем AFP структурирован иерархически. Существует два типа иерархических объемов: фиксированный и переменная. Фиксированный Каталог объем ID содержит многократные каталоги с каждым каталогом, имеющим его собственный постоянный Каталог ID, присваивающийся, когда создается каталог. Каталог ID не используется ни для какого другого каталога во время времени жизни объема, даже если позже удален каталог, которому это присваивается.
Переменный Каталог объем ID также поддерживает уникальность своего Каталога IDs, но отличается от фиксированного Каталога объем ID, в котором это не связывает постоянный Каталог ID с каждым каталогом. Для переменного Каталога объемы ID файловый сервер создает уникальный Каталог ID для каталога каждый раз, когда клиент AFP отправляет FPOpenDir команда. Файловый сервер тогда поддерживает этот Каталог ID, пока клиент не отправляет FPCloseDir команда или сеанс AFP завершаются. Каталог ID, полученный путем отправки FPOpenDir команда к переменному Каталогу объем ID должна использоваться только для того сеанса. Если Каталог ID сохранен и используется для ссылки на каталог в более позднем сеансе, результаты не могут быть предсказаны: команда может привести к сбою, управлять неправильным каталогом, или случайно управлять корректным каталогом.
Значение | Описание |
|---|---|
1 | Плоский (никакие поддерживаемые каталоги). Осуждаемый. |
2 | Фиксированный каталог ID. |
3 | Переменный каталог ID. Осуждаемый. |
Типы объема имеют следующие возможности поддержки и ограничения: Персональные компьютеры с помощью MS-DOS могут получить доступ к любому типу объема сервера, потому что понятие Каталога IDs является внешним к их файловым системам. Однако компьютеры Macintosh с помощью иерархической файловой системы (HFS) не могут непосредственно использовать переменный Каталог объемы ID. Macintosh объемами HFS является фиксированный Каталог объемы ID и иерархические объемы на файловом сервере, может быть обработан HFS, только если они - фиксированный Каталог объемы ID. Приложения Mac OS, такие как Средство поиска, сохраняют Каталог IDs и делают не ожидают, что они будут варьироваться.
Каталог объема
Каталог объема является структурой, описывающей расположение ветвящегося дерева файлов и каталогов на фиксированном и переменном Каталоге объемы ID. Каталог не охватывает многократные объемы; клиент AFP видит отдельный каталог объема для каждого объема сервера, который видим клиентам AFP. Рисунок 1-2 показывает пример каталога объема и иллюстрирует его элементы.
Каталог объема содержит каталоги и файлы, переходящие из основного каталога, известного как корень. Эти каталоги и файлы упоминаются как узлы каталога или CNodes (чтобы не быть перепутанным с устройствами в сети, которые также известны как узлы). В древовидной структуре CNodes может быть расположен двумя способами:
в конце конечности, когда CNode вызывают листом; лист CNode может быть файлом или пустым каталогом
соединенный сверху и ниже к другим CNodes, заключающим CNode в корпус, вызывается внутренним CNode. Внутренние CNodes всегда являются каталогами
CNodes имеют отношение родителя/потомков. Данный CNode является потомками CNode выше его в дереве каталога, и выше CNode считают его родительским каталогом. Потомки содержатся в родительском каталоге. Единственный CNode, не имеющий родительского каталога, является корневым каталогом.
Когда команда AFP пробивается через каталог объема, может потребоваться только один кратчайший путь от корня до определенного CNode. CNodes вдоль того пути, как говорят, являются наследователями узла назначения, который поочередно вызывают потомком каждого из его наследователей.

Имена узла каталога
Имена CNode идентифицируют каждый каталог и файл в каталоге объема. Каждый каталог и файл имеют Длинное Имя, Краткое название, и могут также иметь AFPName.
Длинные Имена и Краткие названия соответствуют в двух из собственных файловых систем, которые поддерживает AFP: Mac OS относится к файлам и каталогам Длинными Именами; компьютеры MS-DOS используют Краткие названия.
AFPNames кодируются в соответствии к стандарту Unicode (UTF-8), использующий 16 битов для кодирования больше чем 65 000 символов. Для хранения кодировки символов простой и эффективной Стандарт Unicode присваивает каждый символ уникальное числовое значение и имя. Для помощи при преобразовании от UTF-8 до других систем сценария AFPNames начинаются с четырехбайтового текста, кодирующего подсказку, указывающую сценарий, первоначально использовавшийся для создания имени. Текст, кодирующий подсказку, сопровождается полем два байта длиной, указывающим длину UTF-8 следующее закодированное имя.
Заголовочный файл, TextCommon.h, поскольку текст, Кодирующий менеджера по Преобразованию, определяет константы для текста, кодирующего подсказку. Посмотрите текстовые Кодировки AFP для списка.
Чтобы позволить несходным компьютерам совместно использовать ресурсы, файловый сервер обеспечивает имена CNode во всех трех форматах. При создании или переименовании файлов и каталогов, пользователь обеспечивает имя, соответствующее собственной файловой системе. Сервер тогда использует алгоритм для генерации другого имени (Длинный или Короткий). В этом разделе описываются правила для формирования имен CNode и алгоритма, используемого для создания и поддержания двойных имен.
Синтаксис для формирования AFP Длинные Имена совпадает с синтаксисом именования, используемым Macintosh HFS за одним исключением: Нуль (0x00) не является допустимым символом в AFP Длинные Имена. Иначе, отображение кода символа к символу является тем же для AFP, как это для OS X. [Посмотрите Кодировку символов AFP.] AFP Длинные Имена составлены из самое большее 31 символа; допустимые символы являются любым печатаемым кодом ASCII кроме двоеточия (0x3A) и нуль (0x00). Имя тома, и выводом Длинное Имя корня, не может быть более длительным, чем 27 байтов.
Синтаксис для формирования Кратких названий AFP совпадает с синтаксисом именования, используемым MS-DOS, который более строг, чем синтаксис именования, используемый в Mac OS: Имена могут быть до восьми алфавитно-цифровых символов, дополнительно сопровождаемых периодом (0x2E) и одно к три символьное расширение буквенно-цифрового знака.
Чтобы гарантировать, что CNode может быть уникально указан любым именем, AFP определяет соблюдающие правила:
ни у каких двух потомков данного каталога не может быть того же Краткого названия или того же Длинного Имени.
Краткое название может соответствовать Длинное Имя, если и только если они оба принадлежат тому же файлу или каталогу.
Поэтому или имя, Лонг или Короткий, однозначно определяет CNodes в том же каталоге.
Правила именования AFP таковы, что любое имя MS-DOS может использоваться непосредственно в качестве Краткого названия CNode, и любое имя OS X может использоваться в качестве Длинного Имени. Файловый сервер генерирует другое имя для каждого CNode, получая его из указанного имени и соответствуя второе имя максимально близко. Длинный формат Имени является надмножеством формата Краткого названия. Мандаты алгоритма управления именем, что каждый раз, когда CNode создан или переименован с Кратким названием, будет всегда соответствовать Длинное Имя. Получение Краткого названия с Длинного Имени не так просто, и AFP не предусматривает точный алгоритм для этой деривации. Поэтому различные серверы могут создать Краткие названия по-другому.
Когда CNode создается, вызывающая сторона предоставляет имя узла и тип имени, указывающий, является ли именем Длинное или Краткое название. Сервер тогда проверяет имя, чтобы проверить, что имя соответствует принятому формату. Следующий алгоритм описывает, как серверы присваивают Короткие и Длинные Имена к CNode (называемый объектом в этом алгоритме).
IF name type is Short or name is in Short format |
THEN check for new name in list of Short Names |
IF name already exists |
THEN return ObjectExists result |
ELSE set object’s Short and Long Names to new name |
ELSE { name type is Long OR name is in Long format } |
check for new name in list of Long Names |
IF name already exists |
THEN return ObjectExists result |
ELSE set object’s Long Name to new name |
derive Short Name from Long Name |
Этот алгоритм используется для переименования, а также для создания новых имен. Когда пользователь переименовывает объект, его другое имя изменено с помощью вышеупомянутого алгоритма.
Одно ограничение этого алгоритма - то, что он не препятствует тому, чтобы пользователь указал Длинное Имя, соответствующее Краткое название, сгенерированное файловым сервером для другого файла. Сгенерированное сервером Краткое название обычно не видимо пользователю, видящему только Длинные Имена. Если пользователь непреднамеренно указывает Длинное Имя, соответствующее Краткое название, сбои команды и сервер возвращает kFPObjectErr.
Например, для файла, создаваемого с Длинным Именем «Макфилелонгнэйм», файловый сервер может генерировать Краткое название «Макфайла». Когда пользователь пытается создать новый файл с Длинным Именем «Макфайл» в том же каталоге, сбои команды, потому что вышеупомянутый алгоритм предусматривает, что Длинное Имя и Краткое название должны были бы оба быть установлены в «Макфайла».
Если клиент AFP создает файл, имеющий имя UTF-8–encoded, файловый сервер требуется, чтобы генерировать допустимое Имя Лонга и допустимое Краткое название для файла. Алгоритм для генерации Лонга и Кратких названий для файла, имеющего UTF-8–encoded имя файла, выходит за рамки этой спецификации.
Каталоги и файлы
Каталоги и файлы сохранены в объемах и составляют следующий уровень структуры файловой системы, видимой клиентам AFP. Как был показан на рисунке 1-2, каталоги переходят к файлам и другим каталогам. Каждый каталог имеет идентификатор, через который он и его потомки могут адресоваться. Поэтому каталоги могут думаться как логически содержащий их каталоги потомков и файлы с параметрами, описанными ниже.
Каталог IDs
Каждый каталог в каталоге объема идентифицируется четырехбайтовым длинным целым, известным как его Каталог ID. Поскольку два каталога на том же объеме не могут иметь того же Каталога ID, Каталог ID однозначно определяет каталог в объеме.
В каталоге объема, как отмечалось ранее, каталоги имеют наследователя, родителя и отношения потомков друг с другом. Каталог ID родителя CNODE вызывают Родителем CNODE ID.
CNode может иметь только одного родителя, таким образом, данный CNode имеет уникального Родителя ID. Однако CNode может иметь несколько идентификаторов каталога наследователя, один для каждого наследователя. Родительский каталог считают наследователем.
Каталог IDs от 1 до 16 резервируется. Каталог ID корня всегда равняется 2. Родитель корня ID всегда равняется 1. (Корень действительно не имеет родителя; это значение возвращается, только если команда AFP просит Родителя корня у ID.) Нулем (0) не является допустимый Каталог ID.
Параметры каталога
Для каждого каталога сервер должен поддержать параметры, перечисленные в Битовом массиве Файла и Каталога. Параметры получены путем вызова FPGetFileDirParms и указание в DirBitMap параметр параметры каталога, которые должны быть получены. Некоторые параметры каталога могут быть установлены путем вызова FPSetDirParms или FPSetFileDirParms.
Параметр Атрибутов для каталогов предоставляет дополнительную информацию о каталоге. File and Directory Attributes Bitmap перечисляет разрядные определения для параметра Атрибутов для каталогов.
Никакой определенный бит не существует для запрещения перемещения каталога, но перемещение каталога ограничивается битом RenameInhibit, когда каталог перемещен или перемещен и переименован.
Права доступа (четырехбайтовое количество) содержат чтение, запишите и ищите права доступа, соответствующие владельцу каталога, группе и Всем. Старший байт параметра Прав доступа является Пользовательским Сводным байтом Прав доступа, указывающим полномочия, которые текущий пользователь клиента AFP имеет к этому каталогу. Access Rights Bitmap перечисляет разрядные определения для параметра Прав доступа для каталогов.
FPUnixPrivs структура используется для возврата полномочий UNIX, если файл или каталог находится на объеме, поддерживающем полномочия UNIX.
Параметры файла
Для каждого файла сервер должен поддержать параметры, перечисленные в File Bitmap. Параметры получены путем вызова FPGetFileDirParms и указание в FileBitmap параметр параметры файла, которые должны быть получены путем вызова FPResolveID и указывая Идентификатор файла файла, или путем вызова FPGetForkParms. Некоторые параметры файла могут быть установлены путем отправки FPSetFileParms, FPSetFileDirParms, и FPSetForkParms команды.
Номер документа является уникальным числом, связанным с каждым файлом на объеме. Это число чисто информативно; AFP не позволяет спецификацию файла его номером документа.
Параметр Атрибутов для файлов предоставляет дополнительную информацию о файле. File and Directory Attributes Bitmap перечисляет разрядные определения для Attributes параметр для файлов.
Никакой определенный бит не существует для запрещения перемещения файла, но перемещение файла ограничивается RenameInhibit бит только, когда файл перемещен и переименован, не, когда это просто перемещено.
Длина ветви данных и длина ветви ресурсов равны числу байтов в соответствующем ветвлении.
Создание, резервное копирование и модификация разовые датой параметры описаны затем.
Разовые датой значения
Все разовые датой количества, используемые AFP, указывают значения часов сервера. Эти значения соответствуют числу секунд, измеренных с 12:00 1 января 2000 в Среднее время по Гринвичу (GMT).
AFP представляет разовые датой значения с четырехбайтовыми целыми числами со знаком. FPGetSrvrParms команда позволяет клиенту AFP получать текущую стоимость часов сервера. Во время входа в систему клиент AFP должен считать это значение (я) и значение часов клиента AFP (w) и компьютер смещение между этими значениями (s - w). Все разовые последующей датой значения, считанные из сервера, должны быть скорректированы путем добавления этого смещения к разовому датой. Эта корректировка исправит для различий между двумя часами и гарантирует, чтобы все компьютеры видели, что базируется непротиворечивое время.
Когда файл или каталог создается, разовый датой создания из каталога или файла установлен в системные часы сервера. Разовое датой резервное копирование установлено резервными программами. Когда файл или каталог создается, сервер устанавливает резервное копирование, разовое датой в 0x80000000, который является самым ранним представимым временем.
Сервер изменяет модификацию, разовую датой из каталога каждый раз, когда содержание каталога изменяется. Поэтому любое из следующих действий заставит сервер присваивать новую дату модификации каталогу: переименование каталога; создание или удаление CNode в каталоге; перемещение каталога; изменяя его права доступа, Информацию Средства поиска, или изменяя Невидимые атрибуты одного из его потомков.
Клиент AFP с надлежащими полномочиями может установить создание и модификацию разовые датой параметры к любому значению.
Ветвления файла
Файл состоит из двух ветвлений: ветвь данных и ветвь ресурсов. Байты в ветвлении файла последовательно пронумерованы начиная с 0. Ветвь данных является неструктурированной конечной последовательностью байтов. Ветвь ресурсов используется для содержания ресурсов Mac OS, таких как значки и драйверы и структура данных для отображения их в ветвлении. AFP разработан для рассмотрения обоих ветвлений как последовательности байта конечной длины; однако, AFP не содержит правил, касающихся структуры ветви ресурсов. Для получения дополнительной информации о ветвях ресурсов, обратитесь к Внутреннему OS X.
Или или оба ветвления данного файла могут быть пустыми. Не-Mac OS клиенты AFP, которым нужно только одно ветвление файла, должен использовать ветвь данных. Файлы, создаваемые компьютером с операционной системой MS-DOS, будут иметь пустую ветвь ресурсов, потому что ветвь ресурсов непонятна к той операционной системе. Следовательно, компьютер MS-DOS, получивший доступ к файлу сервера, создаваемому Macintosh, может не знать о существовании ветви ресурсов файла.
Несмотря на то, что AFP позволяет создание приложений MS-DOS, которые могут понять и управлять ветвями ресурсов, такие приложения должны были бы сохранить внутреннюю структуру ветвлений. Компьютеры Mac OS ожидают определенный формат в ветви ресурсов любого файла, таким образом, клиенты AFP компьютеров, которые не могут управлять внутренней структурой ветви ресурсов, никогда не должны будут изменять содержание ветви ресурсов.
Чтобы читать из или записать в содержание ветви данных файла или ветви ресурсов, клиент AFP сначала отправляет команду для открытия определенного ветвления файла, создавая путь доступа к тому ветвлению файла. Путь доступа не быть перепутанным с путями и путями, описанными в следующем разделе.
Как только клиент AFP создает этот путь доступа, все последующее чтение и команды записи относятся к нему на время сеанса. Для каждого пути доступа сервер поддерживает параметры, перечисленные в Таблице 1-3.
Параметр | Описание |
|---|---|
| Два байта (0 недопустимо), |
| Двухбайтовый битовый массив |
| Бит 7 из однобайтового значения |
OForkRefNum параметр однозначно определяет путь доступа среди всех путей доступа в данном сеансе. AccessMode параметр указывает к серверу, позволяет ли этот путь доступа читать или писать. Это сохраняется сервером и недоступно клиентам AFP. Flag параметр указывает к серверу, что путь доступа принадлежит данным или ветви ресурсов.
В дополнение к вышеупомянутым параметрам сервер должен обеспечить способ получить доступ к параметрам файла, которому принадлежит открытое ветвление. Для получения дополнительной информации посмотрите FPGetForkParms команда в разделе Reference.
Обозначение пути к CNode
Для выполнения любого действия с CNode клиент AFP должен определять путь к CNode. AFP обеспечивает правила для указания пути к любому CNode в каталоге объема. CNode (файл или каталог) может быть однозначно указан к серверу идентификаторами, показанными на рисунке 1-3.

ID Объема указывает объем, на котором находится место назначения Кноуд. Каталог ID может принадлежать месту назначения Кноуду (если КНОУД является каталогом), или к любому из его каталогов наследователя, до и включая корневой каталог и родительский каталог корня.
Путь AFP отформатирован как строка Паскаля (байт одной длины, сопровождаемый числом символов, указанных байтом длины) или строка UTF-8 (четырехбайтовый текст, кодирующий подсказку, сопровождаемую двумя байтами длины, сопровождаемыми числом символов, указанных байтами длины). Путь AFP составлен из имен CNode, связанных с прошедшими разделителями нулевого байта. Каждый элемент пути должен быть именем каталога, за исключением последнего, который может быть именем каталога или файла.
Элементами пути может быть Лонг или Краткие названия. Однако данный путь не может содержать смесь Лонга и Кратких названий. Байт типа тракта, указывающий, коротки ли элементы пути все или все Имена Лонга, связан с каждым путем. Путь, состоящий из Кратких названий, имеет тип тракта 1. Путь, состоящий из Имен Лонга, имеет тип тракта 2.
Путь AFP, состоящий из Лонга или Кратких названий, может быть до 255 символов в длину. Единственный нулевой байт как байт длины указывает, что не предоставляется никакой путь. Поскольку байт длины включен в начале строки, каждый элемент пути (имя CNode) не включает индикатор длины. Точно так же путь AFP, состоящий из имен UTF-8–encoded, ограничивается 255 символами Unicode.
Синтаксис пути AFP следует этому абзацу. Звездочка (*) представляет последовательность нуля или больше предыдущих элементов пути; плюс (+) представляет последовательность один или больше предыдущих элементов; <Sep> представляет разделители в пути; вертикальная панель (|) операция ИЛИ; и срок на левой стороне ::= символ определяется как срок (и) на правой стороне.
<Sep> ::= <null-byte>+ |
<Pathname> ::= empty-string | |
<Sep>*<CNode name>(<Sep><Pathname>* |
Синтаксис представляет связь имен CNode, разделенных одним или более нулевыми байтами. Пути могут также запуститься или закончиться строкой нулевых байтов.
Путь может использоваться для пересечения каталога объема в любом направлении. Синтаксис пути позволяет путям или убывать от определенного CNode до его потомков или возрастать от CNode до его наследователей. В любом случае каталог, который является начальной точкой этого пути, определяется отдельно от пути его Каталогом ID. Первый элемент пути является потомком начальной точки каталога. Путь должен быть проанализирован от левого для исправления для получения каждого элемента, использующегося в качестве следующего узла на пути.
Для убывания через объем допустимый путь должен продолжиться в порядке от родителя до потомков. Проигнорирован единственный разделитель нулевого байта, предшествующий этому первому элементу.
Для возрастания через объем допустимый путь должен продолжиться от определенного КНОУДА его наследователю. Для возрастания одного уровня в дереве каталога два последовательных нулевых байта должны следовать за именем потомков Кноуда. Для возрастания двух уровней в дереве каталога три последовательных нулевых байта используются в качестве разделителя и т.д.
Определенный объем может убывать и возрасти через каталог объема. Из-за этого много допустимых путей могут относиться к тому же CNode.
Спецификация полного пути может принять много форм. Следующая таблица суммирует различные виды спецификаций пути, которые могут использоваться для пересечения каталога объема, проиллюстрированного на рисунке 1-4. Нуль в квадратных скобках [0] представляет разделитель нулевого байта.
Следующие дескрипторы и примеры относятся к этой таблице и соответствующему каталогу объема, проиллюстрированному на рисунке 1-4. Для упрощения этих примеров CNodes в этом каталоге называют через j, кроме корня, который называют x. Тип тракта проигнорирован в этом примере. Буква v представляет двухбайтовый Объем объема ID. Строки соединяют CNodes; несвязанные строки указывают, что не показаны другие CNodes в этом объеме.

Таблица 1-4 обеспечивает Объем ID, Каталог ID и путь для некоторых демонстрационных спецификаций пути на рисунке 1-4.
Пример | Объем ID | Каталог IDs | Путь |
|---|---|---|---|
Сначала | v | 2 | [0] c [0] e [0] j [o] |
Второй | v | 104 | e [0] j |
Треть | v | 106 | [0] j |
Четвертый | v | 106 | j |
Пятый | v | 106 | [0] |
Шестой | v | 104 | e [0] [0] g [0] [0] h |
Седьмой | v | 104 | e [0] [0] [0] |
Восьмой | v | 1 | x [0] [0] c [0] h |
Первый пример спецификации пути в Таблице 1-4 содержит Объем ID, Каталог корневого каталога ID, который всегда равняется 2 и пути. В этом случае путь должен содержать имена всех наследователей целевого файла кроме корня, и это должно закончиться именем самого файла. Единственный запаздывающий нулевой байт проигнорирован.
Второй пример содержит Объем ID, Каталог ID наследователя и путь.
Третьим примером является по существу то же как второй пример. Единственный ведущий нулевой байт проигнорирован.
В четвертом примере Каталогом ID является Родитель ID целевого файла. В этом случае, путь должны содержать только имя самого целевого файла.
Пятый пример иллюстрирует иначе для уникального указания убывающего пути к каталогу. Это включает Объем CNODE ID, его Каталог ID и нулевой путь. Эта спецификация пути используется для указания каталога e.
Шестой пример иллюстрирует убывающий путь. Первый CNode в пути является потомками Каталога начальной точки ID. Тогда путь возрастает, хотя родитель e (c) вниз к каталогу g, скопируйте к родителю g (c), и вниз снова к h.
Седьмые шоу возрастающий путь, запускающийся в каталоге c (чей Каталог ID равняется 104), перемещаются вниз к e, и затем возрастают к родителю родителя e (a).
Восьмым примером является особый случай, в котором начальной точкой пути является каталог ID 1, родитель корня. Имя пути должно быть именем имени тома или корневого каталога, соответствующим Объему ID v; кроме того, обход пути выполняется как в других примерах.
Вход в систему AFP
Для использования любого ресурса, которым управляет файловый сервер, клиент AFP должен сначала войти в систему сервера. Этот раздел обеспечивает обзор процесса входа в систему AFP.
После того, как пользователь выбирает сервер AFP для входа в систему, клиент AFP отправляет FPGetSrvrInfo команда для запроса информации о том сервере. Сервер возвращает включающую информацию
AFP присваивает версию поддержкам сервера
методы аутентификации пользователей (UAMs) поддержки сервера
тип машины сервера
имя сервера
сетевой адрес сервера
подпись сервера
поддерживает ли сервер дополнительную функциональность, такую как переподключение, Откройте Directory,
FPCopyFile,FPChangePassword, сохранение паролей и уведомлений сервера
Во время процесса входа в систему AFP клиент AFP говорит сервер, который версию AFP клиент будет использовать для установления соединения и какой UAM это будет использовать для аутентификации пользователя.
Каждая версия AFP уникально описана строкой до 16 символов, названных строкой версии AFP. Строки версии AFP для версий AFP, поддерживаемых AFP 3.x, перечислены в Ссылке файлового протокола Apple.
При работе с различными версиями AFP происходят следующие различия в поведении:
AFP 2.x — полномочия UNIX и поддержка имени UTF-8 отключен.
AFP 3.x — корректировки GMT отключены, и все метки времени основываются на GMT.
UAMs, поддерживаемые AFP 3.x и их соответствующие строки, перечислены в Таблице 1-5.
Строка | Имя UAM |
|---|---|
| Никакая Аутентификация пользователя UAM. Для получения дополнительной информации не посмотрите Аутентификацию пользователя. |
| Пароль в виде открытого текста. Для получения дополнительной информации посмотрите Пароль в виде открытого текста. |
| Exchange Случайного числа. Для получения дополнительной информации посмотрите Exchange Случайного числа. |
| Двухсторонний Exchange Случайного числа. Для получения дополнительной информации посмотрите Двухсторонний Exchange Случайного числа. |
| Обмен ключами Диффи-Хеллмана. Позволяет клиенту отправлять пароль до 64 байтов к серверу через строго зашифрованный «туннель». Этот тип шифрования полезен для серверов, требующих использования пароля в виде открытого текста. Для получения дополнительной информации посмотрите Обмен ключами Диффи-Хеллмана. |
| Обмен ключами Диффи-Хеллмана 2. Позволяет клиенту отправлять пароль до 256 байтов к серверу через строго зашифрованный «туннель». Этот тип шифрования полезен для серверов, требующих использования пароля в виде открытого текста. Для получения дополнительной информации посмотрите Обмен ключами Диффи-Хеллмана 2. |
| Kerberos. Позволяет клиенту использовать Kerberos v4 и билеты Kerberos v5 для аутентификации пользователя. |
| Переподключение UAM. Позволяет клиенту использовать |
Возможный клиент AFP инициирует процесс входа в систему путем отправки FPLogin или FPLoginExt команда к серверу. Обе команды включают строку версии AFP и строку UAM, которую выбрал клиент. В зависимости от выбранного метода UAM, FPLogin или FPLoginExt команда может включать пользовательскую информацию о входе в систему (такую как имя пользователя или пароль), или последующее FPLoginCont команда может включать такую информацию. Отправка дополнительных FPLoginCont команды могут потребоваться, чтобы завершать аутентификацию пользователя, как описано в Безопасности Файлового сервера AFP.
Если UAM успешно выполняется, сеанс AFP между клиентом AFP и сервером начинается.
После входа в систему клиент AFP должен сразу вызвать FPGetUserInfo видеть, истек ли пароль пользователя.
Как отмечалось ранее, в дополнение к AFP и версиям UAM, которые сервер поддерживает, FPGetSrvrInfo команда возвращает a Flags параметр, биты которого предоставляют дополнительную информацию о сервере, который полезен для клиента AFP. Биты Flags параметр перечислен в Server Flags Bitmap.
Пересоединение сеансов
Если сеанс AFP разъединяется должный, например, сетевое отключение, но у клиента AFP все еще есть запрошенная информация, клиент AFP может повторно соединить сеанс.
Клиенты, использующие Переподключение UAM, описанный в Переподключении, выполняют эти шаги, чтобы повторно соединиться:
Войдите в систему успешно путем вызова использования UAM, обеспечивающего сеансовый ключ.
Вызвать
FPGetSessionTokenполучить маркер, указываяkLoginWithTimeAndID(3) вTypeпараметр.Периодически вызывайте
FPGetSessionTokenсkRecon1RefreshToken(7) вTypeпараметр для обновления маркера, прежде чем это истечет.Если разъединение происходит, вызвать
FPLoginExtвходить в систему снова, указывая Переподключение UAM как UAM, и передавая текущий маркер, полученный путем вызоваFPGetSessionTokenна шаге 2 или 3. Маркер переподключения содержит всю требуемую информацию имени пользователя и пароля для сервера для аутентификации клиента, таким образом вхождение в систему снова не требует, чтобы клиент повторил шаги аутентификации, имевшие место на шаге 1.Если вход в систему на шаге 4 завершается успешно, вызвать
FPDisconnectOldSessionи передайте маркер, полученный на шаге 2. Если сервер может счесть предыдущий сеанс идентифицированным маркером, это пытается передать открытые файлы всего предыдущего сеанса и заблокированные ресурсы к новому сеансу. Если эта передача успешна, это считается успешным основным переподключением, и сервер возвращает код результатаkFPNoErr.Успешное Основное Переподключение не приводит ни к какой потере данных. Все файлы, состояние, и т.д. восстанавливаются точно, поскольку они прежде теряли контакт с сервером. Основное переподключение всегда пробуется сначала. Если это перестало работать, то клиент пробует вторичное переподключение. Ожидание состоит в том, что основное переподключение должно только редко происходить (только если некоторая другая проблема заставляет клиент терять ее соединение).
Вызвать
FPGetSessionTokenполучить новый маркер, указываяTypeпараметр какkReconnWithTimeAndID.
Клиенты, не использующие Переподключение UAM, выполняют эти шаги, чтобы повторно соединиться:
Войдите в систему успешно путем вызова
FPLoginилиFPLoginExt. Клиент AFP должен сохранить UAM, имя пользователя и используемый пароль.Вызвать
FPGetSessionTokenполучить маркер, указываяTypeпараметры какkLoginWithTimeAndID(3).Если разъединение происходит, войдите в систему снова с помощью того же UAM, имя пользователя и пароль, которые использовались на шаге 1.
Вызвать
FPDisconnectOldSessionи передайте маркер, полученный на шаге 2. Если сервер может счесть предыдущий сеанс идентифицированным маркером, это передаст открытые файлы всего предыдущего сеанса и заблокированные ресурсы к новому сеансу и возвратит код результатаkFPNoErr.Если предыдущее состояние найдено на сервере, и передача успешна, то это считают к e успешным основным переподключением. Успешное основное переподключение не приводит ни к какой потере данных. Все файлы, состояние, и т.д. восстанавливаются точно, поскольку они прежде теряли контакт с сервером. Основное переподключение всегда пробуется сначала. Если это перестало работать, то клиент пробует вторичное переподключение. Ожидание состоит в том, что основное переподключение должно только редко происходить (только если некоторая другая проблема заставляет клиент терять ее соединение).
Вызвать
FPGetSessionTokenполучить новый маркер, указывающийTypeпараметр какkReconnWithTimeAndID.
В любом случае, если вход в систему успешно выполняется, но FPDisconnectOldSession запросите сбои, клиент AFP должен выполнить вторичное переподключение. Когда сервер не имеет сохраненного сеанса и утверждает информацию, используется вторичное переподключение. Любые имевшие открытые файлы отклоняют режимы, или блокировки диапазона байта теперь закрываются, и несохраненные данные могут быть потеряны (несмотря на то, что большинство приложений позволит Вам сохранить текущие данные к новому файлу). Приложения, в настоящее время использующие те файлы обычно, выводят на экран ошибку при утверждении, что файл больше не доступен. Можно вновь открыть файлы с помощью того же приложения. Любые не использовавшие открытые файлы отклоняют режимы, или блокировки диапазона байта автоматически вновь открываются. Ожидание состоит в том, что вторичное переподключение должно быть очень, очень редко, так как оно указывает, что сервер отказал или был перезапущен.
Если сервер возвращает код результата кроме kFPNoErr, клиент AFP может попытаться вновь открыть его файлы. Если файлы были ранее открыты без, Отклоняют Режимы, и клиент AFP не применял блокировки диапазона байта, клиент должен быть в состоянии вновь открыть те файлы. В этом случае переподключение также считают успешным. Если переподключение не успешно, клиент AFP может предпринять шаги описанный в следующем разделе, Восстановлении С Системного Катастрофического отказа.
Восстановление с системного катастрофического отказа
Если сеанс AFP будет разъединен, и клиентская информация о переподключении потеряна вследствие локального системного катастрофического отказа, то клиент AFP не будет в состоянии повторно соединить сеанс. Если сервер позволяет переподключение, какие-либо файлы, которые оставили открытыми на удаленном сервере, когда локальная разрушенная система будет сохранена, но не будет доступна для открытия, пока не истечет тайм-аут переподключения. Это также применяется к случаю, где сон, который клиенту AFP не удается разбудить или катастрофические отказы и сервер, сохраняет информацию, пока не истекает тайм-аут сна.
Сказать серверу закрывать файлы оставило открытым старым сеансом и разъединением, что сеанс, клиент AFP, который поддерживает AFP 3.1 и позже может создать и сохранить уникальный определенный клиентами идентификатор и использовать FPGetSessionToken команда, чтобы отправить ему сервер. Клиент должен сделать это перед локальными системными катастрофическими отказами, например, как часть ее последовательности входа в систему. Когда это получает идентификатор, сервер связывает идентификатор с текущим сеансом.
Позже, если локальная система отказывает и перезапущена, клиент AFP может войти в систему и отправить FPGetSessionToken управляйте снова, на сей раз говоря серверу искать сеанс, имеющий указанный идентификатор. Если сервер находит такой сеанс, он закрывает файлы, связанные с ним, освобождает любые другие связанные ресурсы и разъединяет старый сеанс.
Обнаружение клиентского катастрофического отказа происходит двумя способами, в зависимости от метода соединения. С более старыми методами соединения, kLoginWithID и kReconnWithID, клиент обеспечивает только идентификатор клиента для идентификации себя. Когда сервер видит новое соединение от того же клиента, он должен предположить, что клиент отказал и повторно соединился, таким образом, он разъединяет первый сеанс. К сожалению, это делает многократные параллельные сеансы единственным клиентом невозможными, который вызывает проблемы для сетевых корневых каталогов, Машины времени, и т.д.
kLoginWithTimeAndID и kReconnWithTimeAndID методы соединения удаляют это ограничение путем обеспечения дополнительного идентификатора сеанса, метки времени запуска клиента. Все параллельные сеансы от данного клиента должны обеспечить ту же метку времени. Таким образом, когда сервер видит многократные соединения с тем же идентификатором клиента и той же меткой времени, это может безопасно предполагать, что существующие сеансы должны остаться допустимыми.
Если клиент AFP отказывает, перезапуск происходит в различное время, чем исходный запуск (очевидно), и таким образом метки времени не соответствуют. Когда сервер видит такое соединение с тем же идентификатором клиента и различной меткой времени, это предполагает, что клиент AFP разрушил и перезагрузил, и таким образом разъединяет все предыдущие сеансы, связанные с тем идентификатором клиента.
Таймеры разъединения
В предыдущих версиях AFP был только один таймер для определения, произошло ли разъединение. При начале в OS X v.10.2, существует два таймера для определения разъединений:
Активный таймер, установленный в 60 секунд по умолчанию
Неактивный таймер, установленный в 120 секунд по умолчанию
Если клиент имеет выдающийся запрос к серверу и не получил данных (включая, щекочет) от сервера, клиент ожидает, пока активный таймер не истекает прежде, чем предположить, что произошло разъединение.
Если у клиента нет выдающихся запросов к серверу, клиент ожидает, пока неактивный таймер не истекает прежде, чем предположить, что произошло разъединение.
Когда система просыпается от сна, специальные замечания возникают:
Если система находится на LAN, активный таймер установлен в (activeTimer / 4).
Если система находится на WAN, активный таймер установлен в (activeTimer / 2).
Если клиент подключен к AFP 2.x, сервер (или ранее), Активный таймер и таймер Айдла оба установлен в 120 секунд.
Во всех ситуациях, после разъединения, если переподключение поддержек сервера, запускается переподключение.
Настольная база данных
Для объемов файлового сервера AFP обеспечивает интерфейс, заменяющий прямое использование Средства поиска Файла на рабочем столе. Этот интерфейс необходим, потому что Файл на рабочем столе был разработан для автономной среды и не мог быть совместно использован многочисленными пользователями. Интерфейс AFP к базе данных Desktop заменяет Файл на рабочем столе и может использоваться прозрачно и для локальных и для удаленных объемов.
База данных Desktop используется файловым сервером для содержания информации, необходимой в частности Средству поиска для создания его уникального пользовательского интерфейса, в котором значки используются для представления объектов на дисковом томе. Для создания определенных частей этого интерфейса Средство поиска использует базу данных Desktop для выполнения трех функций:
связать документы и приложения с определенными значками и сохранить битовые массивы значка
определять местоположение соответствующего приложения, когда пользователь открывает документ
содержать текстовые комментарии связалось с файлами и каталогами
Приложения Macintosh обычно содержат значок, который должен быть выведен на экран для самого приложения, а также других значков, которые будут выведены на экран для документов, которые создает приложение. Эти значки сохранены в ветви ресурсов приложения и в базе данных Desktop. База данных Desktop связывает эти значки с создателем каждого файла ( fdCreator поле в FInfo запись) и тип ( fdType поле в FInfo запись), которые сохранены как часть информации о Средстве поиска файла.
Средство поиска позволяет пользователю Mac OS открывать документ, т.е. выбирать файл и неявно запускать приложение, создавшее файл. Чтобы сделать это, база данных Desktop поддерживает отображение между создателем файла и списком расположений каждого приложения, которому связали того создателя файла с нею. Это отображение упоминается как отображение APPL, потому что все приложения Macintosh имеют создателя файла ‘APPL’. Средство поиска получает первый элемент в списке и пытается запустить приложение. Если по некоторым причинам приложение не может быть запущено (например, если это будет использоваться в настоящее время), то Средство поиска получит следующее приложение из списка базы данных Desktop и попытки что один. Этот список динамично отфильтрован для представления Средству поиска только тех приложений, для которых у клиента AFP есть надлежащие права доступа.
База данных Desktop является также репозиторием для текста комментариев, связанных с файлами и каталогами на объеме. Средство поиска выполнит вызовы к базе данных Desktop, чтобы считать или записать эти комментарии, которые могут быть просмотрены и изменены путем выбора Получить Информационного элемента в меню Finder's File. Комментарии полностью не интерпретируются базой данных Desktop.
Для получения дополнительной информации о Средстве поиска и использовании Файла на рабочем столе, обратитесь к Внутреннему OS X.
Подмонтирование объемов AFP
Начинаясь в версии 10.6, подмонтировании поддержек OS X — монтирование папки в данном sharepoint.
Например, если бы Вы хотите смонтировать папку myfolder в sharepoint, названном mysharepoint на сервере example.com, Вы смонтировали бы его с этим AFP URL:
afp://example.com/mysharepoint/myfolder |
До OS X v.10.6, смонтирован сам sharepoint. Начинаясь в версии 10.6, требуемая папка смонтирована.
Это в основном предназначается для поддержки корневых каталогов AFP, в которых у Вас есть «Пользователи» sharepoint с многочисленными пользователями в той папке.