新夢想幹貨分享——傳說中的HTTP協議(二)

各位親,好久不見,長肉肉了沒有,學習了沒有,說好的新夢想乾貨分享今天終於弄出來了!!!

上次我們說過了HTTP協議的歷史,看到了HTTP協議的演進過程。我們今天重點說的是HTTP協議的1.1版本。

HTTP協議用於客戶端和服務端之間的通信。HTTP協議能夠非常明確的區分哪端是客戶端,哪端是服務端。

那什麼是客戶端,什麼是服務端呢?兩臺機器之間進行通信,請求訪問文本、圖片或視頻等資源的是客戶端。提供文本或者圖片等資源的就是服務端。HTTP協議規定通信一定是從客戶端開始的,客戶端發出請求信息,服務端響應該請求並返回響.

 

HTTP協議的特點:

特點一:簡單快速

使用HTTP協議時,客戶向服務器請求服務,只需傳送請求方法和路徑。每種方法規定了客戶與服務器聯繫的類型不同。因爲它比較簡單,所以速度就比較快啦!

新夢想幹貨分享

 

HTTP請求的方式有很多:

新夢想幹貨分享

 

特點二:靈活

現在主流的HTTP1.1版本可以允許傳輸的數據類型有很多種,數據類型由請求頭中的content-type字段進行標記。這一點在上一篇文章中已經提到過了,就不再重複了。

 

新夢想幹貨分享

 

特點三:無連接

所謂無連接的意思是每次連接只處理一個請求,服務器處理完一個請求,在收到客戶端的應答後就會斷開連接。一個頁面有文字還有很多的大小圖片和其它的內容。腦補一個畫面:當你刷朋友圈的時間,朋友們發那麼多的九宮格圖片,每處理一個圖片,就要重新連接一次服務器,處理一次連接如果花0.5S。如此,你只怕會放棄看朋友圈的習慣了。

 

特點四:無狀態

HTTP協議自身不保留之前所有通信的請求和響向的信息,這麼做的目的是爲了快速的處理大量的事務。但是隨着web技術和業務的發展,不保留狀態是非常麻煩的事 情。比如:你打開淘寶進行購物的時候,登陸完後。當你點擊進入其它付款頁時, http協議並沒有保留你的登陸狀態,又要求你重新登陸。如此重複操作。就會讓 用戶使用web系統時感到腦袋痛了。爲了解決這個問題,引入了Cookie技術,這樣就可以管理狀態了。

 

新夢想幹貨分享

 

Cookie機制

cookie??餅乾??纔剛過完年,不要儘想着喫。Cookie是在 HTTP 協議下,服務器或腳本可以維護客戶工作站上信息的一種方式。Cookie 是由 Web 服務器保存在用戶瀏覽器(客戶端)上的小文本文件,它可以包含有關用戶的信息。

Cookie 技術通過在請求和響應報文中寫入 Cookie 信息來控制客戶端的狀態。Cookie 會根據從服務器端發送的響應報文內的一個叫做 Set-Cookie 的首部字段信息, 通知客戶端保存 Cookie。

 

新夢想幹貨分享

 

上圖表示抓取的是第一次訪問網站的請求頭部和響應頭的內容,很明顯示在請求頭中沒有cookie信息,而在響應頭中則出現了set-cookie字段。

當下次客戶端再往該服務器發送請求時, 客戶端會自動在請求報文中加入 Cookie 值後發送出去。服務器端發現客戶端發送過來的 Cookie 後, 會去檢查究竟是從哪一個客戶端發來的連接請求, 然後對比服務器上的記錄, 最後得到之前的狀態信息。

 

新夢想幹貨分享

 

上圖中進行第二次請求時,則在請求頭中出現了cookie,與第一次響應頭中要求要客戶端保存的字段是一致的。都是一個PHPSESSID的字段值。

 

SESSION機制

不知道有沒有人好奇這個PHPSESSID是什麼東西呢 ?剛剛說過的cookie是用來保存用戶狀態的一種機制,但是cookie是可以在客戶端被人爲禁止使用的。這個時候用戶信息可能沒有辦法被保存下來。那就只能讓服務器端來保存用戶狀態,這就可以使用session機制了,它是一種在服務器端保存狀態的機制。

當用戶使用客戶端發起一個請求時,服務端就會去檢查這個請求中是否包含了session標識---也就是session ID。如果包含了,則說明之前客戶端已經創建過請求,服務端則去文件或者數據庫中把session id檢索出來進行使用,如果檢索不到,則需要創建一個新的session id了。如果客戶端沒有session id,則需要爲這個請求創建一個session id。

Session id 有個很大的特點是沒有規律,不會重複,這樣很難被模仿。Session id一般的時候會被存在cookie中的。如果cookie被禁用了,可以在url地址中被帶回給服務端。

至於session 機制更深的瞭解,大家可以再去找相關資料進行了解哦,或者下次可以寫一篇session相關的文章也行啊。

下次再見哦!!!

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