經典面試題-從瀏覽器地址欄輸入網址,到網頁徹底打開,中間過程詳解


前言:前天看到曹大『caoz的夢囈』在帥張『stormzhang』的星球說到一個經典面試題:從瀏覽器地址欄輸入網址,到網頁徹底打開,中間經歷了什么。

在結合曹大給的分析和自己查閱相關資料。遂整理出了這篇詳細的文章供大家參考。

背景分析:
這題考查的是面試者對整個上網概念以及背后流程的了解。而俗稱的上網大致分為三個方面:
1:客戶端(也稱用戶端,較常用的就是萬維網使用的網頁瀏覽器)。
2:網絡傳輸層(兩台計算機經過計算機網絡進行的數據通信)。
3:服務端(為客戶端提供服務,提供資源,保存客戶端數據的一種服務程序)。

一:URL解析
名詞解釋:
URL :(Uniform Resource Locator)統一資源定位符,用於互聯網上不同資源的標示。

1:瀏覽器本地解析URL(一般是做格式化檢查以及確認用http還是https協議,默認是http協議)。
2:瀏覽器本地緩存查找url對應ip。
3:本地host文件查找對應ip。
4:本地路由器dns查看對應ip。

若上面都查不到,則要請求到dns服務器查找ip。
1::服務商dns檢查緩存是否存在對應ip。
2:若不存在緩存或者緩存過期 則到根域名服務商上查找對應ip。
3:根域名服務商也是先檢查緩存,若無,則檢查域名為哪個dns服務商負責解析。然后請求轉發。獲得域名對應ip。

最后:ip返回到本地服務商的dns,本地服務商dns更新緩存。客戶端成功拿到ip。(至於為啥一定要拿到ip,因為我們的tcp/ip協議很任性的只能識別ip)

 二:網絡傳輸通信
1:客戶端拿到ip地址后,想要進行通信,先要和對方取得聯系。看對方在不在,這個通常是由三次握手來實現。

三次握手補充:客戶端和服務器一共發送三個包,同步連接雙方的序列號和確認號並交換 TCP) 建立tcp連接。與目標服務器建立短連接。
通俗的說就是這樣:

客戶端:在家么,想去你家看看你。
服務器:在呀,歡迎來玩啊。
客戶端:馬上到。

2:三次握手完成后,tcp和服務器之間就建立了一個可靠地虛擬通道。瀏覽器知道了這個消息后。就將http請求消息打包,通過tcp協議發送給了服務端。

3:服務端收到請求報文后,處理報文信息,處理完成后將數據打包返回給客戶端啊。
4:通信完成后,通過四次揮手,拆除tcp連接。客戶端或服務器均可主動發起揮手動作。
5:最后,客戶端拿到返回數據。

 三:頁面渲染
1:瀏覽器會將返回的HTML通過深度遍歷解析成一個DOM樹。
2:將CSS解析成 CSS Rule Tree 。
3:根據DOM樹和CSSOM來構造 Rendering Tree。

補充(CSSOM是一個建立在web頁面上的 CSS 樣式的映射,它和DOM類似,但是只針對CSS而不是HTML)

4:最后通過Rendering Tree,瀏覽器就可以知道每個節點和各節點css的關系,再算出每個節點在屏幕的位置就可以繪制出每個節點了。
上述渲染過程為從上而下,逐步完成。即瀏覽器繪制了一部分就會顯示一部分出來,再繼續計算下面的部分。


結尾:整個過程詳細描述起來還有很多的知識點沒有說清楚,拓展開來還有很多的分布式,數據庫,負載均衡,輪詢等可以聊。我作為一個技術渣,通過曹大的這次分析,結合自己的思考輸出了這篇文章。寫文章的目的也只是為了讓自己知識點記憶更深刻。最后,感謝我的偶像曹大和帥張。

祝所有技術人都能成長。共勉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM