SylixOS中DNS靜態映射簡介
1. DNS功能簡介
DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,用戶能夠通過域名訪問互聯網,而不用去記住IP地址。通過域名得到其對應的IP地址的過程叫做域名解析。每個域名都對應一個IP地址,但一個IP地址可以對應多個域名。
2. SylixOS中DNS靜態映射
主機名到IP地址的映射有兩種方式:
1) 靜態映射,每臺設備上都配置主機到IP地址的映射,各設備獨立維護自己的映射表,而且只供本設備使用;
2) 動態映射,建立一套域名解析系統(DNS),只在專門的DNS服務器上配置域名到IP地址的映射。網絡上需要使用域名的設備,首先需要到DNS服務器查詢域名所對應的IP地址。
2.1 /etc/hosts文件
網絡組件初始化函數halNetInit中,會調用到函數API_NetInit初始化網絡系統。在向操作系統內核註冊網絡組件的過程中,系統會調用函數__netCfgFileInit初始化“/etc/hosts”文件。“/etc/hosts”文件中默認保存的信息為“127.0.0.1 localhost”,如圖 2.1所示。
在“/etc/hosts”文件中增加地址映射信息“192.168.2.55 testip”,然後使用“ping testip”命令測試地址靜態解析,發現成功地將testip地址解析為IP地址192.168.2.55,如圖 2.2所示。
在“/etc/hosts”文件中刪除testip的地址映射信息,再次使用“ping testip”命令測試地址靜態解析,發現地址解析失敗,如圖 2.3所示。
2.2 hosttable命令
在向操作系統內核註冊網絡組件的過程中,系統會調用函數__inetHostTableInit初始化本地地址轉換表,同時添加名為“hosttable”的tshell命令。使用hosttable命令可以查看本地動態主機域名表中保存的地址映射信息,使用“-s”選項可以增加一個地址映射信息,然後使用ping命令測試地址靜態解析的結果,如圖 2.4所示。
使用“-d”選項可以刪除一個地址映射信息,同時使用ping命令測試地址靜態解析的結果,發現此時地址解析失敗,如圖 2.5所示。
3. SylixOS中DNS靜態地址解析過程分析
SylixOS網絡協議棧中會調用函數__inetHostTableGetItem查詢本地動態主機域名表。函數__inetHostTableGetItem查詢本地動態主機域名表的過程可以分為三個部分。
1. 查詢本地主機地址SylixOS中定義了本地主機地址“sylixos”,如果查詢的主機名為“sylixos”,輸出參數傳出解析完成的的IP地址,即127.0.0.1,同時函數返回成功。使用“ping sylixos”命令測試,結果如圖 3.1所示。
2. 查詢/etc/hosts文件保存的地址映射信息如果主機名不是“sylixos”,函數__inetHostTableGetItem會打開“/etc/hosts”文件,查詢本地主機域名表,如果查詢到相同主機名,輸出參數傳出對應的IP地址,並且函數返回成功。
3. 查詢hosttable命令添加的哈希表中的地址映射信息如果“/etc/hosts”文件中沒有查詢到相應的主機名,函數__inetHostTableGetItem隨後會遍歷hosttable命令添加的哈希表中的地址映射信息,如果查詢到相同主機名,輸出參數傳出對應的IP地址,並且函數返回成功;如果沒有查詢到相應主機域名信息,則函數__inetHostTableGetItem返回失敗。
SylixOS中DNS靜態映射簡介