HTTP

HyperText Transfer Protocol 超文本傳輸協議   應用層通訊協議瀏覽器

採用請求/響應模型,一個客戶端和服務器端請求和應答的標準(TCP,默認端口80)。HTTPS承載於TLS或SSL協議層之上。
緩存

頭域

HTTP的頭域包括通用頭請求頭響應頭實體頭四個部分服務器

客戶端向服務器發送一個請求,請求頭包含請求的方法、URL、協議版本、以及包含請求修飾符、客戶信息和內容的相似於MIME的消息結構。優化

請求報文格式:請求行 - 通用信息頭 - 請求頭 - 實體頭 - 報文主體編碼

服務器以一個狀態行做爲響應,響應的內容包括消息協議的版本,成功或者錯誤編碼加上包含服務器信息、實體元信息以及可能的實體內容。url

應答報文格式: 狀態行 - 通用信息頭 - 響應頭 - 實體頭 - 報文主體spa

通用頭

包含請求和響應消息都支持的頭域,通用頭域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。.net

  1. Cache-Control頭域
    指定請求和響應遵循的緩存機制。在請求消息或響應消息中設置Cache-Control並不會修改另外一個消息處理過程當中的緩存處理過程。
    請求時的緩存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached;
    響應消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。
    public 響應可被任何緩存區緩存
    private 對於單個用戶的整個或部分響應消息,不能被共享緩存處理。這容許服務器僅僅描述當用戶的部分響應消息,此響應消息對於其餘用戶的請求無效
    no-cache 請求或響應消息不能緩存
    no-store 在請求消息中發送將使得請求和響應消息都不使用緩存。
    max-age 指示客戶機能夠接收生存期不大於指定時間(以秒爲單位)的響應
    min-fresh 指示客戶機能夠接收響應時間小於當前時間加上指定時間的響應
    max-stale 客戶機能夠接收超出超時期間的響應消息。若是指定max-stale的值,那麼客戶機能夠接收超出超時期指定值以內的響應消息。
  2. Date頭域
    表示消息發送的時間(世界標準時),時間的描述格式由rfc822定義。 
    eg:  Date:Mon,31Dec200104:25:57GMT。orm

  3. Pragma頭域
    用來包含實現特定的指令,最經常使用的是Pragma:no-cache。在HTTP/1.1協議中,它的含義和Cache-Control:no-cache相同。blog

請求頭

容許客戶端向服務器傳遞關於請求或者關於客戶機的附加信息。包含: Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If-Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、Proxy-Authorization、Range、Referer、User-Agent。

  1. Host頭域: 指定請求資源的Intenet主機和端口號,必須表示請求url的原始服務器或網關的位置
  2. Referer頭域: 容許客戶端指定請求uri的源資源地址,這能夠容許服務器生成回退鏈表,可用來登錄、優化cache等
  3. Range頭域: 指定第一個字節的位置和最後一個字節的位置。
     格式: Range:(unit=first byte pos)-[last byte pos] (在斷點下載時 Range 與 實體頭的Content-Range 合用)
  4. User-Agent頭域: 發出請求的用戶信息。(瀏覽器信息等)

響應頭

容許服務器傳遞不能放在狀態行的附加信息。包含Age、Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW-Authenticate

  1. Location響應頭: 用於重定向接收者到一個新URI地址。
  2. Server響應頭: 包含處理請求的原始服務器的軟件信息

實體頭

請求消息和響應消息均可以包含實體信息,實體信息通常由實體頭域和實體組成。實體頭域包含關於實體的原信息,實體頭包括Allow、Content-Base、Content-Encoding、Content-Language、Content-Length(實際傳送的字節數)、Content-Location、Content-MD五、Content-Range(傳送的範圍,在斷點續傳中與請求頭中的Range合用)、Content-Type、Etag、Expires、Last-Modified、extension-header。
(實體能夠是一個通過編碼的字節流,它的編碼方式由Content-Encoding或Content-Type定義,它的長度由Content-Length或Content-Range定義)

  1. Content-Type實體頭: 用於向接收方指示實體的介質類型,指定HEAD方法送到接收方的實體介質類型,或GET方法發送的請求介質類型
  2. Content-Range實體頭:  指定整個實體中的一部分的插入位置,也指示了整個實體的長度; 在服務器向客戶返回一個部分響應,它必須描述響應覆蓋的範圍和整個實體長度。
    格式:Content-Range: bytes (unit first byte pos) - [last byte pos]/[entity legth] 
    eg:  傳送頭500個字節次字段的形式: Content-Range: bytes 0-499/1234;
  3. Last-modified實體頭: 指定服務器上保存內容的最後修訂時間

 

 

引貼: http斷點續傳原理:http頭 Range、Content-Range

相關文章
相關標籤/搜索