http 是超文字傳輸協議,也就是hypertext transfer protocol。
uri(統一資源識別符號)
url(uniform resource locator,統一資源定位符)
無狀態:伺服器不維護任何有關客戶端過去所發請求的資訊
主要使用 ssl(secure sockets layer,安全套接 層)和 tls(transport layer security,傳輸層安全)協議把通訊內容 加 密後經網路隧道傳輸
從快取的角度,get 請求會被瀏覽器主動快取下來,留下歷史記錄,而 post 預設不會。
從編碼的角度,get 只能進行 url 編碼,只能接收 ascii 字元(encodeuri()編碼),而 post 沒有限制。
從tcp的角度,get 請求會把請求報文一次性發出去,而 post 會分為兩個 tcp 資料報,
首先發 header 部分,如果伺服器響應 100(continue), 然後發 body 部分。
http 報文本身是由多行(用 cr+lf 作換行符)資料構成的字串文字。
通用首部字段
請求首部字段
響應首部字段
實體首部字段
逐跳首部(hop-by-hop header)
severhello:伺服器收到客戶端請求後,向客戶端發出響應
客戶端回應
客戶端收到伺服器的回應之後,首先通過瀏覽器或者作業系統中的 ca 公鑰,確認伺服器的數字證書的真實性。
如果證書沒有問題,客戶端會從數字證書中取出伺服器的公鑰,然後使用它加密報文,向伺服器傳送響應
伺服器的最後回應:伺服器收到客戶端的第三個隨機數(pre-master key)之後,通過協商的加密演算法,計算出本次通訊的「會話秘鑰」
tls1.3 改進為只需3次握手
主要缺點:每個 tcp 連線只能傳送乙個請求
流水線處理
快取處理
頻寬優化及網路連線的使用
host 頭處理
http1.1 的請求訊息和響應訊息都應支援 host 頭域,且請求訊息中如果沒有 host 頭域會報告乙個錯誤(400 bad request)
面臨問題
安全性
header開銷
keep-alive 開銷
請求優先順序(request prioritization)
header 壓縮
加密傳輸
服務端推送(server push)
例如我的網頁有乙個 sytle.css 的請求,在客戶端收到 sytle.css 資料的同時,服務端會將 sytle.js 的檔案推送給客戶端,當客戶端再次嘗試獲取 sytle.js 時就可以直接從快取中獲取到,不用再發請求了
http/2.0的hpack演算法
對比spdy採用二進位制分幀
HTTP知識點總結
唉扯遠了,說點實在的吧。web相關的開發人員應該都知道http協議的重要性,無論是做後端還是前端,安卓還是ios,都要跟http打交道。想必用fiddler除錯web api的時候,對返回的各種4xx 5xx狀態碼感到一頭霧水絕不是什麼愉快的體驗。最近也是複習了一些相關的知識,今天就總結一下。通常所...
HTTP 校招知識點總結
http協議概述http報文格式請求方法與響應碼瀏覽器搜尋到頁面顯示的過程,http與tcpsession與cookieshttp1.0,1.1,2.0restful 程式設計風格https http是指超文字傳輸協議,顧名思義就是通過網路在主機之間傳遞超文字的一種協議,廣泛用於bs 瀏覽器和web...
Http協議知識點
1.型別 http伺服器會給在http中傳送的http資源物件附加乙個mime型別,接收http資源物件的客戶端會根據這個型別來判斷是否能夠進行處理,例如瀏覽器就能夠處理上百種mime型別的http資源物件 2.mime型別是一種文字標記,表示一種主要物件型別和一種特定的子型別,中間用一條斜槓來分隔...