HTTP之1 HTTP協議(HTTP協議概述、HTTP消息、緩存控制相關頭部、Cookie相關頭部)

1、HTTP 協議概述web


HTTP協議歷史與標準編程

  - HTTP/1.0:  1996年制定,支持多種請求方法,支持多媒體對象,獲得普遍應用緩存

  - HTTP/1.0+: 支持持久鏈接、虛擬主機、代理鏈接等新特性,成爲非官方的事實標準性能優化

  - HTTP/1.1:  1999年定製,校訂HTTP中的設計缺陷,性能優化,刪除一些很差的特性服務器

  - HTTP-NG(或者HTTP/2.0):關注HTTP協議的性能優化以及更強大的服務邏輯遠程執行框架,研究工做仍在進行中框架


請求與響應流程編程語言

wKiom1cDUgzSbpH_AAGrlg-08E0303.png

  - Message,消息/報文,是在HTTP客戶端與服務器間傳遞的數據塊ide

  - HTTP協議規定,消息必須符合特定的格式才能被彼此理解。性能

  - Request Message: 客戶端向服務器發送的請求消息優化

  - Response Message: 服務器端根據客戶端的請求消息,返回給客戶端的響應消息

wKiom1cDU4zwTFG6AAEWuK807ng709.png


2、HTTP消息


HTTP消息結構概述

  - HTTP 消息是簡單的格式化數據塊

  - 每一個消息都由三部分組成

      - Start Line: 消息起始行,必需,消息基本描述信息

      - Header: 消息頭部/報頭,可能有0-N個,消息詳細屬性

      - Body: 消息主體,可選,包含數據的主體

  - 起始行和消息頭是純ASCII字符,每行以CRLF結束

  - 消息主體是一個可選的數據塊,其中的數據能夠爲空,或者是字符數據(如HTML、CSS、JavaScript等字符數據),或者二進制數據(如圖片、音頻、視頻等字節數據)


請求消息結構

  - 客戶端發起的一個請求消息應符合以下格式要求

wKioL1cDV4-A3biGAABckpyiHoQ755.png

  - 請求行:請求方法 空格 請求URL 空格 協議版本CRLF

  - 請求頭部:可能包含0-N個請求頭(名/值對)CRLF

  - 一個空白行CRLF

  - 請求主體:可選,提交給服務器的請求數據


請求行與請求方法

  - 請求消息請求服務器對資源進行一些操做

  - 請求消息的起始行稱爲"請求行",包含以下三部分:

wKiom1cDV1XBLcTIAAAxwIS78_4285.png

  - 請求方法包括以下幾種

wKiom1cDVzzSq***AAKC_JJGwAA332.png


請求頭

  - 請求頭可用於描述請求自己、客戶端、請求體的特徵

  - 請求頭能夠分爲以下四種:

      - 通用頭部:在請求消息或響應消息中均可以使用

wKioL1cDWQzjgilZAAA4oq5OJoY753.png

      - 請求專用頭部:只能出如今請求消息中

wKiom1cDWQzBI4E9AABxBHNo4nw882.png

      - 實體頭部:描述消息主體特徵

wKioL1cDWcrwJG20AABe1EeoQbg393.png      - 擴展頭部: 自定義的頭部


請求主體

  - 請求主體中保存着客戶端提交給服務器,須要服務器加以處理(POST)或者保存(PUT)的數據

  - 請求主體中可能包含字符數據,也可能包含字節數據


響應消息結構

  - 服務器發返回給客戶端的一個響應消息應符合以下格式要求:

wKioL1cDWonw10S7AABcfyWI9e8845.png

  - 響應行:協議版本 空格 狀態碼 空格 緣由短語CRLF

  - 響應頭部:可能包含0-N個響應頭CRLF

  - 一個空白行CRLF

  - 響應主體: 可選,返回給客戶端的響應數據,多是字符數據,也多是字節數據


響應狀態行與響應狀態碼

  - 響應消息是服務器返回給客戶端的數據塊

  - 響應消息的起始行稱爲"響應行",包含以下三部分:

wKiom1cDWu2D2-HrAAAvTXMdxwM643.png

wKioL1cDW7uDDqe5AAKuNLI_M6k606.pngwKiom1cDW5vT1eiCAAJIjQRM3hg456.png



響應頭

  - 響應頭可用於描述響應自己、服務器、響應主體的特徵。

  - 響應頭部分爲以下四種:

      - 通用頭部: 在請求消息或響應消息中均可以使用

wKioL1cDXQvhMfyqAAA5LzggnoU278.png

      - 響應專用頭部: 只能出如今響應消息中

wKiom1cDXHexOiwIAAAYQxT1Zf0991.png

      - 實體頭部:描述消息主體特徵

wKiom1cDXIvjFZciAABvmhcynok405.png      - 擴展頭部: 自定義的頭部



響應主體

  - 響應主體中包含着服務器返回給客戶端的數據主體(GET/POST)

  - 根據請求URL的不一樣,響應主體中多是字符數據(如HTML、CSS、JavaScript、JSON等字符),或者字節數據(圖片、音頻、視頻等各類字節數據)



內容類型與經常使用內容類型

  - 實體頭部中的Content-Type頭可用於指定消息主體中數據的內容類型(MIME類型)

  - 常見的MIME類型:

wKiom1cDXkHSrvQGAAE9lE_fMXY391.png



3、緩存控制相關頭部


緩存工做原理

  - 客戶端能夠自動保存已經訪問過的文檔的副本,這些副本就稱爲"文檔緩存"

  - 當客戶端再次發送針對同一個URL的請求時,若是本地有"已緩存的副本",就能夠直接從本地存儲設備而不是遠程服務器提取該文檔了

  - 數據緩存有下列優勢:

      - 減小了冗餘的數據傳輸,節省客戶端流量費用

      - 緩解服務器貸款瓶頸的問題,服務器能夠節省出更多的帶寬

      - 下降了對服務器的資源消耗和運行要求

      - 下降了因爲遠距離兒形成的加載延時 

  - 緩存可否命中的完整流程:

wKioL1cDYNLg4QtXAAE_KdYZi1Q294.png


Cache-Control頭

  - Cache-Control:max-age頭部表示從服務器將文檔傳來之時起,能夠認爲此文檔處於新鮮狀態的秒數

wKiom1cDYe7TG1b3AAAs0ICZJsU748.png

  - 服務器能夠請求客戶端不要緩存文檔,或者將最大使用期設置爲零,從而在每次訪問的時候都進行刷新

wKiom1cDYgDT9TVDAAAmrzE3Dow886.png

  - 客戶端在事先沒有跟原始服務器進行再驗證的狀況下,不能提供對應數據的陳舊副本。但緩存仍然能夠提供新鮮的副本

wKioL1cDYrzhXPy3AAApETUlZNE407.png


Expires頭

  - Expires頭部指定緩存的過時時間。HTTP設計者認爲,因爲不少服務器的時鐘都不一樣步,因此推薦最好用剩餘秒數來代替過時的絕對時間

wKiom1cDY2fTJ6VpAAA3x_skF3A173.png

  - 若但願客戶端不要緩存資源,能夠將過時時間設置爲一個過去的時間,如:

 wKioL1cDZbrB0KzpAACtFEVqtEY173.png


控制HTTP頭部方法

  - 能夠修改Web服務器的配置文件,設置默認響應頭部:

wKiom1cDZeXyOr8YAAEAXf-OZ3M898.png  - 還能夠配置每一個HTML文件的HTTP-EQUIV標籤控制緩存:

wKioL1cDZtyw4QYyAABRhSkFjsA699.png  - 除了上述兩種方法,還能夠在服務器端執行編程語言(如JSP、PHP、ASPX等)

wKiom1cDZ2aw7UWHAABYyjjPDGY422.pngwKioL1cDaCKQbLBFAABfRWW3yUU413.pngwKioL1cDaDSQJkVIAABjiCIerFc366.pngwKioL1cDaEbjskAyAACrXn8OeAw943.png


4、Cookie相關頭部


Cookie工做原理

wKiom1cDZ7nR6nX7AAICDKdP8xs270.png


總結:本章內容主要介紹了 HTTP協議(HTTP協議概述、HTTP消息、緩存控制相關頭部、Cookie相關頭部)

相關文章
相關標籤/搜索