Цели конфигурации системы и архитектура
Эта глава обеспечивает обзор целей платформы Конфигурации системы и архитектуры. Необходимо считать эту главу, если Вы плохо знакомы с конфигурацией сети OS X или если необходимо знать, который APIs и службы в платформе Конфигурации системы должно использовать приложение. В частности если Ваше приложение должно определить достижимость удаленного узла или запросить основанное на PPP соединение, Вы могли бы принять решение просмотреть эту главу для контекста и затем считать Определение Достижимости и быть соединенным.
Цели платформы конфигурации системы
Платформа Конфигурации системы OS X обеспечивает основу для конфигурации сети на OS X. Двойные цели платформы:
Обеспечить динамическую конфигурацию сети, поддерживающую бесшовную пользовательскую мобильность
Для поддержки приложений, которые должны создать измените, или службы сети доступа. Это включает приложения, создающие или управляющие конфигурациями сети и приложениями, которые должны определить достижимость удаленного узла и сделать соединения
Первая цель платформы Конфигурации системы ориентирована пользователями. В Сетевой предпочтительной панели приложения Установок системы (который является клиентом платформы Конфигурации системы), пользователь может установить многократные конфигурации сети. Каждая из этих конфигураций может описать различную сетевую среду. Это означает, что пользователь может ввести несколько значений в Сетевые предпочтения, и ее система автоматически обнаруживает, конфигурирует и запускает надлежащую сетевую службу. Пользователь может наложить предпочтительный порядок на службы, и система автоматически переключается между ними, согласно которым сетевые интерфейсы в настоящее время доступны, не требуя перезапуска. Для примера того, как это работает, посмотрите Пример Мобильности.
Вторая цель платформы Конфигурации системы состоит в том, чтобы обеспечить конфигурацию сети и службы доступа к широкому диапазону приложений. В одном конце диапазона приложение конфигурации сети, такое как одно, Интернет-провайдер (ISP) мог бы предложить определять новые службы и предоставлять коммутируемую поддержку. Такое приложение должно получить доступ к компонентам платформы Конфигурации системы на низком уровне для предоставления сетевых услуг.
В другом конце диапазона то, что можно назвать сетевыми осведомленными приложениями. По большей части сетевое осведомленное приложение просто должно использовать существующие сетевые службы, не определить новые. Такое приложение, возможно, должно было бы определить, достижим ли удаленный узел, или запросите сетевое соединение, таким образом, это может предоставить содержание своим пользователям.
Приложения поддержки платформы Конфигурации системы всюду по этому диапазону путем обеспечения:
Доступ к текущей информации о конфигурации сети
APIs, позволяющий приложениям определять достижимость удаленных узлов и запускать основанные на PPP соединения
Уведомление об изменениях в состоянии сети и конфигурациях и в системном состоянии
Гибкая схема, позволяющая определение и доступ к сохраненным предпочтениям и текущей конфигурации сети
Платформа Конфигурации системы предлагает уровень абстракции, позволяющей Вашему приложению управлять широким диапазоном задач конфигурации. Для достижения этого платформа использует в своих интересах Базовую Основу выполненная технология цикла и типы списка свойств.
Кроме того, исходный код для платформы Конфигурации системы доступен в Дарвине как часть инициативы Apple С открытым исходным кодом, таким образом, Вы видите точно, как работают вещи. В Дарвине исходный код для платформы Конфигурации системы и связанных объектов разделен между тремя проектами:
configd
. Этот проект включаетconfigd
(демон конфигурации сети) и сама платформа Конфигурации системы.configd_plugins
. Этот проект содержит различные встроенные плагины, такие как монитор события ядра и монитор IP.bootp
. Этот проект включает BootP и DHCP, сообщающий IPv4 и агентам конфигурации IPv6.
Пример мобильности
Платформа Конфигурации системы позволяет пользователям устанавливать многократные сетевые интерфейсы в различных комбинациях и поддерживает динамическое сетевое реконфигурирование, не требуя вмешательства пользователя. Чтобы видеть, как это работает, рассмотрите Марию, PowerBook-суммирующего руководителя на ее способе поставить представление в удаленном офисе.
Поскольку Мария использует свой PowerBook в различной сетевой среде, она использует Сетевые предпочтения для установления набора конфигураций сети для каждой среды. Каждый набор конфигураций сети вызывают расположением. Рисунок 1-1 показывает расположение, названное Office в Сетевых предпочтениях Марии.
Мария устанавливает три расположения:
Office. Местоположение станции устанавливает встроенный интерфейс Ethernet, чтобы быть основным интерфейсом. Если встроенный интерфейс Ethernet не доступен, система использует интерфейс AirPort вместо этого.
Оффлайн. Это расположение отключает все сетевые интерфейсы так, чтобы не были сделаны никакие попытки подключения.
Домой. Это расположение устанавливает основанный на Ethernet модем DSL, чтобы быть основным интерфейсом. Если модем DSL не доступен, система использует 56K модем коммутируемого доступа вместо этого.
В ее офисе Мария включает кабель Ethernet и выбирает Местоположение станции из Меню Apple, как показано на рисунке 1-2.
Для посещения встречи Мария отключает кабель Ethernet и вводит конференц-зал. Когда ее PowerBook просыпается в конференц-зале, он решает, что соединенный кабелем LAN не активен и автоматически переключается на корпоративную сеть AirPort.
В такси до аэропорта, без доступных сетевых служб, Мария пишет свои записки встречи. При ожидании ее рейса она будит PowerBook и использует беспроводную сеть, доступную в аэропорту для отправки ее слайдов презентации вперед в удаленное ведомство по последним штрихам. К этой точке Мария не скорректировала свои сетевые предпочтения, но у нее не было проблем с помощью доступных сетевых служб, даже через циклы следа сна.
Поскольку она обшивает самолета, Мария использует Меню Apple для выбора Оффлайнового расположения, отключающего все сети (как требуется во время путешествия по воздуху). Во время рейса она работает над введением в ее представление.
Когда она достигает удаленного офиса, Мария снова выбирает Местоположение станции и дает ее представление. Она использует недавно полируемые слайды, которые она получает по AirPort от локального сервера.
Когда она возвращается домой, Мария включает кабели Ethernet и внешние телефонные кабели и выбирает Исходное расположение из Меню Apple. Теперь она может работать над бизнесом на последней минуте, активно ли ее соединение DSL сегодня или нет.
Из-за динамической сетевой поддержки реконфигурирования платформы Конфигурации системы Мария никогда не должна была перезапускать свой PowerBook для использования в своих интересах изменения сетевой среды.
Архитектура конфигурации системы
Платформа Конфигурации системы включает много компонентов, сотрудничающих для поддержки конфигурируемых сетевых ресурсов. Этот раздел представляет эти компоненты и определяет несколько условий платформа Конфигурации системы (и этот документ) использование для описания конфигурации сети пользователя.
Для разработчиков сетевых осведомленных приложений этот раздел обеспечивает достаточно справочной информации, чтобы начать использовать достижимость и соединение APIs. Для обзора всего APIs предложения платформы Конфигурации системы считайте Конфигурацию системы APIs. Затем можно принять решение перейти непосредственно к Определению Достижимости и быть соединенным для определенной информации о том, как использовать достижимость и соединение APIs.
Разработчику приложений конфигурации сети, однако, нужно больше всесторонней информации об отдельных компонентах платформы Конфигурации системы. Для узнавания больше об этих компонентах необходимо считать Компоненты Платформы Конфигурации системы. Кроме того, если Вы разрабатываете приложение, определяющее новые расположения или службы, убедиться считать Схему Конфигурации системы.
Условия конфигурации системы
Перед чтением дальше, быть уверенными, что Вы знакомы с условиями Конфигурации системы этот документ использование:
Расположение. Набор конфигураций сети пользователь создает в Сетевых предпочтениях для описания определенной среды, такой как домашняя среда.
Набор. Полная конфигурация для единственного расположения. Конфигурация обычно включает IP и интерфейсную конфигурационную информацию, а также информацию в масштабе всей системы.
Сетевая служба. Набор сетевых объектов для единственного сетевого интерфейса или сетевого соединения. Вместе, эти объекты содержат всю требуемую информацию для создания службы активной.
Сетевой объект. Набор свойств, которые являются определенными для некоторого протокола или сферы интересов, такими как PPP или DNS.
Интерфейс. Физическое соединение, такое как Ethernet.
Взаимодействие компонентов конфигурации системы
Платформа Конфигурации системы включает несколько компонентов, сотрудничающих для оказания мощной, гибкой поддержки для установления и поддержания доступа к конфигурируемым сетевым ресурсам. Эти компоненты:
Персистентная структура хранения для предпочтений конфигурации сети и выбранной информации о системе
Структура динамической памяти для текущей информации о состоянии сети
Агенты конфигурации, управляющие данными в этих двух областях хранения, обрабатывают низкоуровневые события конфигурации и предоставляют услуги уведомления
Всесторонняя и гибкая схема, определяющая и типы данных в персистентных и динамических хранилищах и их иерархической структуре
Полный спектр APIs, обеспечивающего доступ к текущей информации о состоянии сети и предоставляющего уведомления, обрабатывающего достижимость и связь, и поддерживающего определение новых наборов и служб. Для обзора APIs обеспечивает платформа Конфигурации системы, посмотрите Конфигурацию системы APIs.
Рисунок 1-3 показывает первые три из этих компонентов (схема, и APIs не показан), и как они взаимодействуют.
Как показано на рисунке 1-3, динамическая память является концептуальной основой архитектуры Конфигурации системы. Динамическая память:
Содержит копию конфигурационной информации для в настоящее время активного расположения
Содержит текущую информацию о состоянии сети (и также некоторую системную информацию о состоянии)
Обеспечивает ввод для агентов конфигурации
Получает актуальную информацию о статусе от агентов конфигурации
Поддерживает процесс уведомления
Динамическая память в курсе различными агентами конфигурации и воссоздается после каждого системного перезапуска. Динамическая память описывает динамическую память более подробно.
Персистентные склады:
Сетевые предпочтения пользователя (вводимый в Сетевые предпочтения)
Некоторые системные значения, такие как имя компьютера и выбранная информация об управлении питанием
Поскольку его имя подразумевает, персистентное хранилище сохраняется через перезагрузки и только изменяется явными действиями пользователя, системы или приложений конфигурации сети. Персистентное хранилище описано более подробно в Персистентном Хранилище.
Рисунок 1-3 показывает три агента конфигурации. В рабочей системе OS X существует еще несколько агентов конфигурации (некоторые из которых являются внутренними подробными данными реализации, не обсужденными в этом документе). Каждый агент конфигурации ответственен за четко определенную область управления конфигурацией, таков как IPv4 или PPP. В целом агент получает предпочтения и информацию о статусе от динамической памяти и комбинирует его с информацией, которую агент получает от различной системы и сетевых событий. Агент публикует объединенную информацию и результаты любых действий, которые это возвращает в динамическую память. Посмотрите Агенты Конфигурации для получения дополнительной информации об отдельных агентах конфигурации.
Несмотря на то, что это не показано на рисунке 1-3, схема служит общим языком, позволяющим различным компонентам платформы Конфигурации системы связываться. Информация и в динамических и в персистентных хранилищах сохранена в парах ключ/значение. Агенты конфигурации используют пары ключ/значение, чтобы получить доступ к конфигурационной информации и обновить динамическую память. Приложения могут использовать пары ключ/значение, чтобы определить новые службы и наблюдать за изменениями в состоянии сети или конфигурации. Схема определяет эти ключи и значения и иерархию, связывающую их для описания определенных служб. Схема описана более подробно в Схеме: Иерархия и Определения. Для получения информации о том, как использовать схему, чтобы определить новые наборы или службы, видеть Схему Конфигурации системы.
Платформа Конфигурации системы также содержит полное дополнение APIs. Этот APIs включает низкоуровневые функции, которые приложение ISP могло бы использовать для предоставления новых услуг и высокоуровневых функций, которые любое приложение может использовать для соединения с удаленным узлом. Важно помнить, что, если Ваше приложение прежде всего касается достижимости удаленного узла и последующего соединения с ним, знание архитектуры платформы Конфигурации системы не важно. Вместо этого необходимо фокусировать на достижимости и соединении APIs, обсужденный в Определении Достижимости и быть соединенным.
Архитектура платформы Конфигурации системы предоставляет себя другим типам управления динамическим состоянием, также. Структура и гибкость динамической памяти и взаимодействие агентов конфигурации хорошо подходят для коммуникации информации о системе, такой как состояние управления питанием. Несмотря на то, что для сторонних разработчиков возможно использовать структуру динамической памяти в целях кроме конфигурации сети, это не охвачено в этом документе. Для справки с таким проектом необходимо связаться с Apple Глобальные Отношения Разработчика непосредственно.
Конфигурация системы APIs
Платформа Конфигурации системы обеспечивает APIs для поддержки широкого диапазона сетевых приложений из сетевых осведомленных приложений, которые должны соединиться с удаленным узлом приложений номеронабирателя и ISP.
Полезно просмотреть Конфигурацию системы APIs, как разделено на две группы:
Высокоуровневая достижимость и соединение APIs
Низкоуровневая конфигурация APIs
Приложения, которые должны узнать, достижим ли удаленный узел или устанавливает соединение PPP, используют высокоуровневую достижимость и соединение APIs. Этот APIs комбинирует питание архитектуры Конфигурации системы с удобством высокоуровневых функций. Для получения дополнительной информации об этом APIs посмотрите Определение Достижимости и быть соединенным.
Приложения, которые должны создать или копировать наборы, или активировать или деактивировать службы, имеют более сложную задачу. Они должны использовать низкоуровневую конфигурацию APIs. Кроме того, для разработки этих приложений необходимо понять и использовать схему Конфигурации системы, чтобы интерпретировать и создать словари, описывающие новые наборы и службы.
Также важно понять, что, чтобы изменить сетевые предпочтения (другими словами, изменить персистентное хранилище), Ваше приложение должно получить полномочия пользователя root. Это не тривиальная задача; для получения дополнительной информации можно считать Руководство по программированию Authorization Services и рассмотреть примеры кода AuthSample
и MoreAuthSample
доступный в http://developer .apple.com/samplecode/Security/idxAuthorization-date.html.
В настоящее время низкоуровневая конфигурация APIs является очень основной и несколько трудной использовать. Фактически, для выполнения общих операций, таких как создание нового набора, необходимо объединить Конфигурацию системы APIs с доступом Набора I/O. В будущих версиях OS X платформа Конфигурации системы может обеспечить высокоуровневый APIs для выполнения таких задач конфигурации сети.
До тех пор, однако при разработке приложения, которое должно создать новые наборы или активировать или деактивировать службы, необходимо исследовать пример кода MoreSCF. Техническая поддержка Разработчика Apple создала эту выборку для обеспечения библиотеки высокоуровневых функций, делающих выполнение этих задач сравнительно простым. В частности MoreSCF
выборка предоставляет Вам некоторую справку с помощью сложной схемы Конфигурации системы для создания словарей службы и набора. После вывода этой выборкой, объединенной с прочтением Конфигурации системы ссылка API (доступный в Сетевой Ссылочной Библиотеке), должен обеспечить основу для запущения Вас. Кроме того, обязательно считайте Схему Конфигурации системы для получения понимания ключей и значений, которые Вам, вероятно, придется использовать.
Утилиты конфигурации системы
Можно использовать следующие приложения, чтобы просмотреть и, до некоторой степени, изменить информацию о конфигурации системы:
scutil. Обеспечивает доступ командной строки к динамической памяти.
scselect. Позволяет Вам просматривать и изменять текущее местоположение.
Редактор Списка свойств. Обеспечивает удобный для пользователя способ просмотреть персистентное хранилище.
Можно использовать scutil
утилита командной строки, чтобы просмотреть динамическую память, контролируйте уведомления, и создать и изменить словари для тестирования. Используя Терминальное приложение (расположенный в /Applications/Utilities/Terminal
), введите scutil
при подсказке. Для списка команд введите 'справку' в scutil
подсказка.
scselect
инструмент является setuid инструментом (инструмент, имеющий его setuid набор битов, чтобы позволить ему выполнять привилегированные операции), который Меню Apple запускает, чтобы позволить непривилегированному пользователю изменять местоположения. scselect
не API. Если Ваше приложение должно изменить местоположения, необходимо использовать предпочтения APIs в платформе Конфигурации системы.
Для краткого описания Редактора Списка свойств посмотрите Персистентное Хранилище.