HTTP和HTTPS協議
1.什麼是協議?
網路協議是計算機之間為了實現網路通訊而達成的一種“約定”或者”規則“,有了這種”約定“,不同廠商的生產裝置,以及不同作業系統組成的計算機之間,就可以實現通訊。
2.HTTP協議是什麼?
HTTP協議是超文字傳輸協議的縮寫,英文是Hyper Text Transfer Protocol。它是從WEB伺服器傳輸超文字標記語言(HTML)到本地瀏覽器的傳送協議。
設計HTTP最初的目的是為了提供一種釋出和接收HTML頁面的方法。
HTPP有多個版本,目前廣泛使用的是HTTP/1.1版本。
3.HTTP原理
HTTP是一個基於TCP/IP通訊協議來傳遞資料的協議,傳輸的資料型別為HTML 檔案,、圖片檔案, 查詢結果等。
HTTP協議一般用於B/S架構()。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB伺服器傳送所有請求。
我們以訪問百度為例:
訪問百度流程
4.HTTP特點
http協議支援客戶端/服務端模式,也是一種請求/響應模式的協議。簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。靈活:HTTP允許傳輸任意型別的資料物件。傳輸的型別由Content-Type加以標記。無連線:限制每次連線只處理一個請求。伺服器處理完請求,並收到客戶的應答後,即斷開連線,但是卻不利於客戶端與伺服器保持會話連線,為了彌補這種不足,產生了兩項記錄http狀態的技術,一個叫做Cookie,一個叫做Session。無狀態:無狀態是指協議對於事務處理沒有記憶,後續處理需要前面的資訊,則必須重傳。
5.URI和URL的區別
HTTP使用統一資源識別符號(Uniform Resource Identifiers, URI)來傳輸資料和建立連線。
URI:Uniform Resource Identifier 統一資源識別符號URL:Uniform Resource Location 統一資源定位符
URI 是用來標示 一個具體的資源的,我們可以通過 URI 知道一個資源是什麼。
URL 則是用來定位具體的資源的,標示了一個具體的資源位置。網際網路上的每個檔案都有一個唯一的URL。
6.HTTP報文組成
請求報文構成
- 請求行:包括請求方法、URL、協議/版本
- 請求頭(Request Header)
- 請求正文
請求報文組成
響應報文構成
- 狀態行
- 響應頭
- 響應正文
響應報文組成
7.常見請求方法
GET:請求指定的頁面資訊,並返回實體主體。POST:向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。HEAD:類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭PUT:從客戶端向伺服器傳送的資料取代指定的文件的內容。DELETE:請求伺服器刪除指定的頁面。
get請求
GET請求
post請求
POST請求
post和get的區別:
都包含請求頭請求行,post多了請求body。get多用來查詢,請求引數放在url中,不會對伺服器上的內容產生作用。post用來提交,如把賬號密碼放入body中。GET是直接新增到URL後面的,直接就可以在URL中看到內容,而POST是放在報文內部的,使用者無法直接看到。GET提交的資料長度是有限制的,因為URL長度有限制,具體的長度限制視瀏覽器而定。而POST沒有。
8.響應狀態碼
訪問一個網頁時,瀏覽器會向web伺服器發出請求。此網頁所在的伺服器會返回一個包含HTTP狀態碼的資訊頭用以響應瀏覽器的請求。
狀態碼分類:
- 1XX- 資訊型,伺服器收到請求,需要請求者繼續操作。2XX- 成功型,請求成功收到,理解並處理。
- 3XX - 重定向,需要進一步的操作以完成請求。
- 4XX - 客戶端錯誤,請求包含語法錯誤或無法完成請求。
- 5XX - 伺服器錯誤,伺服器在處理請求的過程中發生了錯誤。
常見狀態碼:
- 200 OK - 客戶端請求成功301 - 資源(網頁等)被永久轉移到其它URL
- 302 - 臨時跳轉
- 400 Bad Request - 客戶端請求有語法錯誤,不能被伺服器所理解
- 401 Unauthorized - 請求未經授權,這個狀態程式碼必須和WWW-Authenticate報頭域一起使用
- 404 - 請求資源不存在,可能是輸入了錯誤的URL
- 500 - 伺服器內部發生了不可預期的錯誤
- 503 Server Unavailable - 伺服器當前不能處理客戶端的請求,一段時間後可能恢復正常。
9.為什麼要用https?
實際使用中,絕大說的網站現在都採用的是https協議,這也是未來網際網路發展的趨勢。下面是通過wireshark抓取的一個部落格網站的登入請求過程。
部落格登入抓包
可以看到訪問的賬號密碼都是明文傳輸, 這樣客戶端發出的請求很容易被不法分子擷取利用,因此,HTTP協議不適合傳輸一些敏感資訊,比如:各種賬號、密碼等資訊,使用http協議傳輸隱私資訊非常不安全。
一般http中存在如下問題:
- 請求資訊明文傳輸,容易被竊聽擷取。資料的完整性未校驗,容易被篡改沒有驗證對方身份,存在冒充危險
10.什麼是HTTPS?
為了解決上述HTTP存在的問題,就用到了HTTPS。
HTTPS 協議(HyperText Transfer Protocol over Secure Socket Layer):一般理解為HTTP+SSL/TLS,通過 SSL證書來驗證伺服器的身份,併為瀏覽器和伺服器之間的通訊進行加密。
那麼SSL又是什麼?
SSL(Secure Socket Layer,安全套接字層):1994年為 Netscape 所研發,SSL 協議位於 TCP/IP 協議與各種應用層協議之間,為資料通訊提供安全支援。
TLS(Transport Layer Security,傳輸層安全):其前身是 SSL,它最初的幾個版本(SSL 1.0、SSL 2.0、SSL 3.0)由網景公司開發,1999年從 3.1 開始被 IETF 標準化並改名,發展至今已經有 TLS 1.0、TLS 1.1、TLS 1.2 三個版本。SSL3.0和TLS1.0由於存在安全漏洞,已經很少被使用到。TLS 1.3 改動會比較大,目前還在草案階段,目前使用最廣泛的是TLS 1.1、TLS 1.2。
SSL發展史(網際網路加密通訊)
1994年NetSpace公司設計SSL協議(Secure Sockets Layout)1.0版本,但未釋出。1995年NetSpace釋出SSL/2.0版本,很快發現有嚴重漏洞1996年釋出SSL/3.0版本,得到大規模應用1999年,釋出了SSL升級版TLS/1.0版本,目前應用最廣泛的版本2006年和2008年,釋出了TLS/1.1版本和TLS/1.2版本
11.瀏覽器在使用HTTPS傳輸資料的流程是什麼?
HTTPS資料傳輸流程
首先客戶端通過URL訪問伺服器建立SSL連線。服務端收到客戶端請求後,會將網站支援的證書資訊(證書中包含公鑰)傳送一份給客戶端。客戶端的伺服器開始協商SSL連線的安全等級,也就是資訊加密的等級。客戶端的瀏覽器根據雙方同意的安全等級,建立會話金鑰,然後利用網站的公鑰將會話金鑰加密,並傳送給網站。伺服器利用自己的私鑰解密出會話金鑰。伺服器利用會話金鑰加密與客戶端之間的通訊。
12.HTTPS的缺點
HTTPS協議多次握手,導致頁面的載入時間延長近50%;HTTPS連線快取不如HTTP高效,會增加資料開銷和功耗;申請SSL證書需要錢,功能越強大的證書費用越高。SSL涉及到的安全演算法會消耗 CPU 資源,對伺服器資源消耗較大。
13.總結HTTPS和HTTP的區別
HTTPS是HTTP協議的安全版本,HTTP協議的資料傳輸是明文的,是不安全的,HTTPS使用了SSL/TLS協議進行了加密處理。http和https使用連線方式不同,預設埠也不一樣,http是80,https是443。
相關文章
- HTTP協議和HTTPS協議的異同點?HTTP協議
- Http與Https協議HTTP協議
- 簡述HTTP和HTTPS協議的不同之處HTTP協議
- HTTP協議圖文簡述--HTTP/HTTPS/HTTP2HTTP協議
- 網路協議 - TCP/IP、HTTP、HTTPS、HTTP2.0協議TCPHTTP
- RPC和 HTTP協議RPCHTTP協議
- HTTP 協議知識點總結(二)HTTPSHTTP協議
- ios網路協議從http變成httpsiOS協議HTTP
- HTTP協議之:HTTP/1.1和HTTP/2HTTP協議
- HTTPS 協議HTTP協議
- 詳解HTTP&HTTPS協議及面試題HTTP協議面試題
- HTTP HSTS協議和 nginxHTTP協議Nginx
- HTTP協議和MQTT協議對比誰更好HTTP協議MQQT
- http協議HTTP協議
- HTTP 協議HTTP協議
- 什麼是HTTPS協議?為什麼要用HTTPS協議?HTTP協議
- 基於TCP/UDP的Socket程式設計,HTTP/HTTPS協議TCPUDP程式設計HTTP協議
- HTTP 和 HTTPSHTTP
- HTTP和HTTPSHTTP
- HTTPS和HTTPHTTP
- https協議的理解HTTP協議
- HTTPS協議詳解HTTP協議
- 大型網站的HTTPS實踐(一)——HTTPS協議和原理網站HTTP協議
- IPIDEA帶你瞭解HTTP協議和SOCKS5協議IdeaHTTP協議
- 02 前端HTTP協議(圖解HTTP) 之 簡單的HTTP協議前端HTTP協議圖解
- 理解http協議HTTP協議
- http協議分析HTTP協議
- HTTP協議(2)HTTP協議
- HTTP 協議類HTTP協議
- 小解http協議HTTP協議
- HTTP協議概述HTTP協議
- Http與Https的區別(精簡版包含協議說明)HTTP協議
- Python_17 OSI模型和HTTP協議Python模型HTTP協議
- HTTP協議中URI和URL區別HTTP協議
- 將網站應用從 HTTP 協議免費升級到 HTTPS網站HTTP協議
- HTTP協議簡述HTTP協議
- HTTP 協議簡介HTTP協議
- HTTP協議那些事HTTP協議