HTTP協議和HTTPS協議

2022-04-01 00:44:57 字數 3498 閱讀 5337

持續性連線(長連線),傳送請求之後一段時間裡獲得持續連線,之後的請求可以通過該鏈結持續傳送,並且不侷限於同一頁面,只要是對同一伺服器請求即可。

1.1預設流水線(管道)方式:在收到響應報文之前,可以持續傳送請求報文,這樣所有的請求只用乙個rtt。

post不支援流水線,如重新整理頁面就會被提示重定向。get 支援流水線方式。

請求行: 請求方法  url  版本號

首部行: 首部字段:value  (可以有若干項,資訊最豐富)

實體主體: 儲存資源資訊(請求的資訊),請求報文中一般不用,響應報文也有可能不用。

get : 從伺服器請求指定頁的資訊,並返回實體主體。

post : 向伺服器提交資料,並進行處理。

head : 類似於get,但只獲得響應報文頭資訊。

put : 從客戶端向伺服器傳送的資料取代指定的文件的內容。

delete : 請求伺服器刪除指定的頁面。

connect : http/1.1協議中預留給能夠將連線改為管道方式的**伺服器。

options : 允許客戶端檢視伺服器的效能。

trace : 回顯伺服器收到的請求,主要用於測試或診斷。

首部行有四種型別

通用首部:請求報文和響應報文兩方都會使用的首部。

響應首部:響應報文時使用的首部。補充了響應的附加內容,也會要求客戶端附加額外的內容資訊。

實體首部:針對請求報文和響應報文的實體部分使用的首部。補充了資源內容更新時間等與實體有關的資訊。

http/1.1規範定義的首部

不在http/1.1規範定義的首部

狀態行: 版本號 ,狀態碼,短語

首部行:

實體主體:存放表單資料

1xx : 通知資訊,如請求收到了,或者正在處理。

2xx : 表示成功,請求正常處理完畢。

3xx :重定向狀態,需要附加操作以完成請求。

4xx : 客戶端錯誤,請求無法正常處理,如請求的資源不存在。

5xx : 伺服器內部錯誤,處理請求時出錯。

post 比 get 更加安全,get請求是明文傳輸。

post 比 get 傳輸的資料量更大,因為get受限於瀏覽器位址列的字元數量限制,而post則不受限制。

post 可以使用更多資料型別,而get 只能使用 ascii碼。

post 比 get 慢,因為post先傳送頭部資訊,再傳送資料。相當於三次握手2個rtt和乙個傳送資料(實體主體)的rtt,乙個三個rtt, 而get無實體主體,資料都在url中所以只需三次握手2個rtt, get/post = 2/3。

tcp 位於運輸層,提供可靠的位元組流服務。

客戶端傳送乙個syn報文,設syn = 1,並隨機設定乙個數字放置在序號seq中。

伺服器傳送允許連線的報文,syn = 1, ack = 1, 把確認號ack設為 收到的報文中的序號seq + 1。伺服器在隨機設定乙個序號seq值。

客戶端收到伺服器傳送的確認報文 設定 syn = 0,ack = 1,在之後的傳輸中syn = 0,ack = 1。

客戶端有7種狀態,伺服器有7種狀態,他們會在不同狀態之間迴圈。

第二次握手之後客戶端進入established(已建立連線)狀態就可已傳送資料了,所以第三次握手可以攜帶資料。

fin = 1 ,終止報文,表示報文傳送方資料傳送完畢。注意:fin 報文是不帶資料的,但是它會消耗乙個序號。

確認報文 傳送,伺服器進入close-wait狀態。此時客戶端到伺服器方向的連線斷開了,而伺服器到客戶端的連線還沒斷開,如果伺服器給客戶端傳送資料那麼客戶端還要接受該資料

伺服器再次傳送終止報文fin = 1。這是伺服器請求斷開連線。

客戶端收到終止報文後傳送確認報文給伺服器,並進入定時等待狀態time-wait,時間到後關閉連線,伺服器收到之後立刻關閉連線。

對稱加密

非對稱加密

數字簽名:為防止公鑰被替換

安全的http協議,使用443埠

ssl套接字在應用層http和運輸層之間,ssl套接字接收到應用層資料加密後傳遞給tcp套接字。接收方一樣可以從tcp套接字中讀取後解密在提交個應用層。

https採用對稱加密和非對稱加密混合加密方式。客戶端向伺服器端發起ssl連線請求

伺服器把公鑰傳送給客戶端,並且伺服器端儲存著唯一的私鑰(存在隱患,可以使用數字證書解決)

客戶端用公鑰對雙方通訊的對稱秘鑰進行加密,並傳送給伺服器

伺服器利用自己唯一的私鑰對客戶端發來的對稱秘鑰進行解密

進行資料傳輸,伺服器和客戶端雙方用公有的相同的對稱秘鑰對資料進行加密解密,可以保證在資料收發過程中的安全,即是第三方獲得資料報,也無法對其進行加密,解密和篡改。

tcp連線建立,客戶端傳送請求報文開始ssl通訊,報文中包含客戶端支援的ssl版本,加密元件列表(幾組可以使用的加密演算法及金鑰長度等)。

伺服器可進行ssl通訊時會傳送響應報文,報文中包括選擇的乙個加密演算法和秘鑰長度。

之後伺服器傳送包含公開金鑰證書的報文你給客戶端。(伺服器要已經在ca做了認證)

最後伺服器傳送報文通知客戶端第一次ssl握手結束。

ssl第一次握手結束後,客戶端會用伺服器的公開金鑰加密 共享秘鑰 並傳輸給伺服器.

接著客戶端會繼承傳送報文提示伺服器,在此報文以後的通訊將使用之前傳送過去的  共享秘鑰  進行加密處理。

最後客戶端傳送結束報文。 (第二次ssl握手結束) 

伺服器同樣傳送報文提示客戶端,在此報文以後的通訊將使用客戶端之前傳送過來的  共享秘鑰  進行加密處理。

伺服器傳送結束報文。 (第三次ssl握手結束) 

伺服器和客戶端的結束報文交換完後,ssl連線建立完成,開始http請求

https協議需要到ca申請證書,一般免費證書很少,需要交費。     

http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。     

http和https使用的是完全不同的連線方式用的埠也不一樣,前者是80,後者是443。   

https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議, 要比http協議安全。

HTTP協議和HTTPS協議

最近http協議,https協議,ssl協議,數字簽名這些老是在眼前跳,但是很多都忘記了,重溫了一把,總結一下 1.http協議 http協議是超文字傳輸協議,埠為80,屬於應用層協議,由請求和響應構成,永遠都是客戶端傳送請求,服務端回送響應。這樣就限制了使用http協議無法實現在客戶端沒有發起請求...

HTTP協議和HTTPS協議

http 超文字傳輸協議 是乙個簡單的請求 響應協議,它通常基於tcp之上 http請求中的常用訊息頭 乙個http響應代表伺服器向客戶端回送的資料,它包括 乙個狀態頭 若干個訊息頭 以及實體內容 1 建立tcp ip連線,客戶端與伺服器通過socket三次握手進行連線 2 客戶端向服務端發起htt...

HTTP協議和HTTPS協議

在我們去訪問乙個 的時候我們可以觀察位址的url,舉例 這是乙個https協議。可以觀察下前面的鎖符號。觀察到的資訊可以看初https給我們提供了訪問資料的安全性。而對於http協議我們可以去了解一下。http協議是一種基於文字的傳輸協議,位於網路模型的應用層。http協議通過伺服器和客戶端的應答請...