HTTP與HTTPS


昨天在面試裏被問到了關於HTTP和HTTPS的問題,作爲一個計網的渣渣,只記得HTTP是超文本傳輸協議,基於TCP/IP,被問到HTTPS的時候腦子一片空白,只記得平常瀏覽器裏HTTPS好像說是安全,還是我太菜,至於HTTP能不能基於UDP,我只能跟着感覺走了,啊,估計是涼涼了

HTTP

首先,HTTP就是超文本傳輸協議,是我們平常使用Web的時候最基本的協議。他所要做的,從總體上看其實就是當客戶端想要訪問某一個頁面時,客戶端向服務器發送一個http request請求獲取相應的文件或者對象,服務器端收到請求後,會將對應的資源發送給客戶端,客戶端獲得資源後,用本地的瀏覽器將其顯示出來。

  • HTTP基於TCP,而不是UDP
    我們知道UDP是不可靠的連接,因爲他不會關心數據發送後,接收方是否有準確地接收到數據,他只管發送,但是對於HTTP來說,他是不允許丟包的,他需要依賴可靠的數據傳輸,所以HTTP是基於TCP,而不能基於UDP。
  • HTTP無狀態
    無狀態的意思就是HTTP不會保存歷史狀態信息,用我之前在其他博客裏看到的一句話說就是,訪問一個網站需要反覆進行登錄操作。這個時候,我們會覺得,不對呀我登錄的時候已經記住了密碼,完全就不需要自己輸入,這些信息其實是通過Cookie實現的。可以通過HTTP報文,去設置Cookie號,服務器端會記錄下ID,以及對應的歷史信息。
    圖片截取自大連理工大學夏峯老師課件
  • 堅持/非堅持的HTTP
    我們已經提到過HTTP是基於TCP的協議,而TCP又是面向連接的,所以當我們要使用HTTP之前需要先建立TCP連接,而我們經常會碰到需要從服務器下載多個對象或文件的情況,而堅持與非堅持的區別就是:非堅持的HTTP,在下載完一個對象或文件後就關閉了連接,如果還需要繼續下載其他的資源,則需要重新建立連接。那麼,顯而易見,堅持的HTTP則是指連接建立好之後,我們可以一次性下載多個對象或文件,再將連接關閉。非堅持的HTTP顯然會浪費時間。

HTTPS(來源於百度百科)

由於HTTP存在一些安全缺陷,極易遭受攻擊,用戶的信息安全得不到很好的保障,所以爲了提高傳輸的安全性人們對HTTP做出了改善,出現了HTTPS。
HTTPS爲超文本傳輸安全協議,他其實就是在HTTP的基礎下,加入SSL層。換句話說就是,在HTTP的基礎上通過傳輸加密和身份認證加強傳輸過程的安全性。但是HTTP不能保證絕對的安全性,只是在某一些方面加強了安全性。

  • 數據保密性
    保證數據在傳輸的過程中,不會被第三方查看,好比我們寄快遞,但是快遞員不能查看我們的包裹內容是一樣的
  • 數據完整性
    保證我們能夠及時發現數據在傳輸的過程中是否被篡改,好比我們在接收快遞時能夠及時發現包裹內容是否被掉包,發現後可立即拒收
  • 身份校驗安全性
    保證數據沒有發送給錯誤的接收方,好比我們發快遞,需要確保包裹沒有發送錯地方
    對於HTTPS具體如何加密,後續如果需要再更新