簡單比較 http https http2

2021-09-11 10:09:00 字數 2661 閱讀 2694

超文字傳輸​​協議(http)是用於傳輸諸如html的超**文件的應用層協議。它被設計用於web瀏覽器和web伺服器之間的通訊,但它也可以用於其他目的。 http遵循經典的客戶端-服務端模型,客戶端開啟乙個連線以發出請求,然後等待它收到伺服器端響應。 http是無狀態協議,意味著伺服器不會在兩個請求之間保留任何資料(狀態)。雖然通常基於tcp / ip層,但可以在任何可靠的傳輸層上使用;也就是說,乙個不會靜默丟失訊息的協議,如udp。

http strict transport security(通常簡稱為hsts) 是乙個安全功能,它告訴瀏覽器只能通過https訪問當前資源, 禁止http方式.

strict transport security解決了這個問題;只要你通過https請求訪問銀行**,並且銀行**配置好strict transport security,你的瀏覽器知道自動使用https請求,這可以阻止黑客的中間人攻擊的把戲。

開啟hsts只需要當通過https方式訪問你的**時,返回 strict-transport-securityhttp 頭資訊: strict-transport-security: max-age=expiretime [; includesubdomains]

https協議需要到ca申請證書,一般免費證書很少,需要交費。

http協議執行在tcp之上,所有傳輸的內容都是明文,https執行在ssl/tls之上,ssl/tls執行在tcp之上,所有傳輸的內容都經過加密的。

http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

https可以有效的防止運營商劫持,解決了防劫持的乙個大問題。

2023年google如一聲驚雷提出了spdy的方案,大家才開始從正面看待和解決老版本http協議本身的問題,spdy可以說是綜合了https和http兩者有點於一體的傳輸協議,主要解決:

降低延遲,針對http高延遲的問題,spdy優雅的採取了多路復用(multiplexing)。多路復用通過多個請求stream共享乙個tcp連線的方式,解決了hol blocking的問題,降低了延遲同時提高了頻寬的利用率。

請求優先順序(request prioritization)。多路復用帶來乙個新的問題是,在連線共享的基礎之上有可能會導致關鍵請求被阻塞。spdy允許給每個request設定優先順序,這樣重要的請求就會優先得到響應。比如瀏覽器載入首頁,首頁的html內容應該優先展示,之後才是各種靜態資源檔案,指令碼檔案等載入,這樣可以保證使用者能第一時間看到網頁內容。

header壓縮。前面提到http1.x的header很多時候都是重複多餘的。選擇合適的壓縮演算法可以減小包的大小和數量。

基於https的加密協議傳輸,大大提高了傳輸資料的可靠性。

服務端推送(server push),採用了spdy的網頁,例如我的網頁有乙個sytle.css的請求,在客戶端收到sytle.css資料的同時,服務端會將sytle.js的檔案推送給客戶端,當客戶端再次嘗試獲取sytle.js時就可以直接從快取中獲取到,不用再發請求了。spdy構成圖:

spdy位於http之下,tcp和ssl之上,這樣可以輕鬆相容老版本的http協議(將http1.x的內容封裝成一種新的frame格式),同時可以使用已有的ssl功能。

http2.0可以說是spdy的公升級版(其實原本也是基於spdy設計的),但是,http2.0 跟 spdy 仍有不同的地方,主要是以下兩點

● http2.0 支援明文 http 傳輸,而 spdy 強制使用 https

● http2.0 訊息頭的壓縮演算法採用 hpack,而非 spdy 採用的 deflate

新的二進位制格式(binary format),http1.x的解析是基於文字。基於文字協議的格式解析存在天然缺陷,文字的表現形式有多樣性,要做到健壯性考慮的場景必然很多,二進位制則不同,只認0和1的組合。基於這種考慮http2.0的協議解析決定採用二進位制格式,實現方便且健壯。

多路復用(multiplexing),即連線共享,即每乙個request都是是用作連線共享機制的。乙個request對應乙個id,這樣乙個連線上可以有多個request,每個連線的request可以隨機的混雜在一起,接收方可以根據request的 id將request再歸屬到各自不同的服務端請求裡面。多路復用原理圖:

header壓縮,如上文中所言,對前面提到過http1.x的header帶有大量資訊,而且每次都要重**送,http2.0使用encoder來減少需要傳輸的header大小,通訊雙方各自cache乙份header fields表,既避免了重複header的傳輸,又減小了需要傳輸的大小。

服務端推送(server push),同spdy一樣,http2.0也具有server push功能。目前,有大多數**已經啟用http2.0,例如youtube,**網等**,利用chrome控制台可以檢視是否啟用h2:

chrome=>network=>name欄右鍵=>√protocol

複製**

lpove.github.io/hexo/

SIFT ORB FAST簡單比較

sift 畫素點和鄰域畫素點作比較,得到畫素灰度極值 為了消除邊緣響應,邊緣採用harris角點,fast orb 檢測畫素灰度變化明顯的地方 sift 計算畫素梯度及分布,從而確定旋轉角度 orb灰度質心法 確定影象塊的像素質心,連線幾何中心和質心構成向量,根據此向量確定旋轉角 theta。將關鍵...

ext jquery 簡單比較 jquery

ext jq 1.ext體積大,jquery更專注於簡化最基礎的開發工作.所以使用起來,也就感覺更像是使用原始的js進行開發一樣 2.ext介面美觀,jq一般 3.ext 復用性強 4.ext相容性還是有點小問題,jq相容性良好 5.ext不易除錯,6.ext使頁面是只留下body,搜尋引擎無法收錄...

myisam與innodb簡單比較

myisam 這個是預設型別,它基於傳統的isam型別,它是儲存記錄和檔案的標準方法.與其他儲存引擎比較,myisam具有檢查和修復 的大多數工具.myisam 可以被壓縮,而且它們支援全文搜尋.它們不是事務安全的,而且也不支援外來鍵。如果事物回滾將造成不完全回滾,不具有原子性。如果執行大量的sel...