計算機網路基礎(HTTP和HTTPS的那點事)

2021-09-25 19:56:08 字數 3239 閱讀 9601

目錄

http簡介

http特點

http請求結構

http響應結構

請求響應的步驟

狀態碼普及

get和post的區別

cookie和session

https(超文字傳輸安全協議)

ssl(security socket layer)安全套接層

https資料傳輸過程

在資料交換前會進行一次握手確定資訊

http與https的區別

https基礎上的更安全方案

http(超文字傳輸協議)協議是屬於應用層的協議,基於請求-響應模式的無狀態的應用層協議,基於tcp的連線方式,http1.1版本給出一種持續連線的方式keep-alive(長連線)。

它指定了客戶端可能傳送給伺服器什麼樣的訊息以及得到什麼樣的響應。請求和響應訊息的頭以ascii碼形式給出;而訊息內容則具有乙個類似mime的格式。這個簡單模型是早期web成功的有功之臣,因為它使得開發和部署是那麼的直截了當。

支援客戶/伺服器模式

簡單高效 (客戶端向伺服器請求介面的時候只需傳送請求方法【get、post、put、head等】和路徑,基於這種簡單,使得它很高效)

靈活(允許傳輸任意型別的資料物件)

無連線(每次連線只處理乙個請求,伺服器收到客戶端的請求,處理完請求,收到客戶端的應答後,斷開連線)

無狀態(協議對事物的處理沒有記憶能力,後續處理如果需要前面的資訊,則必須再次傳送)

直接**清晰明了

版本協議指http用那個版本的

直接**清晰明了,和請求的結構很像

客戶端連線web伺服器:瀏覽器與web伺服器的http埠(80)建立tcp套接字連線

客戶端向伺服器傳送http請求(請求報文)

伺服器接收請求,返回http響應(伺服器將客戶端請求的內容寫到tcp套接字,由客戶端讀取)

釋放連線tcp連線

客戶端解析html內容

1xx:指示資訊(請求已接受,繼續處理)

2xx:成功(請求成功接收)

3xx:重定向(完成請求需要更進一步操作)

4xx:客戶端錯誤(請求有語法錯誤或請求無法實現)

5xx:服務端錯誤(可能是伺服器介面出bug,伺服器不能實現合法請求)

http報文層:get請求資訊位於url、post

資料庫層面:get符合冪等性(對資料庫的一次操作或多次操作獲得的結果是一致的)和安全性(沒有改變資料庫中的資料),因為get操作對資料庫是查詢操作,所以不會改變資料庫;post不符合(post會改變資料庫)

其他:get請求引數可以被瀏覽器快取和儲存(比如收藏啥的),post不行

http請求是無狀態的,所以web可以通過cookie和session來儲存使用者的唯一標示

cookie:服務端發給客戶端的特殊資訊(使用者登入,服務端響應的時候把cookie放在響應頭里),以文字檔案形式存在客戶端的某處,客戶端每次向伺服器傳送請求時都會帶上這些資訊(放在請求頭),然後伺服器會解析請求頭里的cookie從而動態的獲取對應使用者的資訊返回。

session:和cookie不同,被儲存在伺服器端。程式要為某個請求建立session的時候。

流程:伺服器先檢查客戶端請求頭是否包含session id,若包含,說明之前建立過session,伺服器會根據session id吧session找出來拿出裡面的使用者資訊。沒有session id就建立乙個session,並生成乙個唯一的session id,session id會發給客戶端儲存。

session實現方式:

伺服器生成session id會通過cookie發給客戶端,客戶端下次把session id在cookie裡帶上。

url回寫方式,把session id寫在url裡。

以計算機網路通訊為目的的傳輸協議。在http的基礎上加上乙個ssl層來保護交換資料隱私和完整性,也就是安全版http

為網路通訊提供安全及資料完整性的一種安全協議,是作業系統對外的api,ssl3.0後更名為tls,它通過身份驗證和資料加密保證網路通訊的安全和資料的完整性。

http協議傳輸的資料其實就是一種形式的「裸奔」,隨便開個抓包工具,請求響應看的一清二楚。那麼https安全在**?

客戶端將支援的加密資訊演算法發到伺服器

伺服器選擇一種客戶端支援的加密演算法,ssl 協議的版本號,加密演算法的種類,隨機數以及其他相關資訊,以證書的形式(證書發布ca機構、證書有效期公鑰、所有者、簽名等)發回給客戶端

客戶端(瀏覽器)驗證證書的合法性:

證書是否過期,發行伺服器證書的ca 是否可靠,發行者證書的公鑰能否正確解開伺服器證書的「發行者的數字簽名」,伺服器證書上的網域名稱是否和伺服器的實際網域名稱相匹配。

客戶端會隨機生成一串密碼結合證書公鑰使用約定好的加密演算法加密,用約定好的hash計算握手訊息,並用生成的一串密碼對其加密傳送給伺服器

伺服器使用私鑰解密資訊確定密碼,使用密碼解密握手訊息驗證hash是否和客戶端一致,使用密碼加密響應資訊發回客戶端。

瀏覽器解密響應資訊,對訊息驗證,握手結束,之後用之前生成的隨機密碼和對稱演算法對互動資訊加密。

https密文傳輸,http明文傳輸

https使用443埠,http使用80埠

https是安全版的http = http  加密  認證  完整性保護

連線方式不同

https需要向ca申請證書

hsts(http strict transport security)國際網際網路工程組織ietf正在推行一種新的web安全協議

hsts的作用是強制客戶端(如瀏覽器)使用https與伺服器建立連線。

因為在重定向http跳https的時候,使用者其實還是使用了http有一定危險。

以上是對計算機網路基礎(http和https)的粗淺認識

目錄

計算機網路 HTTP

引子 前兩天看了 http 和 計算機網路 的第5章 運輸層 為了準確無誤地將資料送達目標處,tcp協議採用了 三次握手 three way handshaking 策略。三次握手 three way handshake 或三次聯絡。廣為流傳的譯名 三次 three way 並不準確。這裡的三次是指...

計算機網路 http

http,超文字傳輸協議hypertext transfer protocol。基於tcp,無狀態。http預設使用持續連線,但是也可以配置為使用非持續連線。持續連線就是指傳送請求,接收響應後,並不直接關閉tcp連線,再有下個http請求,還用這個tcp連線傳送 非持續連線就是傳送請求,接收響應後,...

計算機網路 HTTP

http的報文結構 http有兩類報文 請求報文和響應報文。它們的報文結構由三部分組成,分別為開始行 首部行和實體主體。開始行 用於區分是請求報文還是響應報文。首部行 用來說明瀏覽器 伺服器和報文主體的一些資訊 實體主體 在請求報文中一般都不用這個字段,響應報文中也可能沒有這個字段 在請求報文中,開...