WWW的核心 HTTP協議

2021-06-26 13:21:19 字數 4124 閱讀 4052

www的核心——http協議

眾所周知,internet的基本協議是tcp/ip協議,目前廣泛採用的ftp、archie gopher等是建立在tcp/ip協議之上的應用層協議,不同的協議對應著不同的應用。

www伺服器使用的主要協議是http協議,即超文體傳輸協議。由於http協議支援的服務不限於www,還可以是其它服務,因而http協議允許使用者在統一的介面下,採用不同的協議訪問不同的服務,如ftp、archie、smtp、nntp等。另外,http協議還可用於名字伺服器和分布式物件管理。

2.1 http協議簡介

http是乙個屬於應用層的物件導向的協議,由於其簡捷、快速的方式,適用於分布式超**資訊系統。它於2023年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件。目前在www中使用的是http/1.0的第六版,http/1.1的規範化工作正在進行之中,而且http-ng(next generation of http)的建議已經提出。

http協議的主要特點可概括如下:

1.支援客戶/伺服器模式。

由於http協議簡單,使得http伺服器的程式規模小,因而通訊速度很快。

3.靈活:http允許傳輸任意型別的資料物件。正在傳輸的型別由content-type加以標記。

4.無連線:無連線的含義是限制每次連線只處理乙個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。

5.無狀態:http協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。

2.2 http協議的幾個重要概念

1.連線(connection):乙個傳輸層的實際環流,它是建立在兩個相互通訊的應用程式之間。

2.訊息(message):http通訊的基本單位,包括乙個結構化的八元組序列並通過連線傳輸。

3.請求(request):乙個從客戶端到伺服器的請求資訊包括應用於資源的方法、資源的識別符號和協議的版本號

4.響應(response):乙個從伺服器返回的資訊包括http協議的版本號、請求的狀態(例如「成功」或「沒找到」)和文件的mime型別。

5.資源(resource):由uri標識的網路資料物件或服務。

6.實體(entity):資料資源或來自服務資源的回映的一種特殊表示方法,它可能被包圍在乙個請求或響應資訊中。乙個實體包括實體頭資訊和實體的本身內容。

7.客戶機(client):乙個為傳送請求目的而建立連線的應用程式。

9.伺服器(server):乙個接受連線並對請求返回資訊的應用程式。

10.源伺服器(origin server):是乙個給定資源可以在其上駐留或被建立的伺服器。

11.**(proxy):乙個中間程式,它可以充當乙個伺服器,也可以充當乙個客戶機,為其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的伺服器中。乙個**在傳送請求資訊之前,必須解釋並且如果可能重寫它。

**經常作為通過防火牆的客戶機端的門戶,**還可以作為乙個幫助應用來通過協議處理沒有被使用者**完成的請求。

12.閘道器(gateway):乙個作為其它伺服器中間媒介的伺服器。與**不同的是,閘道器接受請求就好象對被請求的資源來說它就是源伺服器;發出請求的客戶機並沒有意識到它在同閘道器打交道。

閘道器經常作為通過防火牆的伺服器端的門戶,閘道器還可以作為乙個協議翻譯器以便訪問那些儲存在非http系統中的資源。

13.通道(tunnel):是作為兩個連線中繼的中介程式。一旦啟用,通道便被認為不屬於http通訊,儘管通道可能是被乙個http請求初始化的。當被中繼的連線兩端關閉時,通道便消失。當乙個門戶(portal)必須存在或中介(intermediary)不能解釋中繼的通訊時通道被經常使用。

14.快取(cache):反應資訊的局域儲存。

2.3 http協議的運作方式

http協議是基於請求/響應正規化的。乙個客戶機與伺服器建立連線後,傳送乙個請求給伺服器,請求方式的格式為,統一資源識別符號、協議版本號,後邊是mime資訊包括請求修飾符、客戶機資訊和可能的內容。伺服器接到請求後,給予相應的響應資訊,其格式為乙個狀態行包括資訊的協議版本號、乙個成功或錯誤的**,後邊是mime資訊包括伺服器資訊、實體資訊和可能的內容。

許多http通訊是由乙個使用者**初始化的並且包括乙個申請在源伺服器上資源的請求。最簡單的情況可能是在使用者**(ua)和源伺服器(o)之間通過乙個單獨的連線來完成(見圖2-1)。

圖2-1

上面的圖2-2表明了在使用者**(ua)和源伺服器(o)之間有三個中介(a,b和c)。乙個通過整個鏈的請求或響應訊息必須經過四個連線段。這個區別是重要的,因為一些http通訊選擇可能應用於最近的連線、沒有通道的鄰居,應用於鏈的終點或應用於沿鏈的所有連線。儘管圖2-2是線性的,每個參與者都可能從事多重的、併發的通訊。例如,b可能從許多客戶機接收請求而不通過a,並且/或者不通過c把請求送到a,在同時它還可能處理a的請求。

任何針對不作為通道的匯聚可能為處理請求啟用乙個內部快取。快取的效果是請求/響應鏈被縮短,條件是沿鏈的參與者之一具有乙個快取的響應作用於那個請求。下圖說明結果鏈,其條件是針對乙個未被ua或a加快取的請求,b有乙個經過c來自o的乙個前期響應的快取拷貝。

圖2-3

在internet上,http通訊通常發生在tcp/ip連線之上。預設埠是tcp 80,但其它的埠也是可用的。但這並不預示著http協議在internet或其它網路的其它協議之上才能完成。http只預示著乙個可靠的傳輸。

以上簡要介紹了http協議的巨集觀運作方式,下面介紹一下http協議的內部操作過程。

首先,簡單介紹基於http協議的客戶/伺服器模式的資訊交換過程,如圖2-4所示,它分四個過程,建立連線、傳送請求資訊、傳送響應資訊、關閉連線。

圖2-4

在www中,「客戶」與「伺服器」是乙個相對的概念,只存在於乙個特定的連線期間,即在某個連線中的客戶在另乙個連線中可能作為伺服器。www伺服器執行時,一直在tcp80埠(www的預設埠)監聽,等待連線的出現。

下面,討論http協議下客戶/伺服器模式中資訊交換的實現。   1.建立連線   連線的建立是通過申請套接字(socket)實現的。客戶開啟乙個套接字並把它約束在乙個埠上,如果成功,就相當於建立了乙個虛擬檔案。以後就可以在該虛擬檔案上寫資料並通過網路向外傳送。

2.傳送請求

開啟乙個連線後,客戶機把請求訊息送到伺服器的停留埠上,完成提出請求動作。

http/1.0  請求訊息的格式為:

請求訊息=請求行(通用資訊|請求頭|實體頭) crlf[實體內容]

請求 行=方法 請求url http版本號 crlf

方  法=get|head|post|擴充套件方法

u r  l=協議名稱+宿主名+目錄與檔名

請求行中的方法描述指定資源中應該執行的動作,常用的方法有get、head和post。不同的請求物件對應get的結果是不同的,對應關係如下:

物件      get的結果

檔案      檔案的內容

程式      該程式的執行結果

資料庫查詢   查詢結果

head——要求伺服器查詢某物件的元資訊,而不是物件本身。

post——從客戶機向伺服器傳送資料,在要求伺服器和cgi做進一步處理時會用到post方法。post主要用於傳送html文字中form的內容,讓cgi程式處理。

乙個請求的例子為:

頭資訊又稱為元資訊,即資訊的資訊,利用元資訊可以實現有條件的請求或應答 。

請求頭——告訴伺服器怎樣解釋本次請求,主要包括使用者可以接受的資料型別、壓縮方法和語言等。

實體頭——實體資訊型別、長度、壓縮方法、最後一次修改時間、資料有效期等。

實體——請求或應答物件本身。

3.傳送響應

伺服器在處理完客戶的請求之後,要向客戶機傳送響應訊息。

http/1.0的響應訊息格式如下:

響應訊息=狀態行(通用資訊頭|響應頭|實體頭) crlf 〔實體內容〕

狀 態 行=http版本號 狀態碼 原因敘述

狀態碼表示響應型別

1××  保留

2××  表示請求成功地接收

3××  為完成請求客戶需進一步細化請求

4××  客戶錯誤

5××  伺服器錯誤

響應頭的資訊包括:服務程式名,通知客戶請求的url需要認證,請求的資源何時能使用。

4.關閉連線

客戶和伺服器雙方都可以通過關閉套接字來結束tcp/ip對話

WWW的核心 HTTP協議

www的核心 http協議 www的核心 http協議 頭資訊又稱為元資訊,即資訊的資訊,利用元資訊可以實現有條件的請求或應答 請求頭 告訴伺服器怎樣解釋本次請求,主要包括使用者可以接受的資料型別 壓縮方法和語言等。實體頭 實體資訊型別 長度 壓縮方法 最後一次修改時間 資料有效期等。實體 請求或應...

WWW的核心 HTTP協議

頭資訊又稱為元資訊,即資訊的資訊,利用元資訊可以實現有條件的請求或應答 請求頭 告訴伺服器怎樣解釋本次請求,主要包括使用者可以接受的資料型別 壓縮方法和語言等。實體頭 實體資訊型別 長度 壓縮方法 最後一次修改時間 資料有效期等。實體 請求或應答物件本身。3.傳送響應 伺服器在處理完客戶的請求之後,...

http和www含義講解

我們上網的時候,會發現有些 是以 www 開頭的,而有些卻是以 http 開頭的 好多人都不明白。我來說一下,不喜勿噴!其實www和http 完全是兩回事啦,www是二級網域名稱,而http則是一種傳輸協議,實際上當我們在瀏覽器內輸入www.baidu.com的時候,瀏覽器會自動幫你填充http 不...