http目前協議版本是1.1,http是一種無狀態的協議,無狀態是指web瀏覽器與web伺服器之間,不需要建立持久的鏈結,這意味著當乙個客戶端向伺服器端發出請求,然後web伺服器返回響應(response),鏈結就被關閉了,在伺服器端不保留鏈結的有關資訊。
1.建立tcp鏈結
在http工作前,首先瀏覽器與伺服器建立鏈結,該鏈結是通過tcp完成的,該協議與ip協議共同構建internet,即著名的tcp/ip協議方案。一般tcp連線埠號是80。
(1).瀏覽器自身搜dns快取
(2).搜尋作業系統的dns快取
(3).讀取本地host檔案
瀏覽器發起乙個dns系統呼叫,瀏覽器獲得網域名稱對應的ip位址後,發起乙個http三次握手
tcp/ip鏈結建立起來後,伺服器端接受到請求,根據路徑引數,經過後端的處理後,把處理後的結果返回給瀏覽器,瀏覽器拿到html頁面**,解析和渲染頁面,裡面的js、css資源都需要經過上面的步驟。
2.web瀏覽器向伺服器傳送請求命令
例如:grt/sample/hello.jsp http/1.1
3.web瀏覽器傳送請求頭資訊
瀏覽器傳送請求命令後,還要以頭資訊的形式向web伺服器傳送一些別的資訊,之後瀏覽器傳送一空白行通知伺服器,它已經結束了該頭資訊的傳送。
4.web伺服器應答
應答的第一部分是協議的版本號和應答狀態碼
如:http/1.1 200ok
5.伺服器傳送應答頭資訊(關於伺服器自己的資料)
6.伺服器向瀏覽器傳送資料
伺服器傳送頭資訊後,它會傳送乙個空白行來表示頭資訊傳送到此為止,接著以content-type應答頭資訊所描述的格式傳送使用者所請求的實際資料。
7.關閉tcp連線
如果瀏覽器或伺服器在其頭資訊加入了這行**,connection:keep-alive,tcp連線在傳送後仍然保持開啟狀態
1.請求方法url 協議/版本 get/sample.jsp http/1.1
2.請求頭(包含客戶端環境、瀏覽器所用語言、正文長度等)
3.請求正文(包含客戶提交的查詢字串資訊) username=qwe&password=123
1.協議狀態版本 http/1.1 200ok
2.響應頭(伺服器型別、日期時間、內容型別、長度等) server:apache tomcat/5.0.12 content-type:text/html
3.響應正文
響應頭和正文之間也必須用空行分割
一次完整的 HTTP 請求過程
一次完整的http請求過程從tcp三次握手建立連線成功後開始,客戶端按照指定的格式開始向服務端傳送http請求,服務端接收請求後,解析http請求,處理完業務邏輯,最後返回乙個http的響應給客戶端,http的響應內容同樣有標準的格式。無論是什麼客戶端或者是什麼服務端,大家只要按照http的協議標準...
一次完整的HTTP請求過程
一次完整的http請求過程從tcp三次握手建立連線成功後開始,客戶端按照指定的格式開始向服務端傳送http請求,服務端接收請求後,解析http請求,處理完業務邏輯,最後返回乙個http的響應給客戶端,http的響應內容同樣有標準的格式。無論是什麼客戶端或者是什麼服務端,大家只要按照http的協議標準...
一次完整的 HTTP 請求過程
一次完整的http請求過程從tcp三次握手建立連線成功後開始,客戶端按照指定的格式開始向服務端傳送http請求,服務端接收請求後,解析http請求,處理完業務邏輯,最後返回乙個http的響應給客戶端,http的響應內容同樣有標準的格式。無論是什麼客戶端或者是什麼服務端,大家只要按照http的協議標準...