信息收集-DNS
首先更正一個小白很普遍的錯誤觀點,www.baidu.com(嚴格上是www.baidu.com. 這個點是根的意思,所有的記錄從這裏開始)並不是一個真正意義上的域名,而是百度服務器的A記錄,baidu.com才是百度服務器的域名。
DNS解析流程
1:自己的電腦的網絡配置中會指定一個本地DNS服務器,當發起網絡請求時,主機先問問本地DNS服務器,DNS服務器返回對應域名的的ip地址。
2:當然這個本地的DNS服務器一開始是不知道的,它會去問根域服務器(即.域)。
3:根域服務器也不知道,但是會返回.com域的域名服務器的地址,讓本地服務器問問.com服務器。
4:這時本地DNS服務器就會去問.com服務器。當然了,.com服務器也不可能知道,它會返回一個存儲了baidu.com這個域名的服務器的地址,讓本地服務器問問baidu.com域名服務器服務器。PS:這裏就比較接地氣了,有過建站經歷的小夥伴都知道,這個存儲了biadu.com域名的服務器就是就是我們域名解析時所用的服務器。
5:這時本地服務器就回去問記錄了baidu.com這個域名的服務器,問問它知不知道www.baidu.com對應的ip地址是多少。這個服務器一查,確實有一個域名是baidu.com的主機進行了A記錄解析(即www.baidu.com),對應著一個ip地址,它會將ip地址返回給本地DNS服務器。
6:本地服務器拿到這個ip,二話不說現在本地緩存一份,然後再把www.baidu.com對應的ip地址返回給自己的電腦。
7:當有其他電腦問本地DNS服務器www.baidu.com對應的ip是多少時,本地DNS服務器發現自己的緩存中有這條記錄(即步驟6),就會直接返回www.baidu.com的ip。
主機和本地服務器之間的查詢稱為遞歸查詢,而本地服務器與各種域名服務器之間的查詢稱為叠代查詢。
當然了,對於百度這種訪問量特別大的網站,我們訪問百度通常都是從步驟7開始的,然後就直接結束了。大概只有在本地服務器清除緩存的一瞬間才能有1-7的完整步驟吧。
除了A記錄還有C name、NS、MX、ptr記錄。
C name:別名記錄,將一個域名解析成另一個域名;
NS:域名服務器的地址記錄;
MX:郵件交換記錄;
ptr:反向記錄,將ip解析成域名。
有興趣的同學可以安裝思科的網絡模擬器Cisco Packet Tracer感受一下完整的解析流程。
信息收集-DNS