HTTP的請求過程

小樓昨夜又西風發表於2019-03-12

一、簡單描述一次Http的請求過程

域名解析 –> 發起TCP的3次握手 –> 建立TCP連線後發起http請求 –> 伺服器響應http請求,瀏覽器得到html程式碼 –> 瀏覽器解析html程式碼,並請求html程式碼中的資源(如js、css、圖片等) –> 瀏覽器對頁面進行渲染呈現給使用者
參考連結:前端經典面試題: 從輸入URL到頁面載入發生了什麼?https://segmentfault.com/a/1190000006879700

二、從域名的解析開始

在這裡插入圖片描述

三、TCP的三次握手

拿到域名對應的IP地址之後,User-Agent(一般是指瀏覽器)會以一個隨機埠(1024 < 埠 < 65535)向伺服器的WEB程式(常用的有httpd,nginx等)80埠發起TCP的連線請求。這個連線請求(原始的http請求經過TCP/IP4層模型的層層封包)到達伺服器端後(這中間通過各種路由裝置,區域網內除外),進入到網路卡,然後是進入到核心的TCP/IP協議棧(用於識別該連線請求,解封包,一層一層的剝開),還有可能要經過Netfilter防火牆(屬於核心的模組)的過濾,最終到達WEB程式,最終建立了TCP/IP的連線。
如下圖:
在這裡插入圖片描述
在這裡插入圖片描述
2個計算機通訊是靠協議(目前流行的TCP/IP協議)來實現,如果2個計算機使用的協議不一樣,那是不能進行通訊的,所以這個3次握手就相當於試探一下對方是否遵循TCP/IP協議,協商完成後就可以進行通訊了,當然這樣理解不是那麼準確。

四、發起Http請求

在這裡插入圖片描述
小疑問: 上述幾種請求方式的區別和特性還沒有搞清楚呢?
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

五、Http響應報文

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

相關文章