HTTP的請求過程
一、簡單描述一次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響應報文
相關文章
- 完整的一次 HTTP 請求響應過程(二)HTTP
- 完整的一次 HTTP 請求響應過程(一)HTTP
- Web請求過程Web
- 走進JavaWeb技術世界5:初探Tomcat的HTTP請求過程JavaWebTomcatHTTP
- http請求到達後端的執行過程——閘道器篇HTTP後端
- SQL Server儲存過程模擬HTTP請求POST和GET協議SQLServer儲存過程HTTP協議
- Laravel 列印請求過程中的所有 SQLLaravelSQL
- 【PHP】一次請求過程的解析PHP
- http請求概述HTTP
- Jsoup http請求JSHTTP
- go http請求GoHTTP
- golang 的 http 請求池GolangHTTP
- 透過http請求啟動jenkins任務HTTPJenkins
- 【Tomcat】Tomat 處理請求的過程(圖解)Tomcat圖解
- fastHttp服務端處理請求的過程ASTHTTP服務端
- Angular 如何通過 HTTP Interceptor 實現 HTTP 請求的超時監控AngularHTTP
- 合併HTTP請求vs並行HTTP請求,到底誰更快?HTTP並行
- 合併HTTP請求 vs 並行HTTP請求,到底誰更快?HTTP並行
- HTTP的請求與響應HTTP
- golang常用的http請求操作GolangHTTP
- HTTP請求報文HTTP
- Cookie 與 HTTP請求CookieHTTP
- python做http請求PythonHTTP
- 【HTTP】HTTP請求體中的四種格式HTTP
- asp.Net請求過程及管道中的事件ASP.NET事件
- 【PHP-FPM】一次請求過程的解析PHP
- nginx 處理客戶端請求的完整過程Nginx客戶端
- 【進階篇】一文搞清楚網頁發起 HTTP 請求呼叫的完整過程網頁HTTP
- Python 使用socket模擬http請求,從阻塞到協程PythonHTTP
- 淺嘗flutter中的http請求FlutterHTTP
- 處理 HTTP 請求的註解HTTP
- 型別安全的 Go HTTP 請求型別GoHTTP
- 聊聊 HTTP 常見的請求方式HTTP
- Http請求資料格式HTTP
- HTTP 請求與響應HTTP
- Http請求與響應HTTP
- Http請求相關(轉)HTTP
- go搞笑http請求庫GoHTTP