1.域名解析 --> 發起TCP的3次握手 --> 建立TCP連接后發起http請求 --> 服務器響應http請求,瀏覽器得到html代碼 --> 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進行渲染呈現給用戶
(1)瀏覽器會緩存DNS一段時間,一般2-30分鍾不等。如果有緩存,直接返回IP,否則下一步。
(2)緩存中無法找到IP,瀏覽器會進行一個系統調用,查詢hosts文件。如果找到,直接返回IP,否則下一步。(在計算機本地目錄etc下有一個hosts文件,hosts文件中保存有域名與IP的對應解析,通常也可以修改hosts。)
(3)進行了(1)(2)本地查詢無果,只能借助於網絡。路由器一般都會有自己的DNS緩存,ISP服務商DNS緩存,這時一般都能夠得到相應的IP。如果還是無果,只能借助於DNS遞歸解析了。
(4)這時,ISP的DNS服務器就會開始從根域名服務器開始遞歸搜索,從.com頂級域名服務器,到baidu的域名服務器。
瀏覽器向主機發起一個HTTP-GET方法報文請求。請求中包含訪問的URL,也就是http://www.baidu.com/ ,還有User-Agent用戶瀏覽器操作系統信息,編碼等。值得一提的是Accep-Encoding和Cookies項。Accept-Encoding一般采用gzip,壓縮之后傳輸html文件。Cookies如果是首次訪問,會提示服務器建立用戶緩存信息,如果不是,可以利用Cookies對應鍵值,找到相應緩存,緩存里面存放着用戶名,密碼和一些用戶設置項。
返回狀態碼200 OK,表示服務器可以相應請求,返回報文,由於在報頭中Content-type為“text/html”,瀏覽器以HTML形式呈現,而不是下載文件。