一、什麼是http和https
http:是乙個簡單的請求-響應協議,它通常執行在tcp之上。它指定了客戶端可能傳送給伺服器什麼樣的訊息以及得到什麼樣的響應。請求和響應訊息的頭以ascii碼形式給出;而訊息內容則具有乙個類似mime的格式。
http工作流程
第一步:建立tcp/ip連線,客戶端與伺服器通過socket三次握手進行連線
第二步:客戶端向服務端發起http請求(例如:post/login.html http/1.1)
第三步:客戶端傳送請求頭資訊,請求內容,最後會傳送一空白行,標示客戶端請求完畢
第四步:伺服器做出應答,表示對於客戶端請求的應答,例如:http/1.1 200 ok
第五步:伺服器向客戶端傳送應答頭資訊
第六步:伺服器向客戶端傳送請求頭資訊後,也會傳送一空白行,標示應答頭資訊傳送完畢,接著就以content-type要求的資料格式傳送資料給客戶端
第七步:服務端關閉tcp連線,如果伺服器或者客戶端增connection:keep-alive就表示客戶端與伺服器端繼續儲存連線,在下次請求時可以繼續使用這次的連線
https:是以安全為目標的 http 通道,在http的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性。https 在http 的基礎下加入ssl 層,https 的安全基礎是 ssl,因此加密的詳細內容就需要 ssl。
https工作流程
第一步:客戶使用https的url訪問web伺服器,要求與web伺服器建立ssl連線。
第三步:客戶端的瀏覽器與web伺服器開始協商ssl連線的安全等級,也就是資訊加密的等級。
第五步:web伺服器利用自己的私鑰解密出會話金鑰。
第六步:web伺服器利用會話金鑰加密與客戶端之間的通訊
二、二者有何不同
細心的小夥伴已經能夠發現,許多大型**都已經將http換成了https
資料加密傳輸,是http和https之間的本質性區別,其實除了這個之外,https**和http**還有其他地方不同。
當你使用chrome瀏覽器訪問乙個http**的時候,你會發現瀏覽器會對該http**顯示「不安全」的安全警告,提示使用者當前所訪問的**可能會存在風險。
而假如你訪問的是乙個https**時,情況卻是完全不一樣。你會發現瀏覽器的位址列會變成綠色,企業名稱會展示在位址列中,位址列上面還會出現一把「安全鎖」的圖示。這些都會給與使用者很大的視覺上的安全體驗。
下面我用**進行對比:
https的缺點
雖然說https有很大的優勢,但其相對來說,還是存在不足之處的:
(1)https協議握手階段比較費時,會使頁面的載入時間延長近50%,增加10%到20%的耗電;
(2)https連線快取不如http高效,會增加資料開銷和功耗,甚至已有的安全措施也會因此而受到影響;
(3)ssl證書需要錢,功能越強大的證書費用越高,個人**、小**沒有必要一般不會用。
(4)ssl證書通常需要繫結ip,不能在同一ip上繫結多個網域名稱,ipv4資源不可能支撐這個消耗。
(5)https協議的加密範圍也比較有限,在黑客攻擊、拒絕服務攻擊、伺服器劫持等方面幾乎起不到什麼作用。最關鍵的,ssl證書的信用鏈體系並不安全,特別是在某些國家可以控制ca根證書的情況下,中間人攻擊一樣可行。
參考鏈結
HTTP和HTTPS有什麼不同
的url會分為兩部分 通訊協議和網域名稱位址。網域名稱位址都很好理解,不同的網域名稱位址表示 中不同的頁面,而通訊協議,簡單來說就是瀏覽器和伺服器之間溝通的語言。中的通訊協議一般就是http協議和https協議。http協議 http協議是一種使用明文資料傳輸的網路協議。一直以來http協議都是最主...
URL URI 有何不同
1 含義不同 uri,是uniform resource identifier,統一資源識別符號,用來唯一的標識乙個資源。url是uniform resource locator,統一資源定位器,它是一種具體的uri,即url可以用來標識乙個資源,而且還指明了如何locate這個資源。2 位置不同 ...
http和https有什麼區別
https和http的區別主要如下 1 https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。2 http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。3 http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。4 ...