應用層協議【HTTP和HTTPS】

1.概念

1.1 協議

協議是指在計算機通信和網絡通信中,為了實現數據交換而建立的一套規則、約定或者標準。它定義了通信雙方之間的通信格式、傳輸方式、數據的含義、錯誤處理等細節,從而確保通信的可靠性、有效性和安全性。

>1在計算機網絡中,協議通常分為兩種主要類型:

1. **通信協議(Communication Protocol):** 這類協議定義了計算機之間或計算機與設備之間的通信規則,以確保數據的可靠傳輸。例如,TCP(傳輸控制協議)和UDP(用戶數據報協議)是兩種常見的網絡層協議,用于在互聯網上進行數據傳輸。

2. **應用層協議(Application Layer Protocol):** 這類協議建立在通信協議之上,用于定義應用程序之間的通信規則。應用層協議通常針對特定的應用領域或服務,例如HTTP(超文本傳輸協議)用于在Web瀏覽器和服務器之間傳輸超文本文檔,SMTP(簡單郵件傳輸協議)用于電子郵件的傳輸等。

協議在計算機通信中起著至關重要的作用,它們使得不同系統和設備能夠相互通信并交換數據,從而構建了整個互聯網和各種網絡服務。

1.2 HTTP

HTTP(超文本傳輸協議)是一種用于傳輸超文本文檔(例如HTML文件)的應用層協議,是互聯網上最常用的協議之一。它建立在TCP/IP協議之上,用于客戶端和服務器之間的通信。

HTTP的工作原理如下:

1. **客戶端發送請求:** 客戶端(例如Web瀏覽器)向服務器發送HTTP請求,請求獲取或傳輸特定資源,例如網頁、圖像、視頻等。

2. **服務器處理請求:** 服務器接收到客戶端的請求后,根據請求的內容和類型進行處理。服務器可能會讀取文件、運行腳本、查詢數據庫等操作。

3. **服務器發送響應:** 服務器處理完請求后,將所請求的資源以及相關的響應信息發送回客戶端。

4. **客戶端接收響應:** 客戶端接收到服務器發送的響應后,根據響應的內容進行相應的處理,例如渲染網頁、顯示圖像、播放視頻等。

HTTP通信的特點包括:

- **簡單性:** HTTP的基本功能和操作相對簡單,易于實現和理解。
- **靈活性:** HTTP允許傳輸各種類型的數據,包括文本、圖像、音頻、視頻等。
- **無狀態性:** HTTP是一種無狀態協議,每個請求都是獨立的,服務器不會在多次請求之間保持任何狀態信息。
- **連接性:** HTTP默認使用短連接,即每個請求/響應周期都會建立一個新的TCP連接,但也可以通過HTTP持久連接來重用連接以提高性能。

HTTP協議的版本有多個,其中最常見的是HTTP/1.1和HTTP/2,而HTTP/3則是基于UDP的新一代HTTP協議。

HTTP傳輸的弊端:

1. **不安全性**:HTTP 傳輸的數據并沒有加密,容易被網絡中的攻擊者截獲、篡改或者竊取,導致數據泄露和安全問題。

2. **性能瓶頸**:HTTP 協議中每次請求和響應都需要建立 TCP 連接,這會增加額外的網絡延遲和資源開銷。而且 HTTP 的請求和響應頭部信息較多,還會占用帶寬。

3. **可擴展性差**:HTTP 協議本身的設計比較簡單,只支持基本的請求和響應方式,難以滿足復雜的應用需求。此外,HTTP 協議在傳輸二進制數據等其他格式的數據時,需要對這些數據進行 Base64 編碼,這會增加額外的傳輸開銷。

4. **無法支持實時性交互**:HTTP 是一種請求-響應模式,客戶端需要不斷地發送請求來獲取最新的數據,這會導致實時性較差,難以支持實時性交互。

為了解決 HTTP 協議的這些弊端,人們已經提出了許多新的協議和技術,如 HTTPS、SPDY、HTTP/2、WebSocket 等,這些協議和技術可以提供更好的安全性、性能和可擴展性,從而滿足不同應用場景的需求。

1.3 HTPS

HTTPS的工作原理

HTTPS(HyperText Transfer Protocol Secure)是一種通過計算機網絡進行安全通信的協議。它是基于HTTP協議的加密版本,通過使用TLS/SSL協議進行數據加密,確保通信的安全性和隱私性。以下是HTTPS的工作原理:

1. **建立連接:** 客戶端(例如瀏覽器)向服務器發送連接請求,請求建立安全連接。

2. **握手階段:** 在這個階段,TLS/SSL協議用于進行握手操作,以確保通信的安全性。這包括以下步驟:
? ?- 客戶端發送支持的加密算法列表和其他必要的信息給服務器。
? ?- 服務器選擇一個加密算法并發送其證書(包含公鑰)給客戶端。
? ?- 客戶端驗證服務器證書的有效性,并生成一個用于對稱加密的隨機密鑰,然后使用服務器的公鑰加密該密鑰,并發送給服務器。
? ?- 服務器使用自己的私鑰解密客戶端發送的隨機密鑰。

3. **加密通信:** 一旦握手成功,客戶端和服務器之間的通信將使用雙方協商好的對稱加密密鑰進行加密和解密。這確保了數據在傳輸過程中的機密性。

4. **數據傳輸:** 在建立安全連接后,客戶端和服務器可以安全地傳輸數據,所有傳輸的數據都會被加密。

5. **連接關閉:** 當通信結束時,客戶端或服務器可以選擇關閉連接。

總的來說,HTTPS通過使用加密技術確保了數據在傳輸過程中的安全性,防止了數據被竊取或篡改的風險。這使得用戶可以放心地在互聯網上進行敏感數據的傳輸,例如登錄憑證、支付信息等。

HTTPS通信特點

HTTPS通信的特點包括:

1. **安全性:** HTTPS使用TLS/SSL協議對數據進行加密,因此可以有效防止數據在傳輸過程中被竊取或篡改。這種加密技術保護了用戶的隱私和敏感信息,使其在互聯網上傳輸時更加安全。

2. **驗證身份:** 在握手階段,服務器會向客戶端發送其證書,證書包含了服務器的公鑰和相關信息。客戶端可以驗證證書的有效性,確保其連接的是預期的服務器,而不是中間人攻擊或偽裝的服務器。

3. **完整性保護:** HTTPS不僅對數據進行加密,還使用消息認證碼(MAC)來保護數據的完整性。這意味著即使數據被竊取,攻擊者也無法篡改數據,因為篡改后的數據在解密時會被檢測到。

4. **信任度:** HTTPS通常使用由權威機構頒發的數字證書,這些證書通過了嚴格的身份驗證,客戶端可以信任這些證書。這增加了用戶對連接的信任度,減少了受到釣魚攻擊等威脅的風險。

5. **SEO優化:** 谷歌等搜索引擎對采用HTTPS協議的網站給予更高的排名,這也促使更多網站采用HTTPS,提升了整個網絡環境的安全性。

綜上所述,HTTPS通信的特點使得其成為互聯網上安全傳輸敏感信息的首選協議,保護用戶隱私,防止數據泄露和篡改。

HTTPS傳輸的弊端

HTTPS作為一種安全通信協議,在保護用戶數據方面有著明顯的優勢,但也存在一些弊端:

1. **性能開銷:** HTTPS通信涉及加密和解密操作,這會增加服務器和客戶端的計算負擔,導致一定程度的性能損失。尤其是在服務器端,加密操作可能對服務器的響應時間產生影響。

2. **證書管理成本:** 為了使用HTTPS,網站需要獲取和維護數字證書。證書的獲取和管理可能需要費用,尤其是對于企業級網站來說,還需要定期更新證書,這增加了運維成本。

3. **部署復雜性:** 配置和部署HTTPS通常比HTTP更為復雜,特別是對于較大規模的網站或復雜的網絡架構。需要對服務器、負載均衡器等進行適當的配置和調整。

4. **可能存在中間人攻擊:** 盡管HTTPS可以防止數據被竊取或篡改,但仍然存在中間人攻擊的可能性。如果攻擊者能夠獲取有效的數字證書或以其他方式介入通信,他們可能會中斷或篡改通信。

5. **不可緩存性:** HTTPS通信的內容通常不能被中間節點(例如代理服務器或內容分發網絡)緩存,這可能影響到內容分發和加速,增加了網絡傳輸的負擔。

雖然HTTPS有一些弊端,但綜合考慮其安全性和保護用戶隱私的重要性,大多數網站仍然選擇采用HTTPS來保護數據傳輸的安全。隨著技術的發展和優化,一些弊端可能會逐漸減少。

2.HTTPS和HTTP的區別

3.資源的使用情況

HTTP使用TCP三次握手建立連接,客戶端和服務器需要交換3個包(具體可查看馬海祥博客《HTTP服務的七層架構技術解析及運用》的相關介紹);HTTPS除了TCP的三個包,還要加上ssl握手需要的9個包,所以一共是12個包。

HTTP建立連接,按照下面鏈接中針對Computer Science House的測試,是114毫秒;HTTPS建立連接,耗費436毫秒,ssl部分花費322毫秒,包括網絡延時和ssl本身加解密的開銷(服務器根據客戶端的信息確定是否需要生成新的主密鑰;服務器回復該主密鑰,并返回給客戶端一個用主密鑰認證的信息;服務器向客戶端請求數字簽名和公開密鑰)。

當SSL連接建立后,之后的加密方式就變成了3DES等對于CPU負荷較輕的對稱加密方式,相對前面SSL建立連接時的非對稱加密方式,對稱加密方式對CPU的負荷基本可以忽略不記,所以問題就來了,如果頻繁的重建ssl的session,對于服務器性能的影響將會是致命的,盡管打開HTTPS保活可以緩解單個連接的性能問題,但是對于并發訪問用戶數極多的大型網站,基于負荷分擔的獨立的SSL termination proxy就顯得必不可少了,Web服務放在SSL termination proxy之后,SSL termination proxy既可以是基于硬件的,譬如F5;也可以是基于軟件的,譬如維基百科用到的就是Nginx。

那采用HTTPS后,到底會多用多少服務器資源,2010年1月Gmail切換到完全使用HTTPS, 前端處理SSL機器的CPU負荷增加不超過1%,每個連接的內存消耗少于20KB,網絡流量增加少于2%,由于Gmail應該是使用N臺服務器分布式處理,所以CPU負荷的數據并不具有太多的參考意義,每個連接內存消耗和網絡流量數據有參考意義,這篇文章中還列出了單核每秒大概處理1500次握手(針對1024-bit 的 RSA),這個數據很有參考意義。

Heartbleed這個被稱作史上最大的網絡安全漏洞,想必很多人都有所耳聞,Heartbleed之所以能夠出現,其實和我們這個問題關系還不小,前面我們談到了頻繁重建SSL/TLS的session對于服務器影響是致命的,所以,聰明的RFC在2012年提出了RFC6520 TLS的心跳擴展,這個協議本身是簡單和完美的,通過在客戶端和服務器之間來回發送心跳的請求和應答,保活TLS session,減少重建TLS的session的性能開銷,令人遺憾的是,openssl在實現這個心跳擴展時,犯了一個低級的錯誤,沒有對收到的心跳請求進行長度檢查,直接根據心跳請求長度拷貝數據區,導致簡單的心跳應答中可能包含了服務器端的核心數據區內容,用戶名,密碼,信用卡信息,甚至服務器的私有密鑰都有可能泄露。

4.網站的搭建需不需使用HTTPS

從難易程度來講,HTTP的搭建肯定比HTTPS簡單的多,但是如果你的網站涉及交易支付、在線購物等建議網站應該使用 HTTPS 來保護數據傳輸的安全性。HTTPS 是基于 HTTP 協議之上的一種安全協議,通過使用 SSL/TLS 協議來加密數據傳輸,從而保證了數據傳輸的機密性、完整性和可信性。

在您的網站涉及到用戶信息的收集、交易支付、在線購物等,那么使用 HTTPS 協議將更為重要。因為在 HTTP 協議下,所有數據都是明文傳輸的,如果被黑客截獲,可能會導致用戶賬號密碼、銀行卡信息等敏感數據泄露,給用戶造成不必要的損失。

此外,現在許多搜索引擎和瀏覽器都更加重視網站的安全性,推薦使用 HTTPS。例如,Google 在其搜索引擎結果中標注了非 HTTPS 網站為“不安全”,使用 HTTPS 的網站則會獲得優先顯示和更高的排名。

雖然使用 HTTPS 要比 HTTP 更加復雜,需要配置證書、升級服務器等,但是它可以有效地保護用戶數據傳輸的安全性,有助于提高網站的信譽度和用戶體驗。

5.搭建HTTPS

搭建 HTTPS,您需要完成以下步驟:

1. **獲取 SSL 證書**:您需要從數字證書認證機構(CA)或者自簽名方式獲得 SSL 證書。CA 是一個可信的第三方機構,可以對您的身份和網站進行驗證,并頒發 SSL 證書。自簽名證書是自己制作的證書,不需要經過 CA 的認證,但是它不能被大多數瀏覽器所信任。在選擇證書時,您需要考慮到其安全性、價格和可信度等因素。

2. **配置服務器**:您需要在 Web 服務器上進行相應的配置,以便支持 HTTPS 協議。對于 Apache 和 Nginx 等常見的 Web 服務器,您需要修改配置文件,以啟用 HTTPS 支持,并指定 SSL 證書的位置。

3. **安裝 SSL 證書**:您需要將 SSL 證書安裝到 Web 服務器中,并配置好相應的密鑰和證書鏈。SSL 證書一般包括公鑰和私鑰兩部分,私鑰需要妥善保管,不要泄露給他人。

4. **測試 HTTPS 連接**:在完成上述步驟之后,您需要測試 HTTPS 連接是否正常工作。您可以使用瀏覽器來訪問網站,并檢查瀏覽器地址欄中是否顯示了 HTTPS 協議和 SSL 證書相關信息。

需要注意的是,在搭建 HTTPS 時,您需要考慮到服務器的硬件性能、帶寬、證書有效期、證書更新等因素。同時,您也需要及時升級 Web 服務器軟件和 SSL/TLS 協議,以保證數據傳輸的安全性。

6.免費的證書推薦

推薦幾個免費的 SSL 證書頒發機構:

1. **Let's Encrypt**:Let's Encrypt 提供了免費的 SSL/TLS 證書,其證書受到大多數現代瀏覽器的信任。您可以使用 Certbot 工具來自動化證書的獲取和配置過程,極大地簡化了搭建 HTTPS 的流程。

2. **Cloudflare**:Cloudflare 提供了免費的基本 SSL 證書,可以通過 Cloudflare 的 CDN 服務來實現 HTTPS 加速和安全性增強。其免費證書支持 SNI 技術,適用于大多數網站。

3. **ZeroSSL**:ZeroSSL 提供了簡單易用的免費 SSL 證書生成工具,您可以通過其在線工具來生成免費的 SSL 證書。它也提供了 API 和 ACME 協議的支持,方便自動化證書的獲取和更新。

4. **SSL For Free**:SSL For Free 提供了免費的 SSL 證書,支持通配符證書和多域名證書。您可以通過其在線工具來獲取證書,并提供了相應的安裝說明。

這些免費的 SSL 證書頒發機構都提供了簡單易用的方式來獲取和配置 SSL 證書,可以幫助您快速實現網站的 HTTPS 加密,提升網站的安全性和用戶信任度。

7.每期一問

上期答案

struct ListNode* reverseList(struct ListNode* head) {//判斷傳入的值為空或者只有一個節點直接返回if(head == NULL || head->next == NULL){return head;}struct ListNode* p1;//定義三個指針struct ListNode* p2;struct ListNode* p3;p1 = NULL;p2 = head;p3 = head->next;while(p2){//翻轉指針p2->next = p1;p1 = p2;p2 = p3;if(p3 != NULL){p3 = p3->next;}}return p1;
}

本期問題:. - 力扣(LeetCode)

本期內容就這些,我們下期再見!

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

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

相關文章

Python簡易圖書管理系統重構

在本篇課文中,我們將使用Python語言結合MySQL數據庫,從零開始構建一個簡單的圖書管理系統。該系統旨在幫助圖書館管理員輕松管理圖書的借閱、歸還以及查詢圖書信息等日常操作。我們將分步介紹需求分析、數據庫設計、環境搭建、功能實現等關鍵環節&#x…

注冊講堂 | 體外診斷試劑分類目錄的變化

5月11日,千呼萬喚的《體外診斷試劑分類目錄》(2024年第58號)終于發布! 前世今生 2013年:《6840 體外診斷試劑分類子目錄(2013版)》(以下簡稱2013版目錄) 2017年&#xff…

蘋果永久版安裝PD虛擬機:Parallels Desktop 19 一鍵激活版

Parallels Desktop 19是一款功能強大的虛擬機軟件,專為Mac用戶設計,允許用戶在同一臺Mac電腦上同時運行Windows、Linux等多個操作系統,而無需額外的硬件設備。 下載地址:https://www.macz.com/mac/9581.html?idOTI2NjQ5Jl8mMjcuM…

Kubernetes入門:核心概念

集群架構與組件 一個kubernetes集群主要是由控制節點(master)、工作節點(node)構成,每個節點上都會安裝不同的組件。 master:集群的控制平面,負責集群的決策 ( 管理 ) api-server : 資源操作的唯一入口,接收用戶輸入的命令&…

vue3 項目中 前端實現下載模板 csv文件

做項目時遇到讓前端實現模板下載功能&#xff0c;第一次碰到這種需求&#xff0c;記錄一下。 下載csv 模板&#xff1a; <el-button type"primary" click"download(data/CSVXX.csv)">下載模板</el-button> const download (url) > {con…

文本控件Text Control示例: 將圖像插入 TX 的各種方法

TX Text Control 是一款功能類似于 MS Word 的文字處理控件&#xff0c;包括文檔創建、編輯、打印、郵件合并、格式轉換、拆分合并、導入導出、批量生成等功能。廣泛應用于企業文檔管理&#xff0c;網站內容發布&#xff0c;電子病歷中病案模板創建、病歷書寫、修改歷史、連續打…

在Linux上面部署ELK

注明&#xff1a;一下的軟件需要自己準備 一、準備環境&#xff1a; 1.兩臺elasticsearch主機4G內存 2.兩臺elasticsearch配置主機名node1和node2(可以省略) #vim /etc/hostname #reboot 3. 兩臺elasticsearch配置hosts文件 #vim /etc/hosts 192.168.1.1 node1 192…

RTMP低延遲推流

人總是需要壓力才能進步, 最近有個項目, 需要我在RK3568上, 推流到公網, 最大程度的降低延遲. 廢話不多說, 先直接看效果: 數據經過WiFi發送到Inenter的SRS服務器, 再通過網頁拉流的. 因為是打金任務, 所以逼了自己一把, 把RTMP推流好好捋一遍. 先說說任務目標, 首先是MPP編碼…

【Altium】AD-檢查原理圖中元器件未連接的Passive Pin

1、 文檔目標 如何讓原理圖編譯時找出元器件上未連接的Passive Pin 2、 問題場景 當引腳屬性&#xff08;Pin type&#xff09;為passive時&#xff0c;原理圖編譯的默認規則是不會去檢查它們是否有連接的。在實際設計過程中&#xff0c;經常會有導線虛連&#xff0c;漏連的事…

醫療傳感器種類不斷增多 市場規模逐漸擴大

醫療傳感器種類不斷增多 市場規模逐漸擴大 醫療傳感器是將人體的生理信息轉換為電信息的變換裝置。醫療傳感器具有高靈敏度、高精度、實時監測等優點&#xff0c;可以檢測佩戴者的心率、呼吸頻率、活動量等&#xff0c;從而更加準確地了解身體情況。   經過多年發展&#…

【極簡】docker常用操作

鏡像images是靜態的 容器container是動態的&#xff0c;是基于鏡像的&#xff0c;類似于一個進程。 查看docker images&#xff1a; docker images 或者docker image ls 查看docker container情況&#xff1a;docker ps -a&#xff0c;-a意思是--all 運行一個container: doc…

MySQL not in不等于找不到null的數據

在使用MySQL的NOT IN語句時&#xff0c;如果找不到NULL值&#xff0c;可能是因為NULL值在比較中具有特殊性質。NULL值不等于任何其他值&#xff0c;包括它自己。因此&#xff0c;使用NOT IN語句時&#xff0c;如果列表中包含NULL值&#xff0c;則查詢不會返回任何結果。 解決此…

有意思的數組

var nums [1,2,3,6] const nums1 [6, 8, 7, 10, 9];/* 數組合并————push */ var n nums.push(...nums1); // 將列表 nums1 拼接到 nums 之后 n //n會是nums的長度 > 9 nums //也push了 > (9) [1, 2, 3, 6, 6, 8, 7, 10, 9]/* 數組合并————concat*/ var arr0…

數字水印 | 奇異值分解 SVD 的 Python 代碼實現

&#x1f951;原理&#xff1a;數字水印 | 奇異值分解 SVD 的定義、原理及性質 &#x1f951;參考&#xff1a;Python 機器學習筆記&#xff1a;奇異值分解&#xff08;SVD&#xff09;算法 正文 對于一個圖像矩陣&#xff0c;我們總可以將其分解為以下形式&#xff1a; 通過…

使用API有效率地管理Dynadot域名,默認將域名隱形轉發至其他界面

關于Dynadot Dynadot是通過ICANN認證的域名注冊商&#xff0c;自2002年成立以來&#xff0c;服務于全球108個國家和地區的客戶&#xff0c;為數以萬計的客戶提供簡潔&#xff0c;優惠&#xff0c;安全的域名注冊以及管理服務。 Dynadot平臺操作教程索引&#xff08;包括域名郵…

英譯漢早操練-(十九)

hello,are you OK? 生活如此美好&#xff0c;周四了&#xff0c;你還好嗎&#xff1f;堅持了快一周了&#xff0c;是不是最后沖刺一把就開啟周末的美好生活了。 今天我們學習這篇經濟學人文章&#xff1a; 題目是&#xff1a;Banks, at least, are making money from a turbul…

【大模型微調】一文掌握7種大模型微調的方法

本篇文章深入分析了大型模型微調的基本理念和多樣化技術&#xff0c;細致介紹了LoRA、適配器調整(Adapter Tuning)、前綴調整(Prefix Tuning)等多個微調方法。詳細討論了每一種策略的基本原則、主要優點以及適宜應用場景&#xff0c;使得讀者可以依據特定的應用要求和計算資源限…

Linux | VMware安裝鏡像指南(Windows、IOS、麒麟)

文章目錄 虛擬機安裝推薦 虛擬機安裝推薦 macOS系統&#xff1a;macOS虛擬機安裝全過程&#xff08;VMware&#xff09;麒麟系統&#xff1a;麒麟系統虛擬機安裝&#xff08;VMware&#xff09;VMtools工具解決方案&#xff1a; [第一步](https://blog.csdn.net/weixin_421187…

openGauss一主兩備集群異常斷電后不能正常啟動的解決過程簡記

背景 因異常斷電后opengauss 5.0.0版本&#xff0c;一主兩備集群啟動失敗。 報錯不是主機&#xff0c;由于當時沒有截圖&#xff0c;查看日志后發現報錯是&#xff1a; 定位過程 Day1 1. 嘗試用另外兩臺機器啟動每臺機器 發現都報錯自己不是主機&#xff0c;像極了唐僧被妖…