HTTP協議基本知識點總結

2021-10-09 04:22:48 字數 2683 閱讀 8909

3. http的報文格式

4. cookie,session和token

5. http1.x,http2.0的區別

6. https協議

http(hypertext transfer protocol)是超文字傳輸協議的簡稱。它定義了http報文的結構和使用者和伺服器之間進行報文交換的格式。

·http是乙個建立在tcp協議之上的應用層協議,預設埠號為80。

·http是無狀態協議,不儲存關於客戶的任何資訊。

每乙個請求/響應經過乙個單獨的tcp連線傳送。一次請求/響應完成之後就斷開tcp連線。

缺點:

需要給每乙個請求響應建立乙個全新的連線,會給伺服器帶來較大負擔。

總延遲較長。每乙個傳輸的物件都需要經過兩倍的rtt(round trip time)才能到達(乙個建立連線,乙個傳輸檔案)。

請求和響應經過相同的tcp連線傳送。 如果乙個連線一段時間沒有被使用,伺服器就會關閉這個連線。

主要包含三個部分:請求行,首部行,實體體(entity body)。

請求行:

請求行是請求報文的第一行,格式如下:

《方法》 < url> 《版本號》

其中基本方法包括get,post,put,delete

get和post的區別:

get的提交資料在url裡實體體為空,post的提交資料在body中。

get提交url有長度限制,post沒有

回退重新整理時get是無害的,post的資料會被重新提交(瀏覽器應該會通知)

post相對get來說更安全一點,因為get會直接將資訊顯示在url上,如果有快取url可能直接得到如賬號密碼等資訊。

但其實這兩者都不是安全的,因為即使是post也可以通過抓包來獲取到body鐘的內容。

主要包含三個部分:狀態行,首部行,實體體

狀態行:

狀態行是響應報文的第一行,格式如下:

《版本》 《狀態碼》 《短語》

版本和請求報文中類似。

常用的狀態碼:

狀態碼短語

意義200

ok請求成功

301moved premanently

請求物件永久移除

304not modified

可直接使用快取檔案

400bad request

客戶端請求無法被伺服器理解

401unauthorized

請求未經授權

403forbidded

伺服器拒接提供服務

404not found

請求資源不存在

500internal server error

伺服器發生錯誤

web站點希望能夠識別使用者而使用cookie。使用者訪問伺服器之後,伺服器會返回乙個cookie並被客戶端記錄下來。當使用者在此訪問這個伺服器的時候,會使用這個cookie,伺服器就可以利用它來得到使用者之前留下的資訊。

利用這個功能可以實現如不登陸購物車商品記錄,個性化推薦等功能

每乙個使用者會有乙個不同的sesion,可以在session中存放資訊。在伺服器端會建立乙個session物件,產生乙個sessionid來識別物件,並將這個sessionid放入cookie中傳送給客戶端。當客戶端再次訪問伺服器的時候會包含這個sessionid,由伺服器解析,從而對應上使用者。

session的實現是通常是依賴於cookie的,如果cookie被禁用,session也將無法使用。

token是伺服器端生成的一串字串,以作為客戶端進行請求的乙個令牌。當第一次登陸後,伺服器生成乙個token並返回給客戶端。以後客戶端只需要帶上這個token來請求資料即可,無需再次帶上使用者名稱和密碼。

token一般用在三個地方:

防止表單重複提交

防止csrf攻擊(跨站點請求偽造)

身份驗證(單點登入)

cookie主要存放在客戶端,儲存的資料通常有限,session主要存放在伺服器端。

cookie只是實現session的其中一種方案,雖然是最常用的,但是並不是唯一的。

儲存在客戶端的危險性較大。

相比於http1, http2.0主要有如下幾點區別:

多路復用

允許通過單一的http2連線同時傳送多個請求/響應。

二進位制分幀

首部壓縮

http1中由於cookie和user agent等原因很容易傳送首部膨脹,因此http/2中使用hpack演算法進行首部壓縮。

服務端推送

在 http/2 中,伺服器可以對客戶端的乙個請求傳送多個響應。

https(hypertext transfer protocol over secure socket layer)可以理解為http + ssl/tls,通過ssl證書來驗證伺服器身份,並為客戶端和伺服器之間的通訊加密。它的預設埠是443。

使用https的傳輸流程:

首先客戶端通過url訪問伺服器建立ssl連線。

服務端收到客戶端請求後,會將**支援的證書資訊(證書中包含公鑰)傳送乙份給客戶端。

客戶端的瀏覽器建立會話金鑰,然後利用**的公鑰將會話金鑰加密,並傳送給伺服器。

伺服器利用自己的私鑰解密出會話金鑰。

伺服器利用會話金鑰加密與客戶端之間的通訊。

HTTP 協議基本知識

http協議 7.1.什麼是http協議 http協議是用來規定瀏覽器客戶端和伺服器通訊的方式 7.2.基本原則 基於請求響應模型 一次請求對應一次響應 請求只能由客戶端發出,伺服器只能被動的等待請求,做出回應 7.3.http協議詳解 7.3.1.http請求 請求行get news3 1.htm...

Python基本知識點總結

本文總結了python中最基本的知識點。1 基本數學操作符 python中最常用的數學操作符如下表所示 操作符含義 舉例結果 加法 1 23 減法2 11 乘法1 22 除法2 12 整除 商數取整 5 22 取模 取餘數 5 21 指數3 3 81上表中操作符的優先順序從低到高的順序為 接下來是 ...

基本知識點

1 程序和執行緒的關係 1 在有執行緒的作業系統裡面,程序是分配資源的基本單位,執行緒是排程的基本單位。2 1個程序可以擁有多個執行緒 3 執行緒同時也有一些自己的資源,包括 程式計數器,堆疊等 4 因為執行緒所擁有的資源比較少,因此進行排程的時候所消耗的資源就少。5 執行緒共享程序的 段,程序的一...