瞭解一下「從URL到頁面顯示的過程」也無妨

應該多數人在面試的過程當中,都會被面試官問過,「從瀏覽器輸入一個URL到顯示頁面內容,這個過程都經歷了什麼?」面試

那麼你們回答得也應該是各類各樣,各有所長吧。瀏覽器

那麼這個過程到底都經歷了些什麼東西,才把頁面得內容拿回來呢?

這個過程會經歷TCP/IP的各個層以及各個層中的針對性的處理。服務器

TCP/IP

  • 應用層網絡

    • DNS
    • HTTP
  • 傳輸層spa

    • TCP
  • 網絡層blog

    • IP
  • 鏈路層事務

    • 網絡

那麼應用層,傳輸層,網絡層,鏈路層,是什麼東西呢?

由於TCP/IP協議是經過分層管理的,每一個層有每一個層的事務。資源

應用層

應用層決定了向用戶提供應該服務時通訊的活動。rem

傳輸層

傳輸層對上層應用層,提供處於網絡鏈接中的兩臺計算機之間的數據傳輸。域名

網絡層

網絡層用來處理在網絡上流動的數據包。

鏈路層

用來處理鏈接網絡的硬件部分。(如光纖)

那麼各層下的DNS,HTTP,TCP,IP又作些什麼?

DNS

DNS位於應用層,DNS協議提供經過域名查找IP地址,或逆向從IP地址反查域名的服務。

HTTP

HTTP協議也位於應用層,HTTP協議負責各類報文(是報文不是豹紋)的處理。

TCP

TCP協議位於傳輸層,TCP協議爲了傳輸方便,會將報文切成報文片,並打上標記;並且爲了傳輸的可靠性,TCP協議還會進行「三次握手」的驗證行爲。

IP

IP協議位於網絡層,IP協議會經過ARP協議經過IP地址去查詢目標服務器的MAC地址,也可經過MAC地址反查IP地址。

什麼?他喵的,你不知道報文是什麼?還不知三次握手是什麼?

報文

報文類型

  • 請求報文
  • 響應報文

報文組成

  • 報文首部
  • 空行
  • 報文主體

報文首部組成

  • 請求行/響應行
  • 請求首部/響應首部
  • 通用首部
  • 實體首部

請求行

  • 請求方法
  • 請求資源
  • HTTP協議版本

響應行

  • HTTP協議版本
  • 狀態碼
  • 緣由短語

這部分這裏就不說太具體了,要想了解HTTP更多的內容,掘金有不少大佬寫的好文章,能夠自行查閱,這裏本渣渣就不班門弄斧了。

三次握手

首先客戶端會先向服務端發一個SYN的數據包,告訴服務端,「老子要鏈接你」;服務端接收到後,會給客戶端發送一個SYN/ACK的數據包,告訴客戶端,「爸爸知道了,連吧」;最後,客戶端收到後會再給服務端發一個ACK的數據包,告訴服務端,「好的,兒子,那我連了」。

--劇終--

逼逼了那麼多,如今把以上的知識點串聯起來就能夠回答一開始的那個問題了。

結案

當在瀏覽器輸入一個URL的時候,會先進入,TCP/IP協議的應用層,在應用層會先經歷DNS服務對域名的解析查找對應的IP地址,找到的話就繼續,找不到就完事了。找到後,應用層先將IP地址和HTTP報文轉給運輸層;在運輸層,TCP協議會將報文切成報文段,並打上標記,且爲了保證可靠的將數據送達給目標服務器,TCP還會進行一次「三次握手」的驗證行爲;接着運輸層,將處理權轉給網絡層,在網絡層(IP協議)會經過ARP協議結合IP地址去查找目標服務器的MAC地址,並增長該地址後轉發給鏈路層;這樣一來,發往網絡的通訊請求就準備齊全了。接收端的服務器在鏈路層接收到數據,按序往上發送,一直到應用層。當傳輸到應用層,才能算真正接收到由客戶端發送過來的HTTP請求。最後,當服務端查找到客戶端須要的內容以後,按以上客戶端到服務端的流程,再走一遍,不過此次開始的服務端的應用層而已,當再次回到客戶端的應用層,瀏覽器就能看到頁面內容了。(再細一點的話,還會經歷瀏覽器的重繪,迴流等行爲)

相關文章
相關標籤/搜索