Схема конфигурации системы

Схема Конфигурации системы определяет расположение информации о конфигурации сети в персистентном хранилище. В этой главе описываются это расположение и некоторые определенные комбинации пар ключ/значение, определяющих наборы и службы. Это тогда описывает который пары ключ/значение использование агентов конфигурации для управления их сферами интересов. Наконец, эта глава описывает, как использовать Ваше знание схемы для обеспечения предпочтений, определяющих службу. Если приложение определяет наборы или службы, необходимо считать эту главу. Кроме того, если для Вашего приложения нужна подробная информация о состоянии соединения PPP, необходимо считать эту главу, чтобы узнать, как интерпретировать информацию, которую Вы получаете.

Большинство сетевых осведомленных приложений не должно к предпочтениям сети доступа или динамической памяти выполнять свои задачи. Если Ваши сетевые соединения запросов приложения или узнают, достижим ли удаленный сервер, Вы могли бы принять решение перейти непосредственно к Определению Достижимости и быть соединенным.

Расположение персистентного хранилища

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

Персистентное Хранилище представляет четыре предпочтения верхнего уровня в персистентном хранилище:

Система использует информацию в этих четырех предпочтениях для конфигурирования сетевых служб. Рисунок 3-1 показывает, как связаны эти предпочтения.

  Отношение рисунка 3-1 среди предпочтений верхнего уровня в персистентном хранилище
Relationship among top-level preferences in the persistent store

Как Вы видите на рисунке 3-1, Системное предпочтение является отдельным от других трех предпочтений. Это вызвано тем, что Системный словарь содержит глобальную переменную, информацию в масштабе всей системы, такую как имя компьютера. Эта информация применима к машине в целом, независимо от текущей конфигурации сети. Приложение конфигурации сети не имеет никакой потребности к добавленным стоимостям к Системному предпочтению.

Предпочтение CurrentSet всегда содержит внутренний ID, представляющий в настоящее время активный набор в предпочтении Наборов (на рисунке 3-1, это - Setk). Когда пользователь выбирает различное расположение в Сетевых предпочтениях или из Меню Apple, предпочтительный монитор замечает и обновляет динамическую память для отражения изменения. Для получения дополнительной информации о предпочтительном мониторе посмотрите Предпочтительный Монитор).

Оставление двумя предпочтениями верхнего уровня, Наборами и NetworkServices, содержит объем информации, система должна сконфигурировать сетевые службы. Как Вы видите на рисунке 3-1, набор, перечисленный в словаре Наборов, содержит внутренний IDs, представляющий отдельные службы, перечисленные в словаре NetworkServices. Следующие разделы описывают Наборы и словари NetworkServices более подробно.

Словарь наборов

Словарь Наборов содержит подсловарь для каждого набора, определенного в системе. Обычно наборы представляют расположения, создаваемые пользователем в Сетевых предпочтениях, несмотря на то, что приложения конфигурации сети могут также создать их. Например, ISP мог бы обеспечить приложение, определяющее новое расположение, упрощающее для пользователя соединяться с ISP. Для предложения этого нового расположения приложение создает новый словарь набора и некоторое число новых служб. Новый словарь набора содержит конфигурационную информацию для расположения, включая свойство, содержащее имя ISP’s и ссылки на новые службы.

Каждый отдельный словарь набора в словаре Наборов верхнего уровня содержит следующие свойства:

  • UserDefinedName

  • Сеть

Свойство UserDefinedName является строкой, содержащей имя расположения, которое пользователь вводит в Сетевых предпочтениях. Приложение, определяющее новое расположение, использовало бы этот ключ для обеспечения подходящего имени расположения, например, имени ISP. Имя ISP’s тогда выведено на экран в меню Location Сетевых предпочтений и в Меню Apple.

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

  • Глобальная переменная

  • Интерфейс

  • Служба

Поскольку его имя подразумевает, Глобальный словарь предоставляет информацию, которая не является определенной ни для какой определенной службы. В настоящее время Глобальный словарь содержит два задействованных словаря: IPv4 и NetInfo, оба из которых требуются.

Словарь IPv4 должен содержать ключ ServiceOrder. Значение этого ключа является массивом, позволяющим пользователю налагать упорядочивание на свои сетевые службы в Сетевых предпочтениях. Когда многократные службы активны одновременно, система использует массив ServiceOrder для определения, какую службу нужно считать основной. Основная служба определяет маршрут по умолчанию и конфигурации прокси-сервера и DNS.

Словарь IPv4 может также содержать ключ PPPOverridePrimary. Это - устаревший ключ, позволяющий любой активной основанной на PPP службе быть обработанной, как будто это было первым в массиве ServiceOrder. Эта функциональность была заменена, позволив любой отдельной службе включать ключ OverridePrimary в его собственном (на службу) словарь IPv4.

Словарь NetInfo содержит NetInfo обязательные предпочтения. Поскольку использование Служб каталогов становится более широко распространенным, однако, словарь NetInfo меньше станет распространен.

Интерфейсный словарь содержит настройки на интерфейс. Каждый элемент Интерфейсного словаря является подсловарем, идентифицированным именем BSD интерфейса, такой как en0. Каждый подсловарь содержит словарь, названный Ethernet, содержащим результаты ручной конфигурации интерфейса. Скорость, дуплекс и максимальный размер пакета (максимальный блок передачи или MTU) значения сохранены здесь. Эта информация хранится на интерфейсном уровне, чтобы препятствовать тому, чтобы отдельные службы пытались сконфигурировать тот же интерфейс по-разному.

Как правило, однако, пользователь принимает конфигурацию Ethernet по умолчанию путем выбора опции Automatically на вкладке конфигурации Ethernet Сетевых предпочтений. Когда дело обстоит так, словарь Ethernet или не существует или содержит ключ __INACTIVE__.

Словарь Службы содержит ссылки на службы, определенные для этого набора. Каждый элемент словаря Службы является самостоятельно словарем, содержащим единственный элемент — внутренняя служба ID, относящаяся к службе, перечисленной в словаре NetworkServices верхнего уровня. Сетевые предпочтения используют информацию в словаре Службы для отображения служб и включают ли им. Предпочтительный монитор также использует эту информацию, поскольку это загружает текущие предпочтения конфигурации в динамическую память (для получения дополнительной информации об этом процессе, посмотрите Предпочтительный Монитор).

Словарь NetworkServices

Словарь NetworkServices верхнего уровня содержит все сетевые службы, определенные для системы. Каждая сетевая служба представлена словарем (идентифицированный уникальным ключом), который содержит свойства конфигурации для объектов, связанных с той службой. Комбинация объектов определяется типом службы. Например, основанной на модеме службе нужны Интерфейс, PPP, Модем, и объекты IPv4, но не объект AppleTalk, потому что OS X не поддерживает AppleTalk по PPP.

Если Вы разрабатываете приложение, добавляющее службу к новому набору, необходимо создать словарь сетевой службы, описывающий его. Этот раздел обрисовывает в общих чертах содержание словаря сетевой службы.

Словарь сетевой службы может включать следующие свойства:

  • Интерфейсный словарь, описывающий сетевой интерфейс, лежащий в основе службы

  • Переменное число словарей объекта протоколов, каждый из которых описывает конфигурацию объекта протоколов (такого как PPP или AppleTalk) это определяется для службы. (Обратите внимание на то, что некоторые словари объекта протоколов могут присутствовать в словаре сетевой службы, но быть пустыми или отмечены как неактивные.)

  • Один аппаратный словарь объекта, в зависимости от типа службы (тип службы указан в интерфейсном словаре объекта),

  • Словарь прокси, идентифицирующий, какие прокси включены для службы

  • Видимое пользователем имя для службы

Интерфейсный словарь

Интерфейсный словарь описывает транспорт сетевого соединения службы. Содержание Интерфейсного словаря варьируется согласно типу службы, но требуются три элемента:

  • DeviceName

  • Оборудование.

  • Ввести

Значение ключа DeviceName предоставляет имя устройства BSD для сетевого соединения, например, en0 или en1. Для подобных сериалу устройств значение ключа DeviceName является базовым именем минус любой префикс. Например, DeviceName оценивают за модем с именем cu.modem modem. В настоящее время платформа Конфигурации системы не предоставляет API для нахождения всех портов подходящими для сетей. Посмотрите Программно Устанавливающие Предпочтения ссылки на библиотеку примера кода, который может помочь с этим.

Значение Аппаратного ключа является свойством типа CFString, называющий тип аппаратных средств, лежащих в основе сетевого соединения, такого как Ethernet или AirPort. Можно просмотреть содержание этого словаря как ссылка на аппаратный словарь объекта того же имени (для получения дополнительной информации об аппаратных словарях объекта, см. Аппаратные Словари Объекта).

Ключ Type идентифицирует тип соединения, которое могло быть Ethernet, FireWire, PPP, или 6to4.

В дополнение к требуемым ключам Интерфейсный словарь обычно содержит ключ UserDefinedName, содержащий видимое пользователем имя сетевого порта.

Интерфейсные ключи словаря и значения получены в итоге в Таблице 3-1, вместе со связанными действиями агентов конфигурации.

Табличные 3-1  Ключи и значения для Интерфейсного словаря

Ключ

Значение

Дальнейшие действия требуются

Примечания

DeviceName

Имя устройства BSD

Ни один

Оборудование.

AirPort

Ни один

Оборудование.

Ethernet

Ни один

Оборудование.

Модем

Ни один

Ввести

Ethernet

Ни один

Ввести

FireWire

Ни один

Ввести

6to4

Ни один

Ввести

PPP

Должен предоставить ключ SubType.

Контроллер PPP конфигурирует эту службу.

SubType

PPPoE

Требуемый для PPP по службам Ethernet.

SubType

PPPSerial

Требуемый для PPP по последовательному, модему, Bluetooth, и т.д. службы.

SubType

PPTP

Требуемый для VPN (использующий PPTP) службы.

SubType

L2TP

Требуемый для VPN (использующий L2TP) службы.

UserDefinedName

Человекочитаемое имя

Ни один

Словари объекта протоколов

Каждый словарь объекта протоколов содержит информацию, система должна сконфигурировать протокол. Например, свойство ConfigMethod в словаре объекта IPv4 могло бы сказать системе использовать DHCP для конфигурирования IPv4.

В настоящее время объекты протоколов, которые могут быть определены для службы:

  • AppleTalk

  • DNS

  • IPv4

  • IPv6

  • PPP

По большей части словарь службы может содержать любую комбинацию этих словарей объекта протоколов. Если интерфейс не поддерживает протокол, однако, соответствующий словарь проигнорирован. Например, в версии 10.3 OS X, словарь AppleTalk проигнорирован для служб PPP, потому что OS X не поддерживает AppleTalk по PPP.

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

AppleTalk

Словарь объекта протоколов AppleTalk является дополнительным словарем объекта протоколов. Если это присутствует, это содержит следующий требуемый ключ:

  • ConfigMethod (kSCValNetAppleTalkConfigMethod)

Возможные значения для ключа ConfigMethod:

  • Узел (kSCPropNetAppleTalkConfigMethodNode). Стандартная конфигурация AppleTalk, подходящая для общих рабочих станций.

  • Маршрутизатор (kSCPropNetAppleTalkConfigMethodRouter). Используемый для маршрутизаторов AppleTalk.

  • SeedRouter (kSCPropNetAppleTalkConfigMethodSeedRouter). Используемый для AppleTalk отбирают маршрутизаторы.

В зависимости от которого метода конфигурации Вы выбираете, другие пары ключ/значение могут требоваться. Например, при выборе метода конфигурации SeedRouter необходимо также предоставить значения для ключей SeedNetworkRange и SeedZones.

Для получения дополнительной информации о параметрах конфигурации AppleTalk можно просмотреть страницу справочника для appletalk.cfg файл (конфигурационный файл по умолчанию appletalk чтения команды) в http://developer .apple.com/documentation/Darwin/Reference/ManPages/index.html.

Пары ключ/значение в словаре объекта протоколов AppleTalk не имеют никакого эффекта на содержание других словарей в словаре сетевой службы.

DNS

Словарь объекта протоколов DNS является дополнительным словарем объекта протоколов. Это обычно присутствует в словаре сетевой службы службы, но часто пусто. Пустой словарь протокола DNS означает, что пользователь выбирает not to manually configure DNS, позволяя именам серверов DNS и областям поиска быть автоматически предоставленными ISP.

Если Вы хотите потребовать использования определенных серверов DNS и областей поиска, можно добавить любой из следующих дополнительных ключей к словарю объекта протоколов DNS:

  • DomainName (kSCPropNetDNSDomainName)

  • SearchDomains (kSCPropNetDNSSearchDomains)

  • ServerAddresses (kSCPropNetDNSServerAddresses)

  • SortList (kSCPropNetDNSSortList)

Для получения дополнительной информации о ключе SortList можно просмотреть страницу справочника для формата файла настройки преобразователя в http://developer .apple.com/documentation/Darwin/Reference/ManPages/index.html.

Пары ключ/значение в словаре объекта протоколов DNS не имеют никакого эффекта на содержание других словарей в словаре сетевой службы.

IPv4

Словарь объекта протоколов IPv4 является дополнительным словарем объекта протоколов. Это имеет тот требуемый ключ:

  • ConfigMethod (kSCPropNetIPv4ConfigMethod)

Таблица 3-2 показывает шесть возможных значений ключа ConfigMethod. Это также показывает дополнительные ключи, которые необходимо предоставить определенные значения ConfigMethod.

Таблица 3-2  Дополнительные значения для ключа IPv4 ConfigMethod

Значение

Дальнейшие действия требуются

BOOTP

Ни один

DHCP

Ни один

LinkLocal

Ни один

СООБЩИТЬ

Обеспечьте значения для Адресов, Маршрутизатора, SubnetMasks Setup: ключи.

Руководство

Обеспечьте значения для Адресов, Маршрутизатора, SubnetMasks Setup: ключи.

PPP

Может указать ручной адрес.

Для всех значений ConfigMethod кроме PPP агент конфигурации IPv4 публикует значения для Адресов, SubnetMasks, Маршрутизатора и InterfaceName State: ключи. Когда ConfigMethod является PPP, контроллер PPP публикует значения для Адресов, DestAddresses, Маршрутизатора и InterfaceName State: ключи. Для получения дополнительной информации об этих агентах конфигурации посмотрите Поведение Агентов Конфигурации.

IPv6

Словарь объекта протоколов IPv6 является дополнительным словарем объекта протоколов. Словарь объекта протоколов IPv6 имеет почти такой же состав как словарь объекта протоколов IPv4, и это, также, имеет единственный требуемый ключ:

  • ConfigMethod (kSCPropNetIPv6ConfigMethod)

Таблица 3-3 показывает четыре возможных значения ключа ConfigMethod, вместе с дальнейшим требуемым действием.

Таблица 3-3  Дополнительные значения для ключа IPv6 ConfigMethod

Значение

Дальнейшие действия требуются

Примечания

Автоматический

Ни один

Агент конфигурации IPv6 публикует значения для Адресов, PrefixLength, Флагов и InterfaceName State: ключи.

Руководство

Обеспечьте значения для Адресов, Маршрутизатора и PrefixLength

Агент конфигурации IPv6 публикует значения для Адресов, PrefixLength, Флагов, Маршрутизатора и InterfaceName State: ключи.

RouterAdvertisement

Ни один

Агент конфигурации IPv6 публикует значения для PrefixLength, Флагов и InterfaceName State: ключи.

6to4

Обеспечьте значение для 6to4 Реле

Агент конфигурации IPv6 публикует значения для Адресов, PrefixLength, Флагов и InterfaceName State: ключи.

Если словарь объекта протоколов IPv6 присутствует в словаре сетевой службы, контроллер PPP инициировал согласование IPv6 в PPP. Если согласование IPv6 с сервером было успешно, это тогда конфигурирует адрес LinkLocal.

PPP

Словарь объекта протоколов PPP является дополнительным словарем объекта протоколов. Схема обеспечивает много ключей и оценивает за использование в этом словаре, чтобы позволить разработчикам определять точно гранулировавшие службы. Содержание словаря объекта протоколов PPP влияет на содержание некоторых из других словарей в сетевой службе, прежде всего, IPv4 и Интерфейсных словарях. Кроме того, присутствие службы PPP в наборе требует, чтобы присутствие PPPOverridePrimary ввело подсловарь IPv4 в Глобальном словаре набора (как описано в Словаре Наборов).

OS X распознает широкий диапазон опций для служб PPP, многие из которых используются только при совершенно особых обстоятельствах. Этот документ не пытается описать их всех. Вместо этого этот раздел внимание на опции PPP пользователь видит в Сетевых предпочтениях. Поскольку можно соединиться с подавляющим большинством служб PPP с помощью этого большего количества универсальных опций, можно создать словарь объекта протоколов PPP с помощью ключей, описанных в этом разделе (и их значения по умолчанию), и соединение должно успешно выполниться. Затем можно совершенствовать службу путем добавления других ключей, определенных в SCSchemaDefinitions.h файл.

Таблица 3-4 показывает ключи для видимых пользователем опций PPP, вместе с некоторыми возможными значениями.

  Ключи Table 3-4 Optional и значения для словаря объекта протоколов PPP

Ключ

Значение

Примечания

DialOnDemand

0

Включает автоматический коммутируемый доступ. Этот ключ должен использоваться с осторожностью для предотвращения нежелательного набора номера.

IdleReminder

0

Когда секунды в значении IdleReminderTimer протекают, предлагает пользователю поддерживать соединение PPP. Если пользователь не подтверждает экранное диалоговое окно, PPP автоматически разъединяется.

IdleReminderTimer

1800

Числу секунд для протекания перед пользователем напоминают поддержать соединение PPP (если IdleReminder включают).

DisconnectOnIdle

1

Автоматически разъединения, если нет никакого трафика для числа секунд в значении DisconnectOnIdleTimer.

DisconnectOnIdleTimer

900

Число неактивных секунд для протекания перед соединением PPP автоматически разъединяется (если DisconnectOnIdle включают).

DisconnectOnLogout

1

Автоматически разъединения, когда пользователь выходит из системы или когда пользователь выключает с быстрым переключением между пользователями.

CommRedialEnabled

1

Для основанных на модеме соединений, включает повторный набор, если занятый.

CommRedialCount

1

Число раз, чтобы повторно набрать, если занятый (если CommRedialEnabled включают).

CommRedialInterval

30

Интервал в секундах для ожидания между повторным набором, если занятый (если CommRedialEnabled включают).

LCPEchoEnabled

1

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

IPCPCompressionVJ

1

Включает VJ (Ван Джэйкобсон) сжатие на ссылке PPP. Для соединений PPPSerial значение может быть 1 («на») или 0 («прочь»). Для PPPoE, PPTP и соединений L2TP, значение должно быть 0 («прочь»).

CommDisplayTerminalWindow

0

Позволяет дисплею Окна терминала показать вход в систему и взаимодействие пароля с сервером. Это работает только с соединениями PPPSerial.

VerboseLogging

0

Включает журналирование всего согласования PPP, которое может быть полезно для отладки сбоя соединения.

UserDefinedName

Дополнительное имя для соединения. Это значение не имеет никакого эффекта на протокол PPP.

AuthName

Имя пользователя в целях аутентификации.

AuthPassword

Пароль в целях аутентификации.

CommRemoteAddress

Адрес или имя удаленного сервера. Это может быть телефонным номером для соединения PPPSerial, ServiceName для соединения PPPoE, или IP-адресом или именем для PPTP или соединения L2TP.

CommAlternateRemoteAddress

Когда адрес в CommRemoteAddress занят, используемый только для соединений PPPSerial, это - альтернативный адрес для использования.

Определение службы PPP требует нескольких изменений в некоторых из других элементов Вашего словаря сетевой службы. Если Вы предоставляете услугу PPP, необходимо внести следующие изменения в словарь сетевой службы, который Вы создаете:

  • Ключ Типа в Интерфейсном словаре должен иметь значение PPP. Это гарантирует, что агент Контроллера PPP будет действовать на эту службу.

  • Необходимо добавить ключ SubType к Интерфейсному словарю и дать ему значение, описывающее тип услуги PPP, которую Вы предоставляете, такие как PPPoE или L2TP.

  • При определении службы PPP, предназначенной, чтобы использоваться по модему, необходимо будет добавить словарь объекта оборудования модема к словарю сетевой службы.

Аппаратные словари объекта

Ваш словарь сетевой службы должен содержать точно один аппаратный словарь объекта, который должен предоставить информацию на основе на службу. Его имя должно соответствовать значение свойства Hardware Интерфейсного словаря (описанный в Интерфейсном Словаре). Аппаратный словарь объекта может быть:

  • Ethernet

  • AirPort

  • Модем

Аппаратный словарь объекта содержит подробные данные о сетевом оборудовании, лежащем в основе службы, определенной словарем сетевой службы. Поэтому ключи и значения в словаре варьируются согласно типу аппаратных средств, которые описывает словарь.

Аппаратный словарь объекта AirPort может содержать некоторую комбинацию ключей, показанных в Таблице 3-5.

Табличные 3-5  Ключи и значения для аппаратного словаря объекта AirPort

Ключ

Значение

AllowNetCreation

0 или 1

AuthPassword

AuthPasswordEncryption

Цепочка для ключей

JoinMode

Автоматический

JoinMode

Предпочтительный

JoinMode

Недавний

JoinMode

Самый сильный

PowerEnabled

0 или 1

PreferredNetwork

SavePasswords

0 или 1

Словарь объекта Оборудования модема поддерживает большое количество опций, позволяющих Вам указывать очень подробную установку. Таблица 3-6 выводит на экран некоторые ключи, которые схема определяет вместе с некоторыми типичными значениями.

Табличные 3-6  Ключи и типичные значения для словаря объекта Оборудования модема

Ключ

Значение

Примечания

ConnectionScript

Имя файла в модемной папке сценариев

Это - CCL (язык управления соединениями) сценарий.

DataCompression

1

DialMode

WaitForDialTone

Другими значениями является IgnoreDialTone и Руководство.

ErrorCorrection

1

HoldCallWaitingAudibleAlert

0 или 1

HoldDisconnectOnAnswer

0 или 1

HoldEnabled

0 или 1

HoldReminder

0 или 1

HoldReminderTime

PulseDial

0

Динамик

1

Скорость

Скорость последовательный порт открыта со связаться с модемом.

Как разработчик приложения конфигурации сети, Вы предоставляете параметры модема, требуемые Вашей установкой. Когда пользователь открывает предпочтения Network, она может установить опции тот вопрос в нее. Например, приложение может установить свойство ConnectionScript для указания на файл в модемной папке сценариев в /Library/Modem Scripts. Пользователь мог бы выбрать различные опции Speaker и DialMode в зависимости от среды, в которой она делает соединение.

Словарь прокси

Словарь Прокси в каждом словаре сетевой службы содержит конфигурационную информацию прокси-сервера. Схема Конфигурации системы определяет несколько свойств, позволяющих пользователю указывать, как сконфигурировать прокси для данной службы. Например, пользователь может:

  • Выберите который прокси включить

  • Идентифицируйте сервер и порт, связанный с включенными прокси

  • Перечислите сетевые ресурсы, к которым нужно получить доступ без прокси-сервера

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

Для большинства типов прокси, SCSchemaDefinitions.h файл определяет три ключа, обеспечивающие имя прокси, порта, и включен ли прокси. Ключи имеют форму ProtocolProxy, ProtocolPort и ProtocolEnable, где Протокол является именем службы, которая будет проксирована. Кроме того, схема определяет ключ ExceptionsList, позволяющий Вам перечислять определенные узлы и домены, для которых должны быть обойдены настройки прокси. Таблица 3-7 перечисляет ключи и значения, которые можно использовать для создания словаря Прокси.

Табличные 3-7  Ключи и значения для словаря Прокси

Ключ

Значение

Примечания

ExceptionsList

Массив имен хоста и доменных имен

FTPPassive

0 или 1

Средства управления, используют ли клиенты FTP пассивный FTP. Обратите внимание на то, что пассивный FTP может вызвать проблемы с более старыми серверами и некоторыми конфигурациями сети. Значение по умолчанию равняется 1 (пассивный FTP включил).

FTPEnable

0 или 1

Если значение FTPEnable равняется 1, прокси-сервер FTP указан значением ключа FTPProxy.

FTPPort

Номер порта

FTPProxy

Прокси-сервер

GopherEnable

0 или 1

Если значение GopherEnable равняется 1, прокси-сервер гофера указан значением ключа GopherProxy.

GopherPort

Номер порта

GopherProxy

Прокси-сервер

HTTPEnable

0 или 1

Если значение HTTPEnable равняется 1, сервер Прокси HTTP указан значением ключа HTTPProxy.

HTTPPort

Номер порта

HTTPProxy

Прокси-сервер

HTTPSEnable

0 или 1

Если значение HTTPSEnable равняется 1, прокси-сервер HTTPS указан значением ключа HTTPSProxy.

HTTPSPort

Номер порта

HTTPSProxy

Прокси-сервер

RTSPEnable

0 или 1

Если значение RTSPEnable равняется 1, прокси-сервер RTSP указан значением ключа RTSPProxy.

RTSPPort

Номер порта

RTSPProxy

Прокси-сервер

SOCKSEnable

0 или 1

Если значение SOCKSProxy равняется 1, прокси-сервер SOCKS указан значением ключа SOCKSProxy.

SOCKSPort

Номер порта

SOCKSProxy

Прокси-сервер

Поведение агентов конфигурации

Вспомните что демон системного уровня, configd, держит данные состояния сети в курсе путем инициализации динамической памяти и загрузки агентов конфигурации как пакетов (или плагины). Агенты, выполненные в configd пространство памяти и является каждым ответственным за четко определенную область управления конфигурацией.

Агенты конфигурации используют ключи и значения, определенные в SCSchemaDefinitions.h файл для передачи с динамической памятью. Агенты используют некоторые ключи для получения конфигурационной информации и других для публикации результатов событий, которые они обнаруживают и меры, которые они принимают.

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

Предпочтительный монитор

Предпочтительный монитор читает в настоящее время активный набор конфигурации, указанный предпочтением CurrentSet пользователя, и загружает связанные предпочтения в динамическую память. Загрузка предпочтений включает процесс отображения, сглаживающий на единственный уровень иерархию вложенных словарей, составляющих в настоящее время активный набор. Отображающиеся замены каждый вложенный словарь с новой парой ключ/значение. Новый ключ является путем от корня словаря набора к вложенному словарю, и значение является значением вложенного словаря минус любые дополнительные вложенные словари. Таким образом произвольно глубокая иерархия вложенных словарей может быть представлена как ряд словарей верхнего уровня, ни один из которых не содержит вложенные словари.

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

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

Поскольку пример процесса отображения, который предпочтительный монитор выполняет, Перечисление 3-1, показывает подмножество предпочтений пользователя, как это появляется в персистентном хранилище.

  Подмножество перечисления 3-1 словаря службы (ServiceID 100)

<key>100</key>
<dict>
    <key>IPv4</key>
    <dict>
        <key>ConfigMethod</key>
        <string>BootP</string>
    </dict>
    <key>DNS</key>
    </dict>
    <key>Interface</key>
    <dict>
        <key>DeviceName</key>
        <string>en0</string>
        <key>Hardware</key>
        <string>Ethernet</string>
        <key>Type</key>
        <string>Ethernet</string>
        <key>UserDefinedName</key>
        <string>Built-in Ethernet</string>
    </dict>
    <key>UserDefinedName</key>
    <string>Built-in Ethernet</string>
</dict>
 

Перечисление 3-2 показывает то, на что похож этот словарь после того, как предпочтительный монитор отображает его.

  Подмножество перечисления 3-2 словаря службы, после отображения в динамическую память

/Network/Service/100
/Network/Service/100/IPv4
<dictionary>
    <key>ConfigMethod</key>
    <string>BootP</string>
</dictionary>
 
/Network/Service/100/Interface
<dictionary>
    <key>DeviceName</key>
    <string>en0</string>
    <key>Hardware</key>
    <string>Ethernet</string>
    <key>Type</key>
    <string>Ethernet</string>
    <key>UserDefinedName</key>
    <string>Built-in Ethernet</string>
</dictionary>
 
<dictionary>
    <key>UserDefinedName</key>
    <string>Built-in Ethernet</string>
</dictionary>

Как Вы видите в Перечислении 3-2, IPv4 и Интерфейсные подсловари теперь на том же уровне как их родитель (словарь службы) и имеют ключи, описывающие их позицию в родительском словаре. Кроме того, пустой подсловарь DNS в Перечислении 3-1 не представлен в отображении.

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

Event Monitor ядра

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

В отличие от большинства других агентов, монитор события ядра не получает конфигурационную информацию от Setup: ключи в динамической памяти. Вместо этого это получает свой ввод непосредственно от ядра и публикует его наблюдения в части из State: ключи, как показано в Таблице 3-8.

Таблица 3-8  Вводит, монитор события ядра публикует

Ключ

Свойство

Примечания

State:/Network/Interface/InterfaceName/IPv4

Адреса

Опубликованный для всех интерфейсов.

State:/Network/Interface/InterfaceName/IPv4

SubnetMasks

Опубликованный для широковещательных интерфейсов.

State:/Network/Interface/InterfaceName/IPv4

BroadcastAddresses

Опубликованный для широковещательных интерфейсов.

State:/Network/Interface/InterfaceName/IPv4

DestAddresses

Опубликованный для интерфейсов точка-точка.

State:/Network/Interface/InterfaceName/Link

Активный

TRUE когда интерфейс активен.

State:/Network/Interface

Интерфейсы

Это - массив имен интерфейса.

Агент конфигурации IPv4

Агент конфигурации IPv4 конфигурирует устройства типа Ethernet для сетей IP. Когда предпочтительный монитор загружает обновленное отображение из персистентного хранилища в динамическую память, агент конфигурации IPv4 получает уведомление для каждой сконфигурированной службы. Это получает конфигурационную информацию от соответствующего Setup: ключи и применяют ту конфигурацию к обозначенному интерфейсу. Это тогда обновляет динамическую память для отражения присвоенных фактических IP-адресов. Для некоторых конфигураций, таких как DHCP и BootP, агент конфигурации IPv4 также обновляет динамическую память с любыми параметрами конфигурации, которые это получило от сервера.

Когда пользователь переключает расположения или вносит изменение в предпочтения конфигурации IP в Сетевых предпочтениях, предпочтительный монитор загружает новые настройки в динамическую память. Агент конфигурации IPv4 получает уведомление об изменениях и обновляет конфигурацию сети согласно новым настройкам. Это тогда публикует новую информацию о состоянии сети в надлежащем State: ключи.

Агент конфигурации IPv4 также наблюдает изменения в состоянии канала. Это делает это путем регистрации интереса в State: вводит монитор события ядра публикует (показанный в Таблице 3-8). Когда компьютер включается в сеть, это поддерживает автоматическую конфигурацию сетевых интерфейсов. Таблица 3-9 показывает ключам использование агента конфигурации IPv4.

Таблица 3-9  Включает использование агента конфигурации IPv4

Ключ

Свойство

Примечания

State:/Network/Interface

Интерфейсы

Список сетевых интерфейсов.

State:/Network/Interface/InterfaceName/Link

Активный

Состояние канала данного интерфейса.

Setup:/Network/Global/IPv4

ServiceOrder

Массив службы IDs, используемой для ранжирования и установления приоритетов.

Setup:/Network/Service/ServiceID/Interface

DeviceName

Имя интерфейса BSD, которое будет сконфигурировано.

Setup:/Network/Service/ServiceID/Interface

Ввести

Когда Тип является Ethernet, конфигурирует службы.

Setup:/Network/Service/ServiceID/IPv4

ConfigMethod

Руководство, BootP, DHCP, PPP, INFORM, LinkLocal.

Setup:/Network/Service/ServiceID/IPv4

Адреса

Для Руководства и INFORM, IP-адреса, который будет присвоен.

Setup:/Network/Service/ServiceID/IPv4

SubnetMasks

Для Руководства и INFORM, маски IP, которая будет присвоена.

Агент конфигурации IPv4 также публикует значения в динамической памяти. Таблица 3-10 показывает ключи, которые агент конфигурации IPv4 публикует и обстоятельства, при которых это делает так.

Таблица 3-10  Вводит, агент конфигурации IPv4 публикует

Ключ

Свойство

Примечания

State:/Network/Service/ServiceID/IPv4

Адреса

IP-адрес присвоился для этой службы. Для Руководства и INFORM, это должно быть тем же адресом, указанным в Setup: ключи.

State:/Network/Service/ServiceID/IPv4

SubnetMasks

Маска IP присвоилась для этой службы. Для Руководства и INFORM, это должно быть тем же адресом, указанным в Setup: ключи.

State:/Network/Service/ServiceID/IPv4

Маршрутизатор

State:/Network/Service/ServiceID/IPv4

InterfaceName

Имя интерфейса BSD связалось с этой службой.

State:/Network/Service/ServiceID/DNS

DomainName

Опубликованный, когда ConfigMethod является DHCP, BootP, или INFORM и требуемые данные были предоставлены сервером.

State:/Network/Service/ServiceID/DNS

ServerAddresses

Опубликованный, когда ConfigMethod является DHCP, BootP, или INFORM и требуемые данные были предоставлены сервером.

State:/Network/Service/ServiceID/NetInfo

ServerAddresses

Опубликованный, когда ConfigMethod является DHCP, BootP, или INFORM и требуемые данные были предоставлены сервером.

State:/Network/Service/ServiceID/NetInfo

ServerTags

Опубликованный, когда ConfigMethod является DHCP, BootP, или INFORM и требуемые данные были предоставлены сервером.

State:/Network/Service/ServiceID/DHCP

Специфичная для DHCP информация, такая как время владения.

Агент конфигурации IPv6

Как агент конфигурации IPv4, агент конфигурации IPv6 также конфигурирует устройства типа Ethernet для сетей IP. Кроме того, агент конфигурации IPv6 конфигурирует устройства FireWire и новое 6to4 интерфейс. Когда предпочтительный монитор загружает обновленное отображение из персистентного хранилища в динамическую память, агент конфигурации IPv6 получает уведомление для каждой сконфигурированной службы. Это получает конфигурационную информацию от соответствующего Setup: ключи и применяют ту конфигурацию к обозначенному интерфейсу. Это тогда обновляет динамическую память для отражения присвоенных фактических IP-адресов.

Агент конфигурации IPv6 также наблюдает изменения в состоянии канала. Это делает это путем регистрации интереса в State: вводит монитор события ядра публикует (показанный в Таблице 3-8). Когда компьютер включается в сеть, это поддерживает автоматическую конфигурацию сетевых интерфейсов. Таблица 3-11 показывает ключам использование агента конфигурации IPv6.

Таблица 3-11  Включает использование агента конфигурации IPv6

Ключ

Свойство

Примечания

State:/Network/Global/IPv4

PrimaryService

Используемый для определения, который интерфейс использовать для 6to4 туннелирование.

State:/Network/Interface

Интерфейсы

Список сетевых интерфейсов.

State:/Network/Interface/InterfaceName/IPv6

Адреса

Руководство или автоматически присвоенный IP-адрес.

State:/Network/Interface/InterfaceName/IPv6

Флаги

Флаги специфических особенностей адреса.

State:/Network/Interface/InterfaceName/IPv6

PrefixLength

Длина префикса адреса или подсети.

State:/Network/Interface/InterfaceName/IPv6

Маршрутизатор

State:/Network/Interface/InterfaceName/Link

Активный

Состояние канала данного интерфейса.

Setup:/Network/Service/ServiceID/IPv6

Адреса

IP-адрес, который будет присвоен.

Setup:/Network/Service/ServiceID/IPv6

ConfigMethod

Автоматический, ручной, RouterAdvertisement, 6to4.

Setup:/Network/Service/ServiceID/IPv6

Флаги

Специфичные для адреса флаги.

Setup:/Network/Service/ServiceID/IPv6

PrefixLength

Длина префикса адреса или подсети.

Setup:/Network/Service/ServiceID/IPv6

Маршрутизатор

Таблица маршрутизации обновлений с маршрутом по умолчанию.

Setup:/Network/Service/ServiceID/Interface

Ввести

Когда Тип является Ethernet, FireWire или 6to4, конфигурирует службы. Также конфигурирует службы IPv4 по FireWire.

Setup:/Network/Service/ServiceID/6to4

Реле

6to4 релейный адрес.

Агент конфигурации IPv6 также публикует значения в динамической памяти. Таблица 3-12 показывает ключи, которые агент конфигурации IPv6 публикует и для некоторых ключей, обстоятельств, при которых это делает так.

Таблица 3-12  Вводит, агент конфигурации IPv6 публикует

Ключ

Свойство

Примечания

State:/Network/Service/ServiceID/IPv6

Адреса

State:/Network/Service/ServiceID/IPv6

Флаги

State:/Network/Service/ServiceID/IPv6

PrefixLength

State:/Network/Service/ServiceID/IPv6

Маршрутизатор

Когда ConfigMethod является Ручным.

State:/Network/Service/ServiceID/IPv6

InterfaceName

Монитор IP

Основное задание агента монитора IP должно выбрать основную сетевую службу. Это обычно - служба, связанная с маршрутом по умолчанию и DNS по умолчанию для системы. Для создания его определения агент монитора IP исследует и предпочтительный приоритет пользователя служб и текущий статус тех служб. Это тогда выбирает в настоящее время доступную службу, которая является самой высокой в списке приоритетов пользователя и отмечает ту службу как основную в динамической памяти.

Агент монитора IP управляется информацией, которую другие агенты публикуют в динамической памяти. Это контролирует предпочтения пользователя, отображенные в предпочтительным монитором и состоянием конфигурации служб, опубликованных IPv4 и агентами конфигурации IPv6 и контроллером PPP. Таблица 3-13 показывает ключам использование агента монитора IP.

Таблица 3-13  Включает использование монитора IP

Ключ

Свойство

Примечания

State:/Network/Interface/InterfaceName/Link

Активный

Setup:/Network/Global/IPv4

ServiceOrder

Setup:/Network/Service/ServiceID/IPv4

Маршрутизатор

Указанный пользователем. В целом эти настройки предпочтены по значениям, полученным на сеть.

Setup:/Network/Service/ServiceID/DNS

DomainName

Setup:/Network/Service/ServiceID/DNS

ServerAddresses

Setup:/Network/Service/ServiceID/DNS

SearchDomains

Setup:/Network/Service/ServiceID/DNS

SortList

Setup:/Network/Service/ServiceID/NetInfo

BindingMethods

Setup:/Network/Service/ServiceID/NetInfo

ServerAddresses

Setup:/Network/Service/ServiceID/NetInfo

ServerTags

Setup:/Network/Service/ServiceID/Proxies

Все свойства

State:/Network/Service/ServiceID/IPv4

Адреса

Настройки произошли из типа конфигурации. В целом, когда указанная пользователями установка недоступна, эти настройки используются.

State:/Network/Service/ServiceID/IPv4

Маршрутизатор

State:/Network/Service/ServiceID/DNS

DomainName

State:/Network/Service/ServiceID/DNS

ServerAddresses

State:/Network/Service/ServiceID/DNS

SearchDomains

State:/Network/Service/ServiceID/DNS

SortList

State:/Network/Service/ServiceID/NetInfo

ServerAddresses

State:/Network/Service/ServiceID/NetInfo

ServerTags

State:/Network/Service/ServiceID/Proxies

Все свойства

Монитор IP также публикует значения в динамической памяти. Таблица 3-14 показывает ключи, которые монитор IP публикует и обстоятельства, при которых это делает так.

Таблица 3-14  Вводит, монитор IP публикует

Ключ

Свойство

Примечания

State:/Network/Global/IPv4

PrimaryService

Идентифицирует, какую сетевую службу считают основной.

State:/Network/Global/IPv4

PrimaryInterface

Идентифицирует, какой сетевой интерфейс считают основным.

State:/Network/Global/IPv4

Маршрутизатор

Таблица маршрутизации обновлений с маршрутом значения по умолчанию PrimaryService. Дескрипторы “проксируют arp”, включенный, если значение Маршрутизатора совпадает с одним из значений Адресов службы (включил автоматически, если Маршрутизатор не имеет никакого значения).

State:/Network/Global/DNS

DomainName

Проверки каждое из свойств DNS для основной службы, одобряя свойство от Setup: ключ по одному от State: ключ.

State:/Network/Global/DNS

ServerAddresses

State:/Network/Global/DNS

SearchDomains

State:/Network/Global/DNS

SortList

State:/Network/Global/NetInfo

ServerAddresses

Генерирует список адресов сервера NetInfo и тегов сервера на основе информации о NetInfo основной службы.

State:/Network/Global/NetInfo

ServerTags

State:/Network/Global/Proxies

Все свойства

При наличии, использует информацию основной службы прокси в Setup: ключ, иначе, использует информацию прокси в State: ключ.

State:/Network/Service/ServiceID/IPv6

Маршрутизатор

Для ConfigMethod кроме Руководства.

Контроллер PPP

Контроллер PPP конфигурирует интерфейсы PPP для сетей IP. Это управляет соединениями через модемы коммутируемого доступа и через PPP по Ethernet (PPPoE) и VPN (виртуальная частная сеть) соединения с помощью PPTP (протокол туннелирования точка-точка) и L2TP (протокол туннелирования уровня 2). Контроллер PPP взаимодействует с приложениями номеронабирателя и инстанцирует интерфейсов PPP по мере необходимости.

Контроллер PPP получает свою конфигурационную информацию от Setup: ключи, предоставленные предпочтениями, контролируют, и получает уведомление, когда изменяются эти ключи. После того, как интерфейс сконфигурирован, контроллер PPP публикует IP, место назначения, и адреса маршрутизатора и информацию DNS, предоставленную сервером PPP. Таблица 3-15 показывает ключам использование контроллера PPP.

Таблица 3-15  Включает использование контроллера PPP

Ключ

Свойство

Примечания

Setup:/Network/Service/ServiceID/Interface

DeviceName

Setup:/Network/Service/ServiceID/Interface

Ввести

Конфигурирует службы с Типом PPP

Setup:/Network/Service/ServiceID/Interface

SubType

PPPSerial, PPPoE, PPTP, L2TP

Setup:/Network/Global/IPv4

ServiceOrder

Setup:/Network/Service/ServiceID/PPP

Все свойства

Контроллер PPP публикует много ключей в динамической памяти. Таблица 3-16 показывает некоторым из них.

  Ключи Table 3-16 Some контроллер PPP публикуют

Ключ

Свойство

Примечания

State:/Network/Service/ServiceID/IPv4

Адреса

State:/Network/Service/ServiceID/IPv4

DestAddresses

State:/Network/Service/ServiceID/IPv4

Маршрутизатор

State:/Network/Service/ServiceID/IPv4

InterfaceName

State:/Network/Service/ServiceID/DNS

DomainName

State:/Network/Service/ServiceID/DNS

ServerAddresses

State:/Network/Service/ServiceID/DNS

SearchDomains

State:/Network/Service/ServiceID/DNS

SortList

State:/Network/Service/ServiceID/PPP

Зарезервированный для использования Apple

Используя схему

Предыдущий раздел описывает, как схема Конфигурации системы структурирует персистентное хранилище и какие комбинации значения ключа определяют наборы и определенные службы. Это - существенное знание для любого разработчика, пишущего приложение, определяющее набор или предоставляющее сетевую услугу, потому что информация должна быть представлена в правильном формате. Это - также существенное знание для разработчика приложения, запрашивающего подробную информацию соединения PPP, или это запрашивает уведомления. Это вызвано тем, что агенты конфигурации и динамическая память также придерживаются схемы. Необходимо ли зарегистрироваться для уведомлений или получить информацию о текущем состоянии соединения, необходимо знать, какие пары ключ/значение содержат данные, которыми Вы интересуетесь.

В этом разделе описываются три ситуации, в которых знание схемы важно.

Программно устанавливающие предпочтения

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

Чтобы помочь удовлетворить потребности разработчиков, Техническая поддержка Разработчика Apple предоставляет крупной библиотеке примера кода, обертывающего часть низкоуровневой Конфигурации системы API в высокоуровневых функциях. Мало того, что эта библиотека изолирует Вас от большой части низкоуровневого манипулирования парами ключ/значение, это также обеспечивает оптимизированный шаблон, который можно использовать для определения базовой услуги. Когда Вы получаете эту работу базовой услуги, можно тогда настроить настройки, с помощью информации inLayout Персистентного Хранилища как руководство.

Библиотека примера кода, названная MoreSCF, содержит несколько модулей, помогающих Вам программно определить наборы, найти активные порты и активировать службы.

Получение подробной информации состояния соединения PPP

Платформа Конфигурации системы обеспечивает API, позволяющий Вам получать подробную информацию о текущем соединении PPP. Доступный в версии 10.3 OS X и позже, этот API предоставляет Вам доступ к информации, собранной контроллером PPP. Для использования этого API необходимо быть знакомы с расположением словаря сетевой службы и словаря объекта протоколов PPP, как определено схемой. Это вызвано тем, что информация, которую API возвращает Вам, следует за той же структурой.

Вспомните, что предпочтительный монитор читает персистентное хранилище и заполняет динамическую память со сглаженными ключами и значениями, описывающими в настоящее время активную конфигурацию пользователя. Эта информация находится в части установки динамической памяти, с помощью ключей, снабженных префиксом Setup: (для получения дополнительной информации о том, как эти ключи создаются, видят Предпочтительный Монитор). Другие агенты конфигурации читают ключи установки, они интересуются, источники монитора информации о состоянии сети, и публикуют результаты своих наблюдений и действий конфигурации в части состояния динамической памяти. Несмотря на то, что заманчиво перейти непосредственно к динамической памяти и получить значение определенного ключа, в некоторых случаях, это не столь эффективно, как Вы могли бы ожидать.

В частности для получения текущего состояния PPP намного лучше использовать SCNetworkConnectionCopyExtendedStatus функция в SCNetworkConnection API (определенный в SCNetworkConnection.h файл в платформе Конфигурации системы). Используя эту функцию, можно получить очень подробную информацию состояния соединения от контроллера PPP, включая некоторую информацию, никогда не копирующуюся в часть состояния динамической памяти.

Например, когда пользователь принимает решение сделать соединение PPP через модем, существует несколько шагов, которые предпринимает модем, прежде чем соединение наконец установлено. Если Вы регистрируетесь для уведомления на Состоянии PPP, вводят динамическую память (State:/Network/Service/serviceID/PPP/Status), Вы получите уведомление, когда будет обновлено значение этого ключа. При необходимости в информации о состоянии соединения раньше Вы могли бы принять решение получить значение ключа PPP Status сразу после того, как инициируется соединение. Когда Вы сделаете это, однако, Вы получите значение, Разъединенное, пока не завершается соединение. Это вызвано тем, что контроллер PPP не обновляет динамическую память ключ PPP Status, пока соединение не будет завершено. Если, вместо этого, Вы используете SCNetworkConnectionCopyExtendedStatus функционируйте для запроса немедленного оповещения, Вы будете в состоянии наблюдать промежуточные состояния, те, которые Инициализируют, Подключение, Согласовывают, Аутентифицируют, и Связанный. Таким образом, чем если бы Вы просто следили за динамическим магазином, можно стать намного более подробными (и более точный) информация.

Важно помнить, что SCNetworkConnection API, как большая часть другой Конфигурации системы APIs, зависит от определенного с помощью схемы расположения словарей сетевой службы и динамической памяти. Когда Вы используете SCNetworkConnectionCopyExtendedStatus функция для получения информации состояния соединения PPP Вы получаете словарь, содержащий подсловарь для каждого из субкомпонентов службы, таких как PPP, IPv4 и Модем. Для успешной интерпретации информации в этих словарях необходимо знать, как схема определяет расположение пар ключ/значение. Для получения дополнительной информации о структуре этих словарей посмотрите надлежащие разделы в Словаре NetworkServices.

Получение уведомлений

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

Несмотря на то, что платформа Конфигурации системы позволяет Вам запросить информацию на этом уровне, это также обеспечивает APIs, что краткий обзор часть его и обеспечивает его в более приемлемых формах. Поэтому важно знать, когда является надлежащим запросить уведомления на отдельных ключах и когда является надлежащим использовать API для получения информации.

Например, если Ваше приложение должно знать об изменениях в сетевых настройках прокси, в то время как оно работает, необходимо наблюдать ключ динамической памяти, связанный с сетевыми настройками прокси. Это, гарантирует, чтобы Вы получили уведомление, когда изменяется любая из этих настроек. Если, вместо этого, Вы вызываете SCDynamicStoreCopyProxies функция для получения настроек прокси в силе, когда приложение запустится Вы не будете уведомлены относительно изменений как Ваше выполнение приложения.

С другой стороны, наблюдая ключи конфигурации ( Setup: ключи в динамической памяти), обычно плохая идея, если Вы не разрабатываете агент конфигурации. Это вызвано тем, что Ваше приложение не имеет никакого способа знать, если, или что еще более важно когда, изменения конфигурации отражаются в рабочей конфигурации системы.