計算機網絡應用層--cookie和web緩存

計算機網絡應用層–cookie和web緩存

cookie:用戶與服務器的交互

由於http服務器是無狀態的,然而一個Web站點通常希望能夠識別用戶,可以用於將內容與用戶身份聯繫起來,因爲,HTTP使用了cookie,允許站點對用戶進行跟蹤。

cookie的組件:

  • 在HTTP響應報文中的一個cookie首部行
  • 在HTTP請求報文中的一個cookie首部行
  • 在用戶端系統中保留一個cookie文件,由用戶瀏覽器管理
  • 在Web站的一個後端數據庫,用於存儲映射關係

cookie的工作原理:
在這裏插入圖片描述
(圖片來源:(計算機網絡:自頂向下方法)

  • 當第一次訪問該Web站點時,發送的是普通的http報文,該報文到達服務器時,Web站點會產生一個唯一標識碼,然後將其與用戶一些信息的對應關係存儲在數據庫中。之後Web服務器發送響應報文,響應報文中包含cookie首部:Set-cookie 字段以及 標識碼
  • 當瀏覽器收到該帶有Set-cookie字段的HTTP響應報文時,會在瀏覽器的管理cookie的文件中添加一行,包含服務器的主機名和Set-cookie中的識別碼
  • 之後又一次訪問該Web站點時,每請求一個Web頁面,瀏覽器都會從自己的cookie文件中獲取該主機的對應識別碼,並放到HTTP請求報文中包含識別碼的cookie首部行中
  • Web服務器收到該HTTP請求報文時,發現cookie首部行中的識別碼,會在自己的數據庫中查找其對應的數據,基於此,瀏覽器可以知道該用戶的一些信息(包括什麼時間訪問了哪些頁面之類的)
  • cookie通常具有保質期,即如果較長時間沒有使用,瀏覽器和服務器都可能會消除該cookie的信息,之後就需要重新建立新的cookie

cookie的作用與擔憂:

cookie在無狀態的HTTP上建立了一個用戶會話層,用於Web站點標識一個用戶,可以提供更好的用戶體驗。但由於cookie對用戶信息的收集,在一定程度上也是對用戶隱私的侵害。攻擊者利用cookie捕獲或發送惡意cookie等攻擊手段造成用戶的信息泄漏等。

Web緩存:代理服務器

一個優秀的Web緩存策略可以縮短網頁請求資源的距離,減少延遲,並且由於緩存文件可以重複利用,還可以減少帶寬,降低網絡負荷。

Web緩存器,是代表初始的Web服務器來滿足HTTP請求的網絡實體。Web緩存器有自己的磁盤存儲空間,並在存儲空間中保存最近請求過的對象的副本。

在這裏插入圖片描述

Web緩存原理:

  • 當瀏覽器請求Web對象時,瀏覽器首先會與Web緩存器建立TCP連接,並向Web緩存器中的對象發送對應的HTPP請求
  • Web緩存器收到請求後進行檢查,查詢本地是否存儲了該對象的副本,如果有對應的對象副本,則直接向瀏覽器發送包含該對象的HTTP響應報文
  • 如果Web緩存器中沒有該對象,則其將於初始服務器建立TCP連接,Web緩存器向初始服務器發送該對象的HTTP請求,收到該請求後初始服務器向Web緩存器發送具有該對象的HTTP響應報文
  • Web緩存器收到該響應後,在本地存儲一份副本,然後向客戶的瀏覽器用HTTP響應報文發送該副本

因爲用戶是大量的,因此如果有多個用戶請求同一Web對象時,只在第一次需要向初始服務器申請,之後的直接由Web緩存器響應,將大大提升速度。

Web緩存器既是服務器又是客戶,接受瀏覽器請求併發迴響應,此時是服務器;當向初始服務器發送請求並接受響應時,此時是客戶。

Web緩存的優點:

  • Web緩存器可以大大減少用戶對客戶請求的響應時間,網頁打開速度將增快,用戶體驗有所提升
  • Web緩存器可以大大減少一個機構的接入鏈路到因特網的通信量
  • Web緩存器從整體上大大減低了因特網上的Web流量,因此改善了所有應用的性能

條件GET方法:

儘管Web緩存非常優秀,但引入了一個問題:保存在Web服務器中的對象可能是陳舊的,也就是說保存在服務器中的對象可能已經被修改了。

HTTP協議的條件GET方法允許緩存器證實它的對象是最新的。

條件GET方法原理:

  • 請求報文中包含"if-Modified-Since:"首部行,即該請求報文就是一個條件GET請求報文
  • 緩存器將對象存儲到本地時將保留最後修改時間
  • 當用戶請求該對象時,緩存器向服務器發送條件GET請求報文,如果沒有修改則返回一個“304 Not Modified”響應報文(注意只返回響應,不包含對象)
  • 如果修改的話則返回對應的狀態碼並附帶最新的對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章