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 執行緒共享程序的 段,程序的一...