1. 程式人生 > >SylixOS中DNS靜態映射簡介

SylixOS中DNS靜態映射簡介

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地址。

SylixOS中提供了兩種主機名到IP地址的靜態映射的實現方式。一種是在“/etc/hosts”文件中記錄靜態地址映射表;一種是以tshell命令的形式,在系統維護的哈希表中存放靜態地址映射信息。

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靜態映射簡介