寫在前面的話,關於 HTTP 和 HTTPS 的問題,常常會被很多學習者忽略,HTTP、HTTPS 不就是網址的開頭嗎,有啥好了解的,瀏覽器的引擎實現了這個協議,在開發關係不大,但想要深入一些理解數據傳輸原理,瞭解這兩個概念是必須的,以下的內容為概念性,幫助小夥伴們瞭解 HTTP 和 HTTPS 的關鍵點。
HTTP(HyperText Transfer Protocol,超文字傳輸協議)和HTTPS(HTTP Secure,安全超文字傳輸協議)都是用於從網路傳輸超文字到本地瀏覽器的傳輸協議,它們是網際網路上應用最為廣泛的協議之一。以下是它們的主要區別和各自解決的問題:
HTTP(超文字傳輸協議)
定義:HTTP是一種用於分散式、協作式、超媒體信息系統的應用層協議,它是全球資訊網數據通信的基礎。
特點:
明文傳輸:資料在傳輸過程中以明文形式存在,容易被截獲和篡改。
無狀態:HTTP協議本身不保留之前客戶端和伺服器的通訊狀態。
連線無限制:HTTP協議沒有對連線的數量和頻率進行限制。
使用場景:適用於不需要安全加密的普通網頁數據傳輸,如新聞、部落格等。
HTTPS(安全超文字傳輸協議)
定義:HTTPS是在HTTP的基礎上透過SSL/TLS協議進行加密的數據傳輸方式。
特點:
安全加密:透過SSL/TLS協議對資料進行加密,保護數據傳輸過程中的安全性,防止資料在傳輸過程中被竊取或篡改。
身份驗證:透過證書對伺服器進行身份驗證,確保資料傳送到正確的伺服器。
完整性校驗:確保資料在傳輸過程中未被篡改。
使用場景:適用於需要高安全性的場合,如網上銀行、線上支付、登入認證、敏感數據傳輸等。
區別
安全性:HTTPS比HTTP更安全,因為資料在傳輸過程中被加密。
加密方式:HTTP不加密,而HTTPS使用SSL/TLS進行加密。
埠:HTTP預設埠是80,HTTPS預設埠是443。
效能:由於加密和解密的開銷,HTTPS通常比HTTP慢一些,但這種差異隨著技術的發展越來越小。
SEO影響:搜索引擎如Google傾向於優先索引HTTPS網站,因為它們提供了更安全的數據傳輸。
解決的問題
HTTP:解決了如何在網際網路上傳輸超文字資料的問題,但因為其明文傳輸的特性,無法保證資料的安全性和完整性。
HTTPS:解決了數據傳輸過程中的安全性問題,透過加密確保資料的機密性、完整性和身份驗證,從而保護使用者的隱私和資料安全。
隨著網路安全意識的提高,越來越多的網站選擇使用HTTPS來保護用戶數據和提高網站的可信度。
HTTP協議是如何工作的
HTTP(HyperText Transfer Protocol,超文字傳輸協議)是網際網路上應用最廣泛的協議之一,用於客戶端(如瀏覽器)和伺服器之間的通訊。以下是HTTP協議的基本工作原理:
建立連線:
客戶端透過TCP協議與伺服器建立一個連線。HTTP/1.1預設使用持久連線,即TCP連線在傳輸完一個物件後不會關閉,可以被用來傳輸下一個物件。
傳送請求:
客戶端傳送一個HTTP請求到伺服器。請求通常包含請求行(如GET /index.html HTTP/1.1),請求頭(包含請求的附加資訊,如User-Agent、Accept等),以及可選的請求體(如POST請求中的資料)。
伺服器處理請求:
伺服器接收到請求後,根據請求行中的HTTP方法(如GET、POST、PUT等)、資源路徑(如/index.html)和HTTP版本等資訊,確定如何處理請求。
生成響應:
伺服器處理請求後,生成一個HTTP響應。響應包括狀態行(如HTTP/1.1 200 OK),響應頭(包含響應的附加資訊,如Content-Type、Content-Length等),以及響應體(即請求的資源內容,如HTML頁面)。
客戶端接收響應:
客戶端接收到伺服器的響應後,根據響應的狀態碼(如200 OK、404 Not Found等)和響應頭中的資訊,處理響應體中的資料。
關閉連線:
在HTTP/1.0中,每個請求/響應對完成後,連線就會關閉。而在HTTP/1.1中,預設使用持久連線,可以在同一個連線上傳送多個請求/響應對,直到客戶端或伺服器端明確關閉連線。
內容展示:
客戶端(通常是瀏覽器)將接收到的內容展示給使用者。如果是HTML頁面,瀏覽器會解析HTML並渲染頁面。
資源載入:
對於HTML頁面中的其他資源(如圖片、CSS、JavaScript等),瀏覽器會再次透過HTTP協議發起請求,重複上述過程,直到頁面完全載入。
HTTP協議是無狀態的,即伺服器不會在請求之間儲存任何會話資訊。爲了解決這個問題,引入了Cookie和Session機制來保持狀態。
此外,HTTP協議還有一些擴充套件,如HTTP/2,它引入了頭部壓縮、多路複用等特性,以提高傳輸效率和效能。
HTTPS協議是如何工作的
HTTPS(HTTP Secure)協議是在HTTP協議的基礎上,透過SSL/TLS(Secure Socket Layer/Transport Layer Security)協議進行資料加密和安全認證的網路協議。以下是HTTPS的工作原理:
建立TCP連線:
客戶端(通常是瀏覽器)首先透過TCP協議與伺服器建立一個安全的連線。
客戶端發起HTTPS請求:
客戶端透過HTTPS URL(以https://開頭)發起請求,這個請求會被髮送到伺服器的443埠(或其他配置的埠)。
伺服器響應證書:
伺服器接收到客戶端的HTTPS請求後,會向客戶端傳送其SSL證書。這個證書通常由受信任的證書頒發機構(CA)簽發,包含了伺服器的公鑰和其它身份資訊。
證書驗證:
客戶端接收到證書後,會檢查證書的有效性,包括證書是否過期、證書頒發機構是否受信任等。如果證書驗證失敗,客戶端會警告使用者連線可能不安全。
金鑰交換:
如果證書驗證透過,客戶端會生成一個隨機的對稱加密金鑰,用於本次會話的加密通訊。然後,客戶端使用伺服器證書中的公鑰對這個對稱金鑰進行加密,並將加密後的金鑰傳送給伺服器。
伺服器解密金鑰:
伺服器使用自己的私鑰解密客戶端傳送的加密資訊,得到對稱加密金鑰。
加密通訊:
從此時開始,客戶端和伺服器都會使用這個對稱金鑰對所有傳輸的資料進行加密和解密,確保資料的機密性和完整性。
傳送和接收資料:
客戶端和伺服器現在可以安全地交換資料。所有透過HTTPS傳輸的資料都會被加密,只有通訊雙方纔能解密和理解資料內容。
會話結束:
當通訊結束時,客戶端和伺服器可以安全地關閉連線,或者保持連線以供後續通訊使用(HTTP持久連線)。
安全性特性:
HTTPS提供了資料完整性校驗和身份驗證,確保資料在傳輸過程中沒有被篡改,並且確認了通訊雙方的身份。
HTTPS協議透過在HTTP協議之上增加SSL/TLS層,提供了資料加密、身份驗證和資料完整性校驗等安全特性,從而保護了用戶數據和隱私安全,尤其適用於需要高安全性的場合,如網上銀行、線上支付、電子郵件等。
最後
瞭解 HTTP 和 HTTPS 的概念,連線客戶端與服務端請求響應的知識空白,不用太多,小編覺得以上的內容夠了,如果還需要更深入瞭解,需要從網路七層協議,瀏覽器的TCP實現細節入手。