謝邀~
我們打開瀏覽器,在地址欄輸入\www.wukong.com\,幾秒后瀏覽器打開悟空問答的頁面,那么這幾秒鐘內發生了哪些事情,我就帶大家一起看看完整的流程:
解析URL
瀏覽器首先會對輸入的URL進行驗證,如果不合法的時候,那么會把輸入的文字傳給默認的搜索引擎,比如你只在地址欄輸入“悟空問答”幾個字。
如果URL通過驗證,那么可以解析得到協議(http或者https)、域名(wukong)、資源(首頁)等信息。
DNS查詢
瀏覽器會先檢查域名信息是否在緩存中。
再檢查域名是否在本地的Hosts文件中。
如果還不在,那么瀏覽器會向DNS服務器發送一個查詢請求,獲得目標服務器的IP地址。
TCP封包及傳輸
這時候瀏覽器獲得了目標服務器的IP(DNS返回)、端口(URL中包含,沒有就使用默認),瀏覽器會調用庫函數socket,生成一個TCP流套接字,也就是完成了TCP的封包。
TCP封包完成之后,就可以傳輸了,在完成“你瞅啥”,“瞅你咋地”,“來,過來嘮嘮”一系列操作之后,瀏覽器和服務器就完成了TCP的三次握手,建立了連接,后面就可以請求服務器資源了。
服務器接收請求并相應
HTTP有很多請求方法,比如:GET/POST/PUT/DELETE等等,我們瀏覽器輸入URL這種,是GET方法。
服務器接收到GET請求,服務器根據請求信息,獲得相應的相應內容。例如我們輸入的是:\www.wukong.com\,那么意味著訪問首頁文件。
瀏覽器解析并渲染
瀏覽器從服務器拿到了想要訪問的資源,大多數時候,這個資源就是HTML頁面,當然也可能是一個其他類型的文件。
瀏覽器先對HTML文檔進行解析,生成解析樹(以DOM元素為節點的樹)。
加載頁面的外部資源,比如JS、CSS、圖片。
遍歷DOM樹,并計算每個節點的樣式,最終完成渲染,變成我們看到的頁面。
這次請求響應之后,會斷開連接,就這樣,完成了一次HTTP的請求。