你不得不知道的HTTP協議和HTTPS協議

前言:“不是井裏沒有水,而是你挖的不夠深;不是成功來的慢,而是你努力的不夠狠。”
你好,我是夢陽辰!一起學習起來吧!

01.HTTP概述

HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是因特網上應用最爲廣泛的一種網絡傳輸協議,所有的WWW文件都必須遵守這個標準。是一個基於請求與響應的模式的,無狀態的網絡協議。是瀏覽器和服務器間最常用的通訊協議。HTTP協議是瀏覽器與服務期間的數據傳遞格式的一種約定,瀏覽器與服務器只要都遵循這個約定,就可以進行數據通訊了。

HTTP是一個基於TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。設計HTTP的初衷就是爲了提供一種發佈和接受HTML頁面的方法。

1.請求與響應
由瀏覽器向服務器發送數據,稱爲請求(request)。由服務器向瀏覽器發送數據,則成爲Response。

2.HTTP版本
客戶端若要向服務器發出請求,必須首先在他們之間創建一個TCP(Transfer Control Protocal,傳輸控制協議)連接。而當客戶端與服務器通訊結束後,TCP連接將被關閉。而這個鏈接就是基於HTTP協議的。

TCP連接的建立需要經過“三次握手”,TCP連接的關閉需要經過“四次通信”。
在這裏插入圖片描述
HTTP1.0版本
客戶端若要向服務器發出請求,必須首先在他們之間創建一個TCP連接。而當客戶端與服務器通訊結束後,TCP連接將被關閉。只有等待上一次連接請求所對應的響應被客戶端接收到後,客戶端纔可發出第二次請求。客戶端與服務器端每次建立和關閉連接是一個相對比較費事的過程,會嚴重影響客戶端和服務器的性能。(非持久連接)
在這裏插入圖片描述
HTTP1.1版本
是一種持久連接,在一個TCP連接上可以傳送多個HTTP請求和響應。減少了建立和關閉連接的消耗與延遲。一個包含有許多css,js,圖片等資源的頁面,其所發出的多個請求和響應可以在一個鏈接中傳輸。但每個單獨的頁面文件的請求和響應仍然需要使用各自的連接。

HTTP1.1還允許客戶端不用等待上一次請求結果返回,就可以發出下一次請求,但服務器端必須按照接收到客戶端請求的先後順序依次回送響應結果。爲了防止服務器主動將TCP連接關閉,在每一個請求中都攜帶了一個參數Connectiong,用於告訴服務器是否關閉連接。由客戶端發送了關閉TCP連接時,服務器纔會將TCP連接關閉。

在這裏插入圖片描述
HTTP1.0不支持Host請求屬性,web瀏覽器無法使用主機域名來明確表示要訪問服務器上的哪個web站點,這樣就無法使用web服務器在同一個IP地址和端口號上配置多個虛擬web站點。(使得硬件無法得到充分利用)而HTTP1.1支持Host請求屬性。

總結:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

02HTTP協議的組成

HTTP協議包括兩部分:請求協議與響應協議,分別用於制定請求與響應信息的格式。

1.請求協議
在學習請求協議前瞭解一下URL和URI.
URL:(Uniform Resource Locator)統一資源定位符,是互聯網上標準資源的地址。可以在全羣範圍內唯一的確定一個資源。

URI:統一資源標識符,用於標識一個資源的名稱。通過這種名稱命名的資源可以被互聯網定位和訪問。

請求協議規定:請求的信息格式包括四部分:請求行,請求報頭,空白行,與請求正文。
請求行:
請求報頭:
空白行:
請求正文:
在這裏插入圖片描述

2.響應協議

3.狀態碼
當進行web應用訪問時,經常會看到一些4開頭或5開頭的提示信息頁面。這些就是HTTP協議制定的。讓服務器傳遞給瀏覽器的狀態碼。表示服務器對當前請求的處理狀態。

2開頭:表示請求與響應成功。常見的狀態碼200
4開頭:表示請求錯誤。其中常見的狀態碼是404
5開頭:表示服務端錯誤。常見的狀態碼:500

4.GET和POST請求方式
HTTP協議規定,瀏覽器向服務器發送數據提交請求的提交方式有8種。但GET與POST請求最常用。

GET請求
由於GET請求會將請求的所攜帶的參數作爲請求URL中的一部分出現,所以請求參數會顯示在地址欄。這導致了GET的三點不足。

參數值只能是字符串,而不能是其他類型。
可以攜帶的數據量小。
數據安全性低。

但是:GET請求有個很重要的特徵:客戶端一旦接收到“服務器向GET請求發送的響應”後,瀏覽器會自動緩存響應。當客戶端再次進行相同請求提交時,將直接讀取本地瀏覽器緩存中數據,而不再向服務端真正發送數據。讓用戶感覺服務端的響應很快,提升用戶體驗,減輕了服務器壓力。

POST請求
POST請求會將請求所攜帶的數據已請求正文的形式出現。
數據類型可以是任意 類型,還可以是聲音,圖片,視頻等。
可以攜帶的數據量大。
安全性高。
在這裏插入圖片描述
爲什麼要設計爲GET和POST請求呢?

第一:GET請求的目的一般是客戶端要從服務端下載資源。發送相同的請求就代表要下載相同的資源。如果已經被下載了,就無需再下載了。

POST請求的目的一般是客戶端要向服務端上傳資源。對於向服務端上傳資源後相應的結果,瀏覽器是無需緩存的。

第二:兩種提交方式的比較難易程度是不同的。
GET提交方式的請求只包含請求行,請求頭與空行三部分。所以第二次請求與前一次請求是否相同,瀏覽器很好做出比較。
POST提交方式所包含的數據量比較大,主要體現在請求正文內容多。對於POST提交,是否是相同請求的提交不好比較。

5.默認請求的提交方式
瀏覽器向服務器請求的方法常見的有五種。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

03.HTTPS協議

超文本傳輸安全協議(英語:Hypertext Transfer Protocol Secure,縮寫:HTTPS,常稱爲HTTP over TLS,HTTP over SSL或HTTP Secure)是一種網絡安全傳輸協議。具體介紹以前先來介紹一下以前常見的HTTP,HTTP就是我們平時瀏覽網頁時候使用的一種協議。HTTP協議傳輸的數據都是未加密的,也就是明文,因此使用HTTP協議傳輸隱私信息非常不安全。HTTP使用80端口通訊,而HTTPS佔用443端口通訊。在計算機網絡上,HTTPS經由超文本傳輸協議(HTTP)進行通信,但利用SSL/TLS來加密數據包。HTTPS開發的主要目的,是提供對網絡服務器的身份認證,保護交換數據的隱私與完整性。這個協議由網景公司(Netscape)在1994年首次提出,隨後擴展到互聯網上。

HTTPS協議和HTTP協議的區別:
https協議需要到ca申請證書,一般免費證書很少,需要交費。
http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,後者是443。
http的連接很簡單,是無狀態的 。
HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議, 要比http協議安全。
在這裏插入圖片描述
SSL 證書
從前面我們可以瞭解到HTTPS核心的一個部分是數據傳輸之前的握手,握手過程中確定了數據加密的密碼。在握手過程中,網站會向瀏覽器發送SSL證書,SSL證書和我們日常用的身份證類似,是一個支持HTTPS網站的身份證明,SSL證書裏面包含了網站的域名,證書有效期,證書的頒發機構以及用於加密傳輸密碼的公鑰等信息,由於公鑰加密的密碼只能被在申請證書時生成的私鑰解密,因此瀏覽器在生成密碼之前需要先覈對當前訪問的域名與證書上綁定的域名是否一致,同時還要對證書的頒發機構進行驗證,如果驗證失敗瀏覽器會給出證書錯誤的提示。在這一部分我將對SSL證書的驗證過程以及個人用戶在訪問HTTPS網站時,對SSL證書的使用需要注意哪些安全方面的問題進行描述。

不走心的努力,都是在敷衍自己!你要堅信所有現在越不過去的坎,將來總有一天會當成笑話說出來。

關注公衆號【輕鬆玩編程】回覆關鍵字“電子書”,“計算機資源”,“Java從入門到進階”,”JavaScript教程“,“算法”,“Python學習資源”,“人工智能”等即可獲取學習資源。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章