1. 程式人生 > >HTTP RFC(自學心得)

HTTP RFC(自學心得)

註釋 檢查 應用程序級別 瀏覽器 文本 表示 語義 聲明 mime

一、簡介


1)目的

HTTP(超文本傳輸協議)是應用程序級別分布式協作超媒體信息協議。

HTTP的第一個版本,稱為HTTP / 0.9,是一種簡單的原始數據傳輸協議。

通過互聯網定義的HTTP / 1.0 得到了改進協議允許消息采用類似MIME的格式消息,包含有關傳輸數據的元信息請求/響應語義上的修飾符。

但是,HTTP / 1.0可以不考慮等級的影響,代理,緩存,持久連接的需要或虛擬主機。

此外,擴散不完全措施稱自己為“HTTP / 1.0”的應用程序需要一個協議版本更改,以便兩個通信應用程序確認彼此身份信息。該協議被稱為HTTP/1.1,該協議包含了比HTTP/1.0更加嚴格的要求,以確保其功能可靠並能順利實施。

實用性的信息系統需要的功能要多於簡單功能檢索,包括搜索,前段的更新和註釋。HTTP允許一組開放式的方法和標題來指示請求的目的地。由統一資源標識符(URI)提供,作為位置的統一資源定位符(URL)統一資源名稱(URN)來指示目標資源的信息。

HTTP還用作通用協議之間的通信用戶代理和代理/網關到其他Internet系統,包括SMTP ,NNTP ,FTP ,Gopher 支持的那些,和WAIS 協議。通過這種方式,HTTP允許基本的超媒體訪問各種應用程序提供的資源

HTTP通過傳輸協議使得資源在互聯網上能夠安全的,有效的進行傳輸。


2)要求

關鍵詞“必須”,“絕不”,“必須”,“必須”,“不要”,在這個“應該”,“不應該”,“推薦”,“可能”和“可選”文檔將RFC中的描述進行解釋。

如果實現不滿足一個或多個,則實現不符合要求它的協議必須或必需的級別要求實現。

滿足所有MUST或REQUIRED的實現這個級別和協議的所有SHOULD級別要求都是如此要“無條件地遵守”; 一個滿足所有必須的等級要求,但不是所有應該達到的等級要求,稱協議是“有條件的”。


3)術語

連接:在兩個程序之間建立的傳輸層虛擬電路,為了溝通的目的。

信息:HTTP通信的基本單元,由結構化組成的語法匹配的八位字節序列,通過連接傳輸。

請求:HTTP請求消息。

響應:HTTP響應消息。

資源:可以通過URI標識的網絡數據對象或服務。資源可能有多種形式

表示(例如多種語言,數據格式,大小和決議)或以其他方式變化。

實體:作為請求或有效載荷傳輸的信息響應。一個實體由形式的元信息組成實體標題字段和實體主體形式的內容

表示:包含受內容約束的響應的實體宣判,可能存在多個與特定響應狀態相關的表示。

內容談判:可以協商任何響應中的實體表示(包括錯誤回復)。

變種:資源可以包含一個或多個表示在任何給定的瞬間與它相關聯。每一個表示被稱為“變量”。使用術語“變體”並不一定意味著資源受內容的約束談判。

客戶:為發送目的建立連接的程序要求。

用戶代理:發起請求的客戶端。這些通常是瀏覽器,編輯,蜘蛛(網絡遍歷機器人)或其他最終用戶工具。

服務器:一個接受連接的應用程序通過發回響應來提供服務請求。任何給定的程序可能能夠同時成為客戶和服務器; 我們使用這些術語僅指程序為a執行的角色特殊的連接,而不是程序的功能一般來說。同樣,任何服務器都可以充當源服務器,代理,網關或隧道,基於性質的切換行為每個請求。

原始服務器:要在其上創建或將要創建給定資源的服務器。

代理:作為服務器和客戶端的中間程序為了代表其他客戶提出請求。請求在內部提供服務或通過傳遞它們可能的翻譯,到其他服務器。代理必須實現本規範的客戶端和服務器要求。一個“透明代理”是不修改請求的代理或超出代理身份驗證所需的響應鑒定。“非透明代理”是修改的代理請求或響應,以提供一些額外的服務用戶代理,例如組註釋服務,媒體類型轉換,協議減少或匿名過濾。除了其中顯式透明或不透明行為聲明,HTTP代理要求適用於這兩種類型代理。

網關:作為其他服務器的中介的服務器。與代理不同,網關接收請求,就好像它是請求資源的原始服務器; 請求客戶可能沒有意識到它正在與網關通信。

隧道:中間程序,充當盲目接力兩個連接。一旦激活,隧道不被視為一方到HTTP通信,雖然隧道可能已經由HTTP請求啟動。兩者都不存在隧道中繼連接的末端關閉。

高速緩存:程序的響應消息和子系統的本地存儲它控制其郵件存儲,檢索和刪除。一個緩存存儲可緩存的響應以減少響應未來的時間和網絡帶寬消耗,相當於要求。任何客戶端或服務器都可以包括緩存,但是緩存不能被充當隧道的服務器使用。

緩存:如果允許緩存存儲副本,則響應可緩存用於回答後續請求的響應消息。資源是可緩存的,也可以是否緩存可以使用緩存的附加約束復制特定請求。

第一手:如果直接和沒有響應是第一手的來自原始服務器的不必要的延遲,可能是通過一個或多個代理。如果其有效性正確,則回復也是第一手的直接用原始服務器檢查。明確的到期時間源服務器打算實體應該的時間沒有進一步驗證,不再由緩存返回。

啟發式到期時間:沒有明確到期時由緩存分配的到期時間時間可用。

年齡:回復的年齡是自發送之後的時間,或已成功驗證原始服務器。

新鮮的一生:生成響應與其響應之間的時間長度到期時間。

新鮮:如果它的年齡尚未超過其新鮮度,那麽它的反應是新的一生。

陳舊:如果其年齡已超過其新鮮度,則回復是陳舊的。

語義透明:緩存以“語義透明”方式運行,具有尊重特定的反應,當它的使用不影響請求客戶端和原始服務器,但改進除外性能。當緩存在語義上是透明的時,客戶端收到完全相同的響應(逐跳頭除外)如果直接處理了它的請求,它會收到由原始服務器。

驗證器:協議元素(例如,實體標簽或最後修改時間)用於確定緩存條目是否等效實體的副本。

上遊/下遊:上遊和下遊描述了消息的流程:全部消息從上遊流向下遊。

入站出站:入站和出站是指請求和響應路徑消息:“入站”表示“朝向原始服務器”,和“出站”是指“向用戶代理旅行”


4)整體運作方式

HTTP協議是請求/響應協議。客戶端發送一個以請求方法,URI和形式請求到服務器協議版本,後跟包含請求的類似MIME的消息修飾符,客戶信息和可能的身體內容與服務器的連接。服務器響應狀態行,包括消息的協議版本和成功或錯誤代碼,後跟包含服務器信息,實體的類似MIME的消息元信息,以及可能的實體 - 身體內容。

1.

大部分HTTP通信由用戶代理並由一下內容組成資源請求。


請求鏈------>UA------ v------O.<------響應鏈

v(單個連接) UA(用戶代理)O(源服務器)


2.

當一個或多個中間人出現時,會出現更復雜的情況存在於請求/響應鏈中。有三種常見的中介形式:代理,網關和隧道。代理是一個轉發代理,以絕對形式接收URI請求,重寫全部或部分消息,並轉發重新格式化的消息對URI標識的服務器的請求。網關是一個接收代理,作為一些其他服務器之上的層,如果必要的,將請求轉換為底層服務器協議。隧道充當兩個連接之間的中繼點不改變消息; 當使用隧道時溝通需要通過中介


請求鏈------>UA------v------A------v------B------v------C------v------O.<------響應鏈

上圖顯示了三個中介(A,B和C)之間用戶代理和原始服務器。請求或響應消息旅行整個連鎖店將通過四個獨立的連接。


3.

任何不作為隧道的通信方可以使用內部緩存來處理請求。緩存的效果是,如果其中之一,請求/響應鏈縮短鏈中的參與者有適用於此的緩存響應請求。


請求鏈------>UA------v------A------ v------B - - - - - - C - - - - - - O .<------響應鏈

並非所有響應都可以緩存,有些請求可能會包含對緩存行為有特殊要求的修飾符。


實際上,存在各種各樣的體系結構和配置目前正在試驗或部署的緩存和代理通過萬維網。這些系統包括國家層級用於保存跨洋帶寬的代理緩存,系統廣播或多播緩存條目,分發的組織通過CD-ROM等緩存數據的子集。使用HTTP系統在高帶寬鏈路上的企業內部網中,以及通過具有低功率無線電鏈路和間歇連接的PDA。該HTTP / 1.1的目標是支持各種各樣的配置已經部署,同時引入符合的協議結構構建需要高的Web應用程序的人的需求可靠性,並且失敗,至少可靠的指示失敗。

HTTP通信通常通過TCP / IP連接進行。該默認端口是TCP 80,但可以使用其他端口。這樣做不排除在任何其他協議之上實現HTTP在互聯網上或其他網絡上。HTTP只假設可靠運輸; 可以使用任何提供此類保證的協議;HTTP / 1.1請求和響應結構的映射到有關議定書的運輸數據單位不在範圍內本規範。

參考:

https://tools.ietf.org/html/rfc2616

HTTP RFC(自學心得)