瀏覽器工作過程

2021-10-04 14:33:21 字數 2344 閱讀 9112

下面針對每個過程進行簡述:

dns解析:

當我們輸入乙個** 實際上是要將其翻譯成伺服器ip位址的,而這種翻譯就是需要dns解析,解析過程為:首先在本地網域名稱伺服器上查詢此ip位址,如果沒有找到的話 本地網域名稱伺服器會向根網域名稱伺服器傳送乙個請求,如果根網域名稱伺服器也不存在,那麼本地網域名稱伺服器會再向com頂級網域名稱伺服器傳送請求。直到最後 本地網域名稱伺服器得到此**的ip位址,並將其快取到本地,攻下一次使用。總結一下,所有**真正的解析過程為: . -> .com -> google.com. -> www.google.com.。注意到了最前面的(.),這個就是本地的網域名稱伺服器。因此本地網域名稱伺服器是從頂級網域名稱伺服器開始查詢,然後逐級具體化直到www.google.com.

在dns請求的過程中 同時存在tcp和udp請求,為什麼?

第一種是dns快取。dns存在多級快取,從離瀏覽器的距離排序 可以有以下幾種:瀏覽器快取,系統快取,路由器快取,ips(intrusion prevention system)伺服器快取,根網域名稱伺服器快取,頂級網域名稱伺服器快取,主網域名稱伺服器快取。

第二種是dns負載均衡 load balancing:由於現代大公司需要成千上萬臺伺服器來滿足人們的需求 因此每次使用者鍵入同乙個** dns返回的ip位址不同。但是在使用者眼中 它只需要其請求被處理就可以,至於最終是哪台伺服器響應了他的請求並不重要。因此dns會從伺服器池中返回乙個合適的機器ip返回給使用者(如何選擇?選擇負載量底的,或者用round robin法,或者hash一下,或者選擇離使用者地理位置近的)。這個過程叫dns負載均衡 或者叫重定向。之前了解的cdn(content dilivery network)就是利用這種技術。

tcp連線

http協議利用tcp作為其傳輸層協議,因此tcp出現瓶頸,http也會受到影響,因此tcp優化也很重要。

而至於tcp利用三次握手進行連線 有專門的文章 在此不加贅述。

這裡插乙個:http協議和https協議的區別:

我們知道 http報文是包裹在tcp報文中進行傳送的,伺服器段收到tcp報文的時候會解包提取出http報文,由於http報文是明文 因此有風險,所以在進入tcp報文之前對http做一次加密就可以解決這個問題了。用什麼做加密呢?ssl或tls。因此可以說是講http變成https+ssl/tls.

https過程:https在傳輸資料之前需要客戶端與伺服器進行乙個握手(tls/ssl握手),在握手過程中將確立雙方加密傳輸資料的密碼資訊。tls/ssl使用了非對稱加密,對稱加密以及hash等。https相比於http,雖然提供了安全保證,但是勢必會帶來一些時間上的損耗,如握手和加密等過程,是否使用https需要根據具體情況在安全和效能方面做出權衡。(refer:

http請求

簡單的講:傳送http請求的過程就是構建http請求報文並通過tcp協議中傳送到伺服器指定埠(http協議80/8080, https協議443)。http請求報文是由三部分組成: 請求行, 請求報頭和請求正文。下面說一下這三部分的格式:

伺服器處理請求並返回http報文

web server會對tcp連線進行處理,對http協議進行解析,並按照報文格式進一步封裝成http request物件 供上層使用(?什麼上層)

http響應報文也由三部分組成:狀態碼,響應報頭和響應報文

響應報頭:常見的響應報頭欄位有: server, connection…。

瀏覽器解析渲染頁面

總的來說 是邊解析邊渲染 大致分為下面三步:

首先瀏覽器解析html檔案構建dom樹,

然後解析css檔案構建渲染樹,

***************===**

web optimization

巨集觀的想一下,我們為什麼要了解一次客戶端到伺服器的完整的請求過程?無非是為了web優化,優化什麼呢?無非是將資訊快速並友好的展示給使用者並能夠與使用者進行互動。

基於之前提過的原理 優化方式可以從以下來著手:

如何盡快的載入資源?答案就是能不從網路中載入的資源就不從網路中載入,當我們合理使用快取,將資源放在瀏覽器端,這是最快的方式。

如果資源必須從網路中載入呢? 則要考慮縮短連線時間,即dns優化部分;減少響應內容大小,即對內容進行壓縮。另一方面,如果載入的資源數比較少的話,也可以快速的響應使用者。

當資源到達瀏覽器之後什麼會限制效能呢?,瀏覽器開始進行解析渲染,瀏覽器中最耗時的部分就是reflow,所以圍繞這一部分就是考慮如何減少reflow的次數。

編譯器工作過程

原始碼要執行,必須先轉成二進位制的機器碼。這是編譯器的任務。比如,下面這段原始碼 假定檔名叫做test.c 要先用編譯器處理一下,才能執行。這些命令到底在幹什麼?大多數的書籍和資料,都語焉不詳,只說這樣就可以編譯了,沒有進一步的解釋。本文將介紹編譯器的工作過程,也就是上面這三個命令各自的任務。我主要...

DHCP工作過程

dhcp服務的工作過程 如果在區域網中部署了dhcp伺服器,並且客戶端設定為自動獲得ip位址。這樣當dhcp客戶端第一次登入網路的時候,也就是客戶端發現本機上沒有任何ip資料設定,它會向網路發出乙個dhcp discover封包。因為客戶端還不知道自己屬於哪乙個網路,所以封包的 位址會為 0.0.0...

FTP 工作過程

1 ftp伺服器執行ftpd守護程序,等待使用者的ftp請求。2 使用者執行ftp命令,請求ftp伺服器為其服務。例 ftp 202.119.2.197 3 ftpd守護程序收到使用者的ftp請求後,派生出子程序ftp與使用者程序ftp互動,建立檔案傳輸控制連線,使用tcp埠21。4 使用者輸入ft...