1. 程式人生 > 其它 >從輸入url到頁面展示到底發生了什麼

從輸入url到頁面展示到底發生了什麼

從輸入url到頁面展示到底發生了什麼

|-- 域名解析(獲得IP地址)
|-- 向WEB伺服器傳送HTTP請求
|-- 伺服器處理請求
|-- 伺服器返回HTTP響應
|-- 瀏覽器顯示頁面資訊


  • 輸入地址
    當輸入url地址後,瀏覽器已經在智慧匹配地址了,會從歷史記錄、書籤或快取中查詢,如果找到了,會從快取中調出頁面顯示出來,在你還沒有按“enter”之前

  • 瀏覽器查詢域名的IP地址
    瀏覽器查詢域名的IP地址按照以下幾個步驟進行(這是你輸入url,按了enter之後):
首先會在瀏覽器的快取中查詢是否有該域名對應的IP地址,如果有,則直接返回該IP地址;如果沒有,則查詢本地硬碟上的`hosts`檔案中是否有,如果有,則返回對應的IP地址;如果沒有,則查詢`路由器快取`中是否有對應的IP地址,如果有,則返回;
如果在瀏覽器快取中、hosts檔案中、路由器快取中都沒有找到ip地址,則瀏覽器會發起一個DNS請求到`本地DNS伺服器`,本地DNS伺服器一般是由你的網路接入伺服器商提供,如:電信、移動;
DNS請求到達本地DNS伺服器後,本地DNS伺服器會先在自己的`快取中`查詢,如果找到了就返回找到的IP,這個過程是以遞迴的方式進行的;如果沒有,則本地DNS伺服器繼續向`根DNS伺服器`發起請求;
`根DNS伺服器`並沒有記錄域名與IP的對應關係,而是告訴本地DNS伺服器,可以到哪個`頂級域名伺服器`上查詢,並給出該頂級域名伺服器的地址,此過程是以`迭代的方式`進行的;
本地DNS繼續向頂級域名伺服器發出查詢請求,頂級域名伺服器接收到請求後,會告訴本地DNS到`許可權域名伺服器`上去查詢;
本地DNS繼續向許可權域名伺服器發出查詢請求,許可權域名伺服器查詢到域名對應的IP後,將IP地址返回給本地DNS,本地DNS接收後將其`儲存到自己的快取中`,以備下次查詢,提高查詢速度;至此,一個IP地址的查詢就此結束;

DNS解析是一個遞迴查詢的過程:

注意:DNS域名解析是以遞迴的方式進行的

知識拓展

  1. 什麼是DNS
    DNS(domain name system,域名系統):因特網上域名和IP地址相互對映的分散式資料庫;簡單理解就是域名與IP地址的對照表,因為域名(如:www.google.com)對於我們而言,更便於記憶,但是機器卻不擅長這種表達方式,因此需要將域名轉換為IP地址,以便於機器識別, 這便有了DNS。
  2. 根域名伺服器
    根伺服器是架設網際網路的必須設施,管理網際網路的主目錄,全球共有13套根域名伺服器
  3. 遞迴查詢
    客戶端主機向本地域名伺服器的查詢是遞迴查詢;所謂遞迴查詢:客戶端主機查詢的域名地址無法在本地域名伺服器中找到,因此本地域名伺服器就以DNS客戶端的身份向其他根域名伺服器發起請求,進行查詢,而不是讓客戶端主機去一直查詢;
    遞迴查詢的結果要麼是返回的IP地址,要麼是報錯,表示無法查詢到地址;
  4. 迭代查詢
    本地域名伺服器向根伺服器、頂級域名伺服器和主機域名伺服器發起的查詢請求就是迭代的過程,如:本地域名伺服器向根伺服器發起查詢請求,根伺服器中會告訴本地域名伺服器:”我這裡沒有你要找的內容,你去頂級域名伺服器上找吧“,並將頂級域名伺服器的地址返回給本地域名伺服器,本地域名伺服器接收到後,繼續向頂級域名伺服器傳送請求;頂級域名伺服器要麼返回ip地址,要麼告訴本地域名伺服器下一步要向哪個許可權域名伺服器傳送請求,直到找到ip地址或找不到ip返回報錯資訊,然後資訊返回給客戶端主機;
  5. 下圖給出了這兩種查詢的差別
    遞迴過程:主機→本地DNS伺服器→其他DNS伺服器(如:我要找一個蘋果吃,找到了A,問A有沒有,A說我幫你去找B,B可能有,果真B有,然後B將蘋果給了A,A再將蘋果給我,這就是遞迴)
    迭代過程:本地DNS伺服器→根伺服器,本地DNS伺服器→頂級域名伺服器,本地DNS伺服器→許可權域名伺服器;(如:我要找一個蘋果,找到了A,A說我也沒有,B可能有,你去找B吧;我又找B,B說我也沒有,你去找C吧,我又去找C,終於找到了蘋果,這就是迭代的過程)

  • 瀏覽器向WEB伺服器傳送Http請求