先用一句話來描述下“計算機網絡”:多臺計算機及其外部設備,通過通信線路的連接和軟件、協議的協調之下,達到多臺計算機之間的資源共享(即為網絡的核心用途),本篇文章的邏輯性較強,需要耐心閱讀。
計算機訪問網站是通過IP地址來鎖定服務器的位置的。而之所以采用域名的方式,是因為IP地址的記憶比較困難,而采用域名的方式更方便人的記憶。(在這里稍微拓展一下,計算機的計算和存儲是采用二進制數的,十進制數主要是用于顯示給用戶看,而采用八進制和十六進制是用于對二進制的簡化,縮短其長度,所以查找存儲網站的資源服務器,是采用IP地址去訪問的。)接著回來,域名的基本信息就不介紹了,說一些域名的注意點,如:百度的域名是baidu.com,百度的主域名是www.baidu.com,百度的子域名是www.XXX.baidu.com,瀏覽器中輸入IP地址也能訪問網址,只是不需要進行解析流程了,如輸入202.108.22.5服務器地址,可直接訪問百度網站。
進入正題:域名解析流程(括號中內容是作為擴充部分)
計算機訪問網站是按照一定的順序的:
(1)瀏覽器輸入域名之后,首先會訪問系統的緩存,即hosts設置(格式為 IP+網址),可用txt格式打開。對某個特定的域名指定去訪問的IP地址,直接去這個IP地址上的服務器獲取頁面的資源,通過TCP傳輸協議傳輸,顯示頁面。但是,這種方式存在著安全問題,黑客可通過篡改本機的hosts信息,使某域名無法解析,也無法顯示頁面,出現404錯誤,發生DNS劫持;
(2)第二步,hosts文件中沒有定義該域名的服務器地址,就到瀏覽器的緩存中查詢(瀏覽器的緩存中會保存之前網頁的圖片等信息到本地,再次訪問該網站時加快加載速度。還有在TTL生存時間以及域名和IP地址的對映關系)域名對映的IP地址。如果有,就直接訪問該IP地址指向的服務器;如果沒有,就要開始對域名進行解析服務了,查詢DNS解析服務器中對映關系表。(描述:對TTL生存時間的設置,如果太短,頻繁訪問相同域名時要不斷進行解析;如果太長,域名解析出的IP地址會變動。比如,百度的服務器,會在各個地方設置服務器群,雖然其購買的是靜態IP,但為了能達到網站訪問的負載均衡,所以訪問百度時的IP地址會是變動的。而這里的變動不是我們日常所接觸到的,個人計算機的動態IP地址);
(3)第三步,之前兩步獲取的IP地址,都沒有采用到解析服務,那么接下來就進入解析環節了。首先就有個問題了,域名要進行解析,它怎么判定是去哪里進行解析的呢,怎么找到解析服務器的呢?上網的第一步是進行連網,而連網需要找到網絡提供商接入、開通,由他們來提供解析、寬帶大小等;或者在內網學校、公司內,是由學校、公司提供解析服務的。這種解析服務都稱為LDNS(本地DNS解析),如果LDNS中緩存中有該域名和IP地址的對映關系,直接返回IP地址,解析成功。其工作原理跟緩存一致,將該內網區域內訪問過的域名和IP地址對映表緩存起來,其緩存的時間是按照TTL的時間值,解析時先進行查詢,一般能達到80%的解析;
(4)第四步,如果在LDNS的服務器上沒有域名對映的IP地址,無法解析時。LDNS服務器會發送UDP請求給根域名服務器(全球只有13臺根域名服務器,10臺美國,2臺歐洲,1臺日本,根域名服務器里存儲的是地址,關于頂級域名的地址),根服務器根據域名的后綴返回LDNS頂級域名的服務器地址;
(5)第五步,LDNS域名服務器發UDP請求給相應的頂級域名服務器,頂級域名服務器存有NS域名服務器的地址(NS:name service,可指定域名解析的服務器地址,通常為注冊域名的服務器地址);
(6)第六步,按照地址查到域名對映的NS記錄,NS記錄的格式是域名+解析服務器地址,訪問該解析服務器,從而可以知道該域名的IP地址,同時返回TTL值;
(7)第七步,LDNS獲取到IP地址和TTL值之后,會進行緩存到LDNS上;
(8)解析結果的IP返回給本機,訪問網站資源(按TCP傳輸)。
區分:
hosts:定義的IP地址是,存有網站資源(圖片、文字)的服務器;
NS記錄:定義的IP地址是,域名解析的服務器地址;
A記錄:定義的IP地址是,存有網站資源的服務器。
理解:
域名解析(DNS):是將域名解析成某個IP地址后,訪問所指向的服務器獲取資源。
動態域名解析(DDNS):是將固定的域名與動態的IP地址相對應,如花生殼服務就提供動態域名解析服務。為個人和中小型企業提供動態域名解析服務,其網頁資源存儲的電腦,其分配的IP地址是動態的,所以需要花生殼服務,當外網訪問時,會將電腦的IP地址發給花生殼服務器,分配出固定的IP地址給該電腦,達到動態解析的目的。實現外網訪問內網,適用于個人以及中小型企業,沒有購買靜態域名的人群,需求還是很大的。而面對百度這樣的網站,其解析baidu.com,并不是叫做動態域名解析。