「瀏覽器輸入url後回車後,會發生什麼?」,嗯嗯,很經典的問題
概括性大致流程是這樣的:
(1)查詢url對應的ip位址(dns網域名稱解析)
(2)建立tcp連線,連線伺服器
(3)瀏覽器發起請求
(4)伺服器響應瀏覽器請求
(5)瀏覽器解析響應,渲染頁面
(6)關閉tcp連線
下面對具體流程以及過程優化做表述:
(1)瀏覽器搜尋瀏覽器的dns快取,看自身的快取中是否有該url對應的ip位址條目,而且沒有過期,如果有且未過期則解析到此結束;
(2)瀏覽器快取中沒有,瀏覽器查詢系統快取中是否有該url對應的dns解析結果。作業系統中也會有乙個網域名稱解析的過程,在windows中可以通過hosts檔案設定,linux中配置檔案是/etc/named.conf,檢視檔案裡是否有該網域名稱對應的ip位址,有即解析結束(hosts檔案主要定義ip位址和主機名的對映關係,可以使用文字檔案開啟,當使用者在瀏覽器中輸入乙個需要登入的**,系統會自動從hosts檔案中查詢對應的ip位址,找到,瀏覽器會立即開啟對應網頁);
(3)未命中,瀏覽器會向ldns發起呼叫,ldns查詢自身快取,找到自身條目且未過期,解析結束(ldns效能很好,大約80%的網域名稱解析到這裡就 結束了);
(4)如果ldns仍未命中,直接到root server網域名稱伺服器請求解析;
(5)根網域名稱伺服器返回給ldns乙個所查詢域的主網域名稱伺服器gtld server位址;(gtld是國際頂級網域名稱伺服器,全球只有13臺左右)
(6)ldns再向gtld server傳送請求;
(7)接受請求的gtld server查詢並返回該網域名稱對應的name server的位址;(name server就是**註冊的網域名稱伺服器)
(8)name server查詢儲存的網域名稱和ip的對映關係表,查詢後返回ip位址給ldns;
(9)ldns儲存該網域名稱和ip的對應關係後,將解析結果返回給使用者,網域名稱解析結束。
1.減少dns查詢次數
(1)使用快取;
dns過程存在多級快取,其中包括:瀏覽器快取、作業系統快取、本地網域名稱伺服器快取、根網域名稱伺服器快取、主網域名稱伺服器快取
伺服器可以表明記錄可以被快取多久,查詢返回的dns記錄包含了存活時間(ttl),該值告訴客戶端可以對該記錄快取多久。
(瀏覽器對快取dns記錄數量也是有限制的,如果使用者在短時間內訪問了大量不同網域名稱的**,導致較早的dns記錄被丟棄,必須重新查詢該網域名稱;但是即便瀏覽器丟棄了dns記錄,作業系統快取中可能仍然儲存著該記錄,此時無需通過網路傳送查詢,避免明顯延遲。)
(2)使用keep-alive特性來減少dns查詢頻率;
http協議中的keep-alive特性可以同時覆蓋ttl和瀏覽器的時間限制。只要客戶端瀏覽器和伺服器保持tcp連線開啟狀態,此時就不需要進行dns查詢。
(3)使用較少的網域名稱(伺服器主機)來減少dns查詢數量;
當客戶端dns快取(瀏覽器和作業系統)為空時,dns查詢數量與要載入的web頁面中唯一主機名的數量相同,包括頁面url、指令碼、樣式表、、flash物件的主機名。減少主機名的數量就可以減少dns查詢的數量。
2.dns預解析
可以通過用meta資訊來告知瀏覽器,當前頁面要做dns預解析
可以使用link標籤強制對dns進行預解析(href屬性就是需要dns預解析的host)
1.詳細介紹五層協議是如何建立tcp連線的
(1)應用層:發起http請求(用什麼協議就發起對應協議去進行請求);
(2)傳輸層:傳說中的tcp三次握手;
(4)資料鏈路層:(加入frame頭)傳輸資料
(5)物理層:物理傳輸bit
2.建立連線優化(預連線)
已知每次請求資源都要進行tcp連線,三次握手操作,表示連線成功。連線成功後,伺服器才會向客戶端傳送資料,這是很浪費時間的。可以在請求資源之間進行預連線,真正請求的時候,就已經連線成功了,可以直接傳送資料了。
瀏覽器輸入URL回車後
當我們想瀏覽某乙個網頁時,一般都會輸入對應的url,這個其實就是請求對應資源的過程。那麼這個過程實質上經歷了什麼呢?查詢ip 客戶端根據網域名稱查詢對應的ip 相互通訊 客戶端與資源伺服器通訊 斷開連線 客戶端與資源伺服器斷開連線 1.查詢ip 系統將網域名稱傳送至 ldns 本地網域名稱伺服器 查...
瀏覽器輸入URL後後的過程
還有一篇寫的很好 1 輸入url按下回車後,首先檢查url是否在快取中,並比較快取是否過期 2 dns解析url對應的ip 3 根據ip建立tcp連線 三次握手 4 連線建立後,http就可以傳送請求了 5 伺服器處理請求,瀏覽器接收http響應 6 渲染頁面,構建dom樹 7 關閉tcp連線 四次...
輸入url後執行的全過程
整個流程如下 網域名稱解析 為了將訊息從你的pc上傳到伺服器 上.需要用到1p協議 arp協議和0spf協議 發起tcp的3次握手 建立tcp連線後發起http請求 伺服器響應htp請求 瀏覽器解析htm 並請求html 中的資源 如js css 等 斷開tcp連線 瀏覽器對頁面進行渲染呈現給使用者...