SystemConfiguration 简介
SystemConfiguration 框架簡介
在電腦開啟時(shí),configd 守護(hù)線程便會開啟,進(jìn)行網(wǎng)絡(luò)配置,而 SystemConfiguration.framework 則是與該線程進(jìn)行會話,從而管理網(wǎng)絡(luò)配置的。
該框架主要有兩個(gè)目的,一是提供動(dòng)態(tài)的網(wǎng)絡(luò)配置,使得用戶可以對網(wǎng)絡(luò)無縫連接,另一個(gè)是支持應(yīng)用對網(wǎng)絡(luò)的創(chuàng)建、修改以及網(wǎng)絡(luò)服務(wù)的訪問。
對于簡單的網(wǎng)絡(luò)連接狀態(tài)變化,該框架中直接提供了一些方法,可以監(jiān)聽相關(guān)的狀態(tài)值,從而避免開發(fā)人員去涉及較低層的方法,如常用的 AFNetworking 第三方庫就使用了該框架中的方法來監(jiān)聽網(wǎng)絡(luò)連接的狀態(tài)變化。
對于從事網(wǎng)絡(luò)配置或撥號軟件相關(guān)工作的開發(fā)人員,除了了解該框架中檢查網(wǎng)絡(luò)狀態(tài)的相關(guān)方法,更應(yīng)關(guān)注網(wǎng)絡(luò)偏好設(shè)置和配置相關(guān)的方法。
框架中的一些名詞:
- Location,地點(diǎn),是對網(wǎng)絡(luò)連接環(huán)境的描述,由用戶在網(wǎng)絡(luò)偏好設(shè)置中創(chuàng)建,是面向普通用戶的。
- Set,集合,一個(gè)地點(diǎn)所包含的網(wǎng)絡(luò)配置,如 IP 地址、接口信息、系統(tǒng)配置等,是面向開發(fā)人員的。
- Network service,網(wǎng)絡(luò)服務(wù),是描述網(wǎng)絡(luò)接口和連接的實(shí)體的集合,這些實(shí)體中所包含的信息,能確保一個(gè)網(wǎng)絡(luò)服務(wù)生效。
- Network entity,網(wǎng)絡(luò)實(shí)體,描述一個(gè)實(shí)體的屬性集合,如 PPP、DNS 協(xié)議,都是通過一組屬性進(jìn)行描述的。
- Interface,接口,表示物理連接,如以太網(wǎng)。
Location 和 Set 都是對一個(gè)完整的網(wǎng)絡(luò)配置的描述,只是使用的人不同而已。
系統(tǒng)網(wǎng)絡(luò)配置分為多個(gè)部分,各個(gè)部分通過相互配合,才能夠提供強(qiáng)大方便的網(wǎng)絡(luò)服務(wù),各部分如下:
- 存儲所有網(wǎng)絡(luò)配置偏好和所選系統(tǒng)信息的持久化文件
- 存儲當(dāng)前使用的網(wǎng)絡(luò)配置信息的動(dòng)態(tài)存儲空間
- 協(xié)調(diào)管理上面兩個(gè)部分的配置管理者(可以同時(shí)存在多個(gè)管理者,處理相關(guān)的配置變化事件)
- 定義了網(wǎng)絡(luò)配置過程中使用的數(shù)據(jù)類型文件
- 訪問或修改網(wǎng)絡(luò)配置以及消息推送等操作的接口
從網(wǎng)絡(luò)感知到網(wǎng)絡(luò)服務(wù)提供及撥號應(yīng)用的相關(guān)接口,該框架都有提供。只是需要?jiǎng)?chuàng)建、修改網(wǎng)絡(luò)服務(wù)的接口較為底層,使用了專門的名詞來描述相關(guān)配置,要進(jìn)行底層網(wǎng)絡(luò)服務(wù)的編程,需要先了解相關(guān)名詞。并且,此操作需要修改配置文件,就需要根權(quán)限。另外,還會涉及到其他框架的使用,如創(chuàng)建一個(gè)網(wǎng)絡(luò)服務(wù),就需要結(jié)合 IOKit 框架中的方法。
在 /usr/sbin 下,有兩個(gè)命令 scutil 和 scselect ,分別是網(wǎng)絡(luò) system configure 的管理工具和選擇命令。
在測試時(shí),也可以使用 ipconfig 命令,來設(shè)置相關(guān)網(wǎng)絡(luò)參數(shù),具體使用方式可使用 man ipconfig 命令查看。
實(shí)際上,可以打開 /Library/Preferences/SystemConfiguration/preferences.plist 配置文件,查看所有的網(wǎng)絡(luò)配置信息,更好的理解配置信息的組織方式。但是,該文件對于該系統(tǒng)配置框架是私有的,不要在程序中直接使用它,或者編輯它。
這個(gè)文件存儲了所有的網(wǎng)絡(luò)配置,但是應(yīng)用并不是從該文件獲取網(wǎng)絡(luò)動(dòng)態(tài)的,而是通過讀取動(dòng)態(tài)存儲的狀態(tài)值。為了避免開發(fā)者的應(yīng)用直接監(jiān)聽底層網(wǎng)絡(luò)狀態(tài)的變化,configuration agents 會根據(jù)底層事件來實(shí)時(shí)更新存儲的動(dòng)態(tài)網(wǎng)絡(luò)配置,而頂層的應(yīng)用只要通過該框架注冊監(jiān)聽感興趣的值即可。
當(dāng)然,能使用框架提供的接口的,就應(yīng)避免去監(jiān)聽具體的值,無法避免,則需要參考 SCSchemaDefinitions.h 文件,明白具體應(yīng)該監(jiān)聽哪個(gè)值,也可參見官方文檔 The System Configuration Schema。
總結(jié)
以上是生活随笔為你收集整理的SystemConfiguration 简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux mysql5.6 安装
- 下一篇: DOS管道与重定向