TCP/IP協議是網絡通信的基礎,日常在對TCP/IP協議設置時會涉及到IP地址,子網掩碼,默認網關和DNS這幾個參數。這裏咱們主要談下IP地址和DNS這兩個參數之間的關係。瀏覽器
首先計算機在網絡中進行通信時只能識別「101.86.134.121」之類的IP地址,那麼爲何咱們平時在訪問網站時只在瀏覽器地址欄中輸入「www.baidu.com」之類的域名就能看到所須要的頁面呢?這是由於DNS服務器在起到一個翻譯的做用。這麼作的緣由其實很容易理解,由於IP地址沒有規律,很難記,可是訪問網站必需要事先知道對方服務器的IP地址,那麼就選擇了像www.baidu.com,www.163.com這些有意義的字符串(域名)代替了IP地址,同時發明了DNS服務器對這些域名進行解析,DNS服務器知道全部域名對應的IP地址,當咱們訪問www.baidu.com的時候,計算機會去向DNS服務器查詢這個域名對應的IP地址,當計算機拿到IP地址後就能夠訪問該網站了。緩存
DNS 查詢的過程以下:服務器
使用瀏覽器請求網站,經過Wireshark抓包分析DNS數據包以下所示:DNS爲應用層協議,在傳輸層UDP協議基礎上實現,DNS目的端口(Dst Port)是53,域名爲www.baidu.com,DNS服務器的IP地址是(172.20.1.2 在網絡鏈接中配置)。做爲DNS服務器,能夠經過監聽網卡53端口號的數據來得到DNS數據包,對應DNS協議格式進行解析。網絡
接下來說述下LwIP協議棧對DNS服務的支持。LwIP是應用於嵌入式領域的輕量級開源以太網協議棧, 它使用C語言實現很是方便移植,並且支持socket接口,所以使用十分普遍。LwIP協議棧中涉及到DNS服務的代碼爲dns.c文件,主要功能是完成ipv4的客戶端域名解析,不涉及複雜的服務器端的處理過程。客戶端調用API接口能夠實現DNS查詢請求,解析DNS響應,創建本地緩存。socket