HTTP請求的整個過程
1. HTTP簡介
HTTPweb瀏覽器和服務器之類的交互過程必須遵守的協議.他是tcp/ip中的一個應用協議。用來協議數據交換過程和數據本身的格式,主要的有HTTP/1.0和HTTP1.1.
HTTP/1.0和HTTP/1.1都把TCP作為底層的傳輸協議。
HTTP客戶首先發起建立與服務器TCP連接。一旦建立連接,瀏覽器進程和服務器進程就可以通過各自的套接字來訪問TCP。如前所述,客戶端套接字是客戶進程和TCP連接之間的“門”,服務器端套接字是服務器進程和同一TCP連接之間的 “門”。客戶往自己的套接字發送HTTP請求消息,也從自己的套接字接收HTTP響應消息。類似地,服務器從自己的套接字接收HTTP請求消息,也往自己 的套接字發送HTTP響應消息。客戶或服務器一旦把某個消息送入各自的套接字,這個消息就完全落入TCP的控制之中。
TCP給HTTP提供一個可靠的數據傳輸服務;這意味著由客戶發出的每個HTTP請求消息最終將無損地到達服務器,由服務器發出的每個HTTP響應消息最終也將無損地到達客戶。我們可從中看到分層網絡體系結構的一個明顯優勢——HTTP不必擔心數據會丟失,也無需關心TCP如何從數據的丟失和錯序中恢復出來的細節。這些是TCP和協議棧中更低協議層的任務。
TCP還使用一個擁塞控制機制。該機制迫使每個新的TCP連接一開始以相對緩慢的速率傳輸數據,然而只要網絡不擁塞,每個連接可以迅速上升到相對較高的速率。這個慢速傳輸的初始階段稱為緩啟動(slow start)。
需要注意的是,在向客戶發送所請求文件的同時,服務器并沒有存儲關于該客戶的任何狀態信息。即便某個客戶在幾秒鐘內再次請求同一個對象,服務器也不會響應說:自己剛剛給它發送了這個對象。相反,服務器重新發送這個對象,因為它已經徹底忘記早先做過什么。既然HTTP服務器不維護客戶的狀態信息,我們于是 說HTTP是一個無狀態的協議(stateless protocol)。
2. 一個完整的HTTP請求過程
HTTP事務=請求命令+響應結果
一次完整的請求過程:
(1)域名解析
(2)建立TCP連接,三次握手
(3)Web瀏覽器向Web服務端發送HTTP請求報文
(4)服務器響應HTTP請求
(5)瀏覽器解析HTML代碼,并請求HTML代碼中的資源(JS,CSS,圖片)(這是自動向服務器請求下載的)
(6)瀏覽器對頁面進行渲染呈現給客戶
(7)斷開TCP連接