【日常積累】HTTP和HTTPS的區別

背景

在運維面試中,經常會遇到面試官提問http和https的區別,今天咱們先來簡單了解一下。

超文本傳輸協議HTTP被用于在Web瀏覽器和網站服務器之間傳遞信息,HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此,HTTP協議不適合傳輸一些敏感信息,比如:各種密碼,銀行卡號等重要信息。
為了解決HTTP協議的這個安全問題,需要使用另一種協議:HTTPS超文本傳輸安全協議,為了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證服務器的身份,并為瀏覽器和服務器之間的通信加密。

基本概念

HTTP

HTTP(Hyper Text Transfer Protocol)全稱為超文本傳輸協議,是一個簡單的請求——響應協議:

  • HTTP協議規定了如何從網站服務器傳輸超文本到本地瀏覽器;
  • HTTP協議基于客戶端服務器架構工作,是客戶端(用戶)和服務器端(網站)請求和應答的標準。
  • HTTP協議可以使瀏覽器更加高效,使網絡傳輸減少。
  • HTTP協議不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先于圖形)等。

HTTPS

HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer),超文本傳輸安全協議:

  • 是以安全為目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性。
  • HTTPS 在HTTP 的基礎下加入SSL,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL。
  • HTTPS 存在不同于 HTTP 的默認端口及一個加密/身份驗證層(在 HTTP與 TCP 之間)。這個系統提供了身份驗證與加密通訊方法。它被廣泛用于萬維網上安全敏感的通訊,例如交易支付等方面。
  • HTTPS協議的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。

區別

HTTP協議傳輸的數據都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私信息非常不安全,為了保證這些隱私數據能加密傳輸,于是網景公司設計了SSL(Secure Sockets Layer)協議用于對HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。簡單來說,HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全。

HTTPS和HTTP的區別主要如下:

  • https協議需要到CA(Certificate Authority,數字證書認證機構)申請證書,一般免費證書較少,因而需要一定費用。
  • http是明文傳輸,數據未加密,安全性差;https則是具有安全性的ssl加密傳輸協議,安全性好。
  • http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
  • http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
  • http頁面響應速度比https快,因為http使用TCP三次握手建立連接,客戶端和服務器需要交換 3 個包,而https除了TCP的三個包,還要加上ssl握手需要的 9 個包,所以一共是 12 個包。
  • https=SSL/TLS+http,所以,https比http要更耗費服務器資源。

工作原理

HTTP工作原理

(1)客戶端與服務器建立連接。該連接是通過TCP 來完成的,一般端口號是80。
(2)客戶向服務器提出請求。請求方式的格式為:統一資源標識符(URL)、協議版本號,后邊是 MIME 信息包括請求修飾符、客戶機信息和許可內容。
(3)服務器接受請求,并根據請求返回相應的文件作為應答。格式:一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,后邊是 MIME 信息包括服務器信息、實體信息和可能的內容。
(4)客戶與服務器關閉連接。

HTTPS工作原理

我們都知道HTTPS能夠加密信息,以免敏感信息被第三方獲取,現在絕大多數網站都會采用安全級別較高的HTTPS協議,即使用戶訪問http協議的網站,也會跳轉到https協議類型的網站。
在這里插入圖片描述
客戶端在使用HTTPS方式與Web服務器通信時有以下幾個步驟,如下圖所示。
在這里插入圖片描述
步驟分析:
(1)客戶端向服務端443端口發起HTTPS請求。該請求中攜帶了客戶端支持的加密算法和哈希算法;
(2)服務端收到請求,選擇瀏覽器支持的加密算法和哈希算法。
(3)服務端將算法和數字證書發送給客戶端。該證書包含了用于認證目的的服務器標識,可以是向某個可靠機構申請的,也可以是自制的;
(4)客戶端對服務器端的證書進行驗證,這一部分是瀏覽器內置的TLS完成的,具體步驟如下:

首先瀏覽器會從內置的證書中搜索,找到該證書對應的機構,如果查到了對應的機構,則取出該機構頒發的公鑰;如果沒有找到,此時瀏覽器就會提示用戶該證書不是由權威機構頒發,是不可信任的。
然后用機構的證書公鑰解密,得到證書的內容和證書簽名,內容包括網站的網址、網站的公鑰、證書的有效期等。瀏覽器會先驗證簽名的合法性,簽名通過后,瀏覽器驗證證書記錄的網址是否和當前網址是一致的,不一致會提示用戶。如果網址一致會檢查證書有效期,證書過期了也會提示用戶。這些都通過認證時,瀏覽器就可以安全使用證書中的網站公鑰了。
服務器生成一個隨機密碼串pre_master_secret,并使用服務器的公鑰對其進行加密。
(5)客戶端將加密的隨機密碼串傳送給服務端。
(6)服務器用自己的私鑰解密得到隨機密碼串(私鑰),然后通過該隨機密碼串把網頁內容進行對稱加密,并傳輸給瀏覽器。
(7)瀏覽器用之前生成的私鑰解密算法獲取網頁內容。

HTTPS優缺點

優點

(1)使用HTTPS協議可認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
(2)HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比HTTP安全,可防止數據在傳輸過程中被竊取、改變,確保數據的完整性。
(3)HTTPS是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。

缺點

(1)相同網絡環境下,HTTPS協議會使頁面的加載時間延長,耗電增加。此外,HTTPS協議還會影響緩存,增加數據開銷和功耗。
(2)HTTPS協議的安全是有范圍的,在黑客攻擊、拒絕服務攻擊和服務器劫持等方面幾乎起不到什么作用。
(3)SSL 證書的信用鏈體系并不安全。特別是在某些國家可以控制 CA 根證書的情況下,中間人攻擊一樣可行。
(4)SSL證書需要錢,功能越強大的證書費用越高,個人網站、小網站沒有必要一般不會用。
(5)SSL證書通常需要綁定IP,不能在同一IP上綁定多個域名,IPv4資源不可能支撐這個消耗。

HTTP請求消息和響應消息

在HTTP請求和響應的過程中傳遞的數據塊就叫HTTP消息,包括要傳送的數據和一些附加信息,并且要遵守規定好的格式。

請求消息

請求消息是指客戶端向服務器端發送請求時所攜帶的數據塊,來自客服端。
請求方式用來規定客戶端與服務器端聯系的類型。
HTTP協議中客戶端8種請求方式如下:

請求方式說明
Get向特定資源發出請求(請求指定頁面信息,并返回實體主體)
Post向指定資源提交數據進行處理請求(提交表單、上傳文件),可能導致新的資源的建立或原有資源的修改
Put向指定資源位置上上傳其最新內容(從客戶端向服務器傳送的數據取代指定文檔的內容)
Head與服務器索與get請求一致的相應,響應體不會返回,獲取包含在小消息頭中的原信息(與get請求類似,返回的響應中沒有具體內容,用于獲取報頭)
opions返回服務器針對特定資源所支持的HTML請求方法 或web服務器發送*測試服務器功能(允許客戶端查看服務器性能)
Delete請求服務器刪除request-URL所標示的資源*(請求服務器刪除頁面)
Trace回顯服務器收到的請求,用于測試和診斷
ConnectHTTP/1.1協議中能夠將連接改為管道方式的代理服務器

響應消息

響應消息是指服務器端向客戶端進行響應請求時所攜帶的數據塊,來自服務端

在響應消息中,對于客戶端的每一次請求,服務器端都要給予響應,在響應的時候我們可以通過狀態碼告訴客戶端此次請求是成功還是失敗。

狀態代碼由3位數字組成,表示請求是否被理解或被滿足。HTTP響應狀態碼的第一個數字定義了響應的類別,后面兩位沒有具體的分類,第1位數字有5種可能的取值,大致了解:
1**:請求已接收,需要繼續處理。
2**:請求已成功被服務器接收、理解并接受。
3**:為完成請求,客戶端需進一步細化請求。
4**:客戶端的請求有錯誤。
5**:服務器端出現錯誤。

HTTP協議常見的狀態碼

狀態碼說明
200表示服務器成功處理了客戶端的請求
302表示請求的資源臨時從不同的URI響應請求,但請求者應繼續使用原有位置來進行以后的請求
404表示服務器找不到請求的資源
400表示客戶端請求有語法錯誤
500表示服務器發生錯誤,無法處理客戶端的請求

更多關于Linux的知識請前往博客主頁查看,編寫過程中可能由于能力有限難免出現問題,敬請指出,謝謝。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40999.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40999.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40999.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

09- DMA(DirectMemoryAccess直接存儲器訪問)

DMA 09 、DMA(DirectMemoryAccess直接存儲器訪問)DMA配置流程 09 、DMA(DirectMemoryAccess直接存儲器訪問) DMA配置流程 dma.c文件 main.c文件 詳見《stm32中文參考手冊》表57。

tsconfig.json和jsconfig.json配置

{// 編譯選項"compilerOptions": {// 生成代碼的語言版本:將我們寫的 TS 代碼編譯成哪個版本的 JS 代碼// 命令行: tsc --target es5 11-測試TS配置文件.ts"target": "es5",// 指定要包含在編譯中的 library"lib&quo…

3年 Android 開發的面試心經(后悔當初沒有拿 N+1)

作者:勇闖天涯 當某人順利通過大廠面試時,總會有人認為這是運氣比較好罷了,但他們不曾得知對方之前受過多少苦和委屈,又付出了多少努力一步步去突破這些困境。正是因為他們的努力付出,在合適的時間與地點,用…

SSH連接工具匯總

xshell 這是個熟悉的軟件啦,目前我正在使用Xshell_7 鏈接:https://www.xshell.com/zh/xshell/ FinalShell 國產軟件,有windows和MAC版本;使用方便而且免費,但是軟件比較占用內存。但是都2021年了,筆記本…

AlphaZero能否從圍棋和國際象棋飛躍到量子計算?

一項新的研究表明,DeepMind驚人的游戲算法AlphaZero可以幫助釋放量子計算的力量和潛力。 自兩年多前出現以來,AlphaZero一再證明了其快速學習能力,將自己提升到圍棋,國際象棋和將棋(日本象棋)的特級大師級別…

VHDL記錄

文章目錄 使用function名稱作為“常量”numeric_std包集中使用乘法的注意項variable的使用對于entity設置屬性的方法在entity聲明中嵌入function的定義VHDL仿真讀寫文件File declaration/File handingFile readingFile writing小例子 使用函數 模塊中打印出調試信息 使用functi…

RTC實驗

一、RTC簡介 RTC(Real Time Clock)即實時時鐘,它是一個可以為系統提供精確的時間基準的元器件,RTC一般采用精度較高的晶振作為時鐘源,有些RTC為了在主電源掉電時還可以工作,需要外加電池供電BCD碼,四位二進制表示一位…

Java Persistence APl(JPA)——JPA是啥? SpringBoot整合JPA JPA的增刪改查 條件模糊查詢 多對一查詢

目錄 引出Jpa是啥?Jpa的使用創建實體類寫dao接口類寫服務類 crud增刪改查增加修改根據id刪除全查詢分頁查詢 條件查詢模糊查詢單條件查詢多條件查詢模糊查詢排序查詢 多對一查詢定義實體類auto主鍵策略下新增進行全查詢測試 全部代碼application.yml配置類pom配置文…

Java反射機制是什么?

Java反射機制是 Java 語言的一個重要特性。 在學習 Java 反射機制前,大家應該先了解兩個概念,編譯期和運行期。 編譯期是指把源碼交給編譯器編譯成計算機可以執行的文件的過程。在 Java 中也就是把 Java 代碼編成 class 文件的過程。編譯期只是做了一些…

Python學習筆記第五十二天(Pandas 安裝)

Python學習筆記第五十二天 Pandas 安裝查看安裝版本 安裝驗證后記 Pandas 安裝 安裝 pandas 需要基礎環境是 Python,開始前我們假定你已經安裝了 Python 和 Pip。 使用 pip 安裝 pandas: pip install pandas安裝成功后,我們就可以導入 pandas 包使用&…

iPhone(iPad)安裝deb文件

最簡單的方法就是把deb相關的文件拖入手機對應的目錄,一般是DynamicLibraries文件夾 參考:探討手機越獄和安裝deb文件的幾種方式研究 1、在 Mac 上安裝 dpkg 命令 打包 deb 教程之在 Mac 上安裝 dpkg 命令_xcode打包root權限deb_qq_34810996的博客-CS…

神經網絡基礎-神經網絡補充概念-26-前向和反向傳播

簡單比較 前向傳播(Forward Propagation): 前向傳播是神經網絡中的正向計算過程,用于從輸入數據開始,逐層計算每個神經元的輸出值,直到得到最終的預測值。在前向傳播過程中,我們按以下步驟進行…

驅動DAY4 字符設備驅動分步注冊和ioctl函數點亮LED燈

頭文件 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t; #define PHY_LED1_ADDR 0X50006000 #define PHY_LED2_ADDR 0X50007000 #d…

一百五十八、Kettle——Kettle各版本及其相關安裝包分享(網盤鏈接,不需積分、不需驗證碼) 持續更新、持續分享

一、目的 最近因為kettle9.3的shim問題看了好多博客,都沒有網盤分享。后來有一位博主分享了kettle9.2的shim安裝包,已經很感謝他,但是是博客分享,下載還需要搞驗證碼下載碼之類的。 kettle9.2的shim安裝包下載好后,一…

圖數據庫_Neo4j基于docker服務版安裝_Neo4j Desktop桌面版安裝---Neo4j圖數據庫工作筆記0004

然后我們來看看如何用docker來安裝Neo4j community server 首先去執行docker pull neo4j:3.5.22-community 去拉取鏡像 然后執行命令就可以安裝了 可以用docker ps查看一下 看看暴露了哪些端口 然后再看一下訪問一下這個時候,要用IP地址了注意 然后再來看一下安裝Desktop 去下…

Sigmastar SSC8826Q 2K行車記錄儀解決方案

一、方案描述 行車記錄儀是智能輔助汽車駕駛,和管理行車生活的車聯網智能終端設備,利用智能芯片處理器、GPS定位、網絡通信、自動控制等技術,將與行車生活有關的各項數據有機地結合在一起。 行車記錄儀如今已經成了必不可少的車載用品之一&…

雙向-->帶頭-->循環鏈表

目錄 一、雙向帶頭循環鏈表概述 1.什么是雙向帶頭循環鏈表 2.雙向帶頭循環鏈表的優勢 3.雙向帶頭循環鏈表簡圖 二、雙向帶頭循環鏈表的增刪查改圖解及代碼實現 1.雙向帶頭循環鏈表的頭插 2.雙向帶頭循環鏈表的尾插 3.雙向帶頭循環鏈表的頭刪 4.雙向帶頭循環鏈表的尾刪…

ATF(TF-A) 威脅模型匯總

安全之安全(security)博客目錄導讀 目錄計劃如下,相關內容補充中,待完成后進行超鏈接,敬請期待,歡迎您的關注 1、通用威脅模型 2、SPMC威脅模型 3、EL3 SPMC威脅模型 4、fvp_r 平臺威脅模型 5、RSS-AP接口威脅模型 威脅建模是安全…

淺學實戰:探索PySpark實踐,解鎖大數據魔法!

文章目錄 Spark和PySpark概述1.1 Spark簡介1.2 PySpark簡介 二 基礎準備2.1 PySpark庫的安裝2.2 構建SparkContext對象2.3 SparkContext和SparkSession2.4 構建SparkSession對象2.5 PySpark的編程模型 三 數據輸入3.1 RDD對象3.2 Python數據容器轉RDD對象3.3 讀取文件轉RDD對象…

IDEA的常用設置,讓你更快速的編程

一、前言 在使用JetBrains的IntelliJ IDEA進行軟件開發時,了解和正確配置一些常用設置是非常重要的。IDEA的強大功能和定制性使得開發過程更加高效和舒適。 在本文中,我們將介紹一些常用的IDEA設置,幫助您更好地利用IDEA進行開發。這些設置包…